Returns the table information for the given table index.
(&mut self, index: TableIndex)
| 231 | |
| 232 | /// Returns the table information for the given table index. |
| 233 | pub fn resolve_table_data(&mut self, index: TableIndex) -> TableData { |
| 234 | match self.resolved_tables.entry(index) { |
| 235 | Occupied(entry) => *entry.get(), |
| 236 | Vacant(entry) => { |
| 237 | let (from_offset, base_offset, current_elems_offset) = |
| 238 | match self.translation.module.defined_table_index(index) { |
| 239 | Some(defined) => ( |
| 240 | None, |
| 241 | self.vmoffsets.vmctx_vmtable_definition_base(defined), |
| 242 | self.vmoffsets |
| 243 | .vmctx_vmtable_definition_current_elements(defined), |
| 244 | ), |
| 245 | None => ( |
| 246 | Some(self.vmoffsets.vmctx_vmtable_from(index)), |
| 247 | self.vmoffsets.vmtable_definition_base().into(), |
| 248 | self.vmoffsets.vmtable_definition_current_elements().into(), |
| 249 | ), |
| 250 | }; |
| 251 | |
| 252 | *entry.insert(TableData { |
| 253 | import_from: from_offset, |
| 254 | offset: base_offset, |
| 255 | current_elems_offset, |
| 256 | element_size: OperandSize::from_bytes(self.vmoffsets.ptr.size()), |
| 257 | current_elements_size: OperandSize::from_bytes( |
| 258 | self.vmoffsets.size_of_vmtable_definition_current_elements(), |
| 259 | ), |
| 260 | ty: self.translation.module.tables[index], |
| 261 | }) |
| 262 | } |
| 263 | } |
| 264 | } |
| 265 | |
| 266 | /// Resolve a `HeapData` from a [MemoryIndex]. |
| 267 | pub fn resolve_heap(&mut self, index: MemoryIndex) -> HeapData { |
no test coverage detected