@@ -2,7 +2,7 @@ use alloc::{boxed::Box, format, rc::Rc, string::ToString};
22use tinywasm_types:: * ;
33
44use crate :: func:: { FromWasmValueTuple , IntoWasmValueTuple } ;
5- use crate :: { log , Error , FuncHandle , FuncHandleTyped , Imports , MemoryRef , MemoryRefMut , Module , Result , Store } ;
5+ use crate :: { Error , FuncHandle , FuncHandleTyped , Imports , MemoryRef , MemoryRefMut , Module , Result , Store } ;
66
77/// An instanciated WebAssembly module
88///
@@ -61,13 +61,9 @@ impl ModuleInstance {
6161 // don't need to create a auxiliary frame etc.
6262
6363 let idx = store. next_module_instance_idx ( ) ;
64- log:: info!( "Instantiating module at index {}" , idx) ;
65- let imports = imports. unwrap_or_default ( ) ;
66-
67- let mut addrs = imports. link ( store, & module, idx) ?;
64+ let mut addrs = imports. unwrap_or_default ( ) . link ( store, & module, idx) ?;
6865 let data = module. data ;
6966
70- // TODO: check if the compiler correctly optimizes this to prevent wasted allocations
7167 addrs. funcs . extend ( store. init_funcs ( data. funcs . into ( ) , idx) ?) ;
7268 addrs. tables . extend ( store. init_tables ( data. table_types . into ( ) , idx) ?) ;
7369 addrs. memories . extend ( store. init_memories ( data. memory_types . into ( ) , idx) ?) ;
@@ -110,15 +106,14 @@ impl ModuleInstance {
110106 /// Get a export by name
111107 pub fn export_addr ( & self , name : & str ) -> Option < ExternVal > {
112108 let exports = self . 0 . exports . iter ( ) . find ( |e| e. name == name. into ( ) ) ?;
113- let kind = exports. kind . clone ( ) ;
114- let addr = match kind {
109+ let addr = match exports. kind {
115110 ExternalKind :: Func => self . 0 . func_addrs . get ( exports. index as usize ) ?,
116111 ExternalKind :: Table => self . 0 . table_addrs . get ( exports. index as usize ) ?,
117112 ExternalKind :: Memory => self . 0 . mem_addrs . get ( exports. index as usize ) ?,
118113 ExternalKind :: Global => self . 0 . global_addrs . get ( exports. index as usize ) ?,
119114 } ;
120115
121- Some ( ExternVal :: new ( kind, * addr) )
116+ Some ( ExternVal :: new ( exports . kind . clone ( ) , * addr) )
122117 }
123118
124119 #[ inline]
@@ -183,7 +178,7 @@ impl ModuleInstance {
183178 return Err ( Error :: Other ( format ! ( "Export is not a function: {}" , name) ) ) ;
184179 } ;
185180
186- let func_inst = store. get_func ( func_addr as usize ) ?;
181+ let func_inst = store. get_func ( func_addr) ?;
187182 let ty = func_inst. func . ty ( ) ;
188183
189184 Ok ( FuncHandle { addr : func_addr, module_addr : self . id ( ) , name : Some ( name. to_string ( ) ) , ty : ty. clone ( ) } )
@@ -205,8 +200,8 @@ impl ModuleInstance {
205200 let ExternVal :: Memory ( mem_addr) = export else {
206201 return Err ( Error :: Other ( format ! ( "Export is not a memory: {}" , name) ) ) ;
207202 } ;
208- let mem = self . memory ( store , mem_addr ) ? ;
209- Ok ( mem )
203+
204+ self . memory ( store , mem_addr )
210205 }
211206
212207 /// Get an exported memory by name
@@ -215,21 +210,19 @@ impl ModuleInstance {
215210 let ExternVal :: Memory ( mem_addr) = export else {
216211 return Err ( Error :: Other ( format ! ( "Export is not a memory: {}" , name) ) ) ;
217212 } ;
218- let mem = self . memory_mut ( store , mem_addr ) ? ;
219- Ok ( mem )
213+
214+ self . memory_mut ( store , mem_addr )
220215 }
221216
222217 /// Get a memory by address
223218 pub fn memory < ' a > ( & self , store : & ' a mut Store , addr : MemAddr ) -> Result < MemoryRef < ' a > > {
224- let addr = self . resolve_mem_addr ( addr) ;
225- let mem = store. get_mem ( addr as usize ) ?;
219+ let mem = store. get_mem ( self . resolve_mem_addr ( addr) ) ?;
226220 Ok ( MemoryRef { instance : mem. borrow ( ) } )
227221 }
228222
229223 /// Get a memory by address (mutable)
230224 pub fn memory_mut < ' a > ( & self , store : & ' a mut Store , addr : MemAddr ) -> Result < MemoryRefMut < ' a > > {
231- let addr = self . resolve_mem_addr ( addr) ;
232- let mem = store. get_mem ( addr as usize ) ?;
225+ let mem = store. get_mem ( self . resolve_mem_addr ( addr) ) ?;
233226 Ok ( MemoryRefMut { instance : mem. borrow_mut ( ) } )
234227 }
235228
@@ -257,7 +250,7 @@ impl ModuleInstance {
257250 } ;
258251
259252 let func_addr = self . 0 . func_addrs . get ( func_index as usize ) . expect ( "No func addr for start func, this is a bug" ) ;
260- let func_inst = store. get_func ( * func_addr as usize ) ?;
253+ let func_inst = store. get_func ( * func_addr) ?;
261254 let ty = func_inst. func . ty ( ) ;
262255
263256 Ok ( Some ( FuncHandle { module_addr : self . id ( ) , addr : * func_addr, ty : ty. clone ( ) , name : None } ) )
0 commit comments