(&self, store: &'a mut StoreOpaque)
| 487 | } |
| 488 | |
| 489 | fn frame_data<'a>(&self, store: &'a mut StoreOpaque) -> Result<&'a FrameData> { |
| 490 | if !self.is_valid_impl(store) { |
| 491 | crate::error::bail!("Frame handle is no longer valid."); |
| 492 | } |
| 493 | let (cache, registry) = store.frame_data_cache_mut_and_registry(); |
| 494 | let frames = cache.lookup_or_compute(registry, self.cursor.frame()); |
| 495 | // `virtual_frame_idx` counts up for ease of iteration |
| 496 | // behavior, while the frames are stored in outer-to-inner |
| 497 | // (i.e., caller to callee) order, so we need to reverse here. |
| 498 | Ok(&frames[frames.len() - 1 - self.virtual_frame_idx]) |
| 499 | } |
| 500 | |
| 501 | fn raw_instance<'a>(&self, store: &mut StoreOpaque) -> Result<&'a crate::vm::Instance> { |
| 502 | let frame_data = self.frame_data(store)?; |
no test coverage detected