(&mut self, store: &mut StoreOpaque, resource: &Resource)
| 879 | } |
| 880 | |
| 881 | fn resource(&mut self, store: &mut StoreOpaque, resource: &Resource) -> Result<()> { |
| 882 | let dtor = resource |
| 883 | .dtor |
| 884 | .as_ref() |
| 885 | .map(|dtor| lookup_vmdef(store, self.id, dtor)); |
| 886 | let dtor = dtor.map(|export| match export { |
| 887 | crate::runtime::vm::Export::Function(f) => f.vm_func_ref(store), |
| 888 | _ => unreachable!(), |
| 889 | }); |
| 890 | let index = self |
| 891 | .component |
| 892 | .env_component() |
| 893 | .resource_index(resource.index); |
| 894 | let instance = self.instance(store); |
| 895 | let ty = ResourceType::guest(store.id(), instance, resource.index); |
| 896 | self.instance_mut(store) |
| 897 | .set_resource_destructor(index, dtor); |
| 898 | let i = self.instance_resource_types_mut(store).push(ty)?; |
| 899 | debug_assert_eq!(i, index); |
| 900 | Ok(()) |
| 901 | } |
| 902 | |
| 903 | fn extract_memory(&mut self, store: &mut StoreOpaque, memory: &ExtractMemory) { |
| 904 | let import = match lookup_vmexport(store, self.id, &memory.export) { |
no test coverage detected