@@ -227,11 +227,11 @@ pub fn call_imported(
227227) -> Done {
228228 let ( caller_ip, crate :: ir:: decode:: CallImported { params, func } ) = unsafe { decode_op ( ip) } ;
229229 let func = fetch_func ( instance, func) ;
230- let func = resolve_func ( state. store , & func) ;
231- let ( callee_ip , sp, mem0, mem0_len, instance) = match func {
232- FuncEntity :: Wasm ( func ) => {
233- let engine_func = func . func_body ( ) ;
234- let callee_instance = * func . instance ( ) ;
230+ let func_entity = resolve_func ( state. store , & func) ;
231+ let ( ip , sp, mem0, mem0_len, instance) = match func_entity {
232+ FuncEntity :: Wasm ( wasm_func ) => {
233+ let engine_func = wasm_func . func_body ( ) ;
234+ let callee_instance = * wasm_func . instance ( ) ;
235235 let ( callee_ip, size) = compile_or_get_func ! ( state, engine_func) ;
236236 let callee_instance = resolve_instance ( state. store , & callee_instance) . into ( ) ;
237237 let callee_sp = match state. stack . push_frame (
@@ -248,8 +248,7 @@ pub fn call_imported(
248248 update_instance ( state. store , instance, callee_instance, mem0, mem0_len) ;
249249 ( callee_ip, callee_sp, mem0, mem0_len, instance)
250250 }
251- FuncEntity :: Host ( _func) => {
252- todo ! ( )
251+ FuncEntity :: Host ( host_func) => {
253252 }
254253 } ;
255254 dispatch ! ( state, callee_ip, sp, mem0, mem0_len, instance)
@@ -276,11 +275,11 @@ pub fn call_indirect(
276275 Ok ( func) => func,
277276 Err ( trap) => done ! ( state, trap) ,
278277 } ;
279- let func = resolve_func ( state. store , & func) ;
280- let ( callee_ip, sp, mem0, mem0_len, instance) = match func {
281- FuncEntity :: Wasm ( func ) => {
282- let engine_func = func . func_body ( ) ;
283- let callee_instance = * func . instance ( ) ;
278+ let func_entity = resolve_func ( state. store , & func) ;
279+ let ( callee_ip, sp, mem0, mem0_len, instance) = match func_entity {
280+ FuncEntity :: Wasm ( wasm_func ) => {
281+ let engine_func = wasm_func . func_body ( ) ;
282+ let callee_instance = * wasm_func . instance ( ) ;
284283 let ( callee_ip, size) = compile_or_get_func ! ( state, engine_func) ;
285284 let callee_instance: Inst = resolve_instance ( state. store , & callee_instance) . into ( ) ;
286285 let callee_sp = match state. stack . push_frame (
@@ -352,8 +351,7 @@ pub fn return_call_imported(
352351 update_instance ( state. store , instance, callee_instance, mem0, mem0_len) ;
353352 ( callee_ip, callee_sp, mem0, mem0_len, instance)
354353 }
355- FuncEntity :: Host ( _func) => {
356- todo ! ( )
354+ FuncEntity :: Host ( host_func) => {
357355 }
358356 } ;
359357 dispatch ! ( state, callee_ip, sp, mem0, mem0_len, instance)
0 commit comments