| 29 | } |
| 30 | |
| 31 | pub(crate) fn get_wasm_val(&self, addr: TableAddr) -> Result<WasmValue, Trap> { |
| 32 | let val = self.get(addr)?.addr(); |
| 33 | |
| 34 | Ok(match self.kind.element_type { |
| 35 | WasmType::RefFunc => WasmValue::RefFunc(FuncRef::new(val)), |
| 36 | WasmType::RefExtern => WasmValue::RefExtern(ExternRef::new(val)), |
| 37 | _ => Err(Trap::Other("non-ref table"))?, |
| 38 | }) |
| 39 | } |
| 40 | |
| 41 | pub(crate) fn fill(&mut self, func_addrs: &[u32], addr: usize, len: usize, val: TableElement) -> Result<(), Trap> { |
| 42 | let val = val.map(|addr| self.resolve_func_ref(func_addrs, addr)); |