Skip to content

Commit dcde455

Browse files
authored
Add wasm_runtime_get_cur_local_obj_ref and change API names (#3117)
Add wasm_runtime_get_cur_local_obj_ref and change API: ```C wasm_runtime_push_local_object_ref wasm_runtime_pop_local_object_ref wasm_runtime_pop_local_object_refs ``` to ```C wasm_runtime_push_local_obj_ref wasm_runtime_pop_local_obj_ref wasm_runtime_pop_local_obj_refs ``` Signed-off-by: zhangliangyu3 <zhangliangyu3@xiaomi.com>
1 parent 71b6bdf commit dcde455

File tree

4 files changed

+34
-15
lines changed

4 files changed

+34
-15
lines changed

core/iwasm/common/gc/gc_common.c

+12-4
Original file line numberDiff line numberDiff line change
@@ -866,24 +866,23 @@ wasm_obj_is_instance_of_ref_type(const WASMObjectRef obj,
866866
}
867867

868868
void
869-
wasm_runtime_push_local_object_ref(WASMExecEnv *exec_env,
870-
WASMLocalObjectRef *ref)
869+
wasm_runtime_push_local_obj_ref(WASMExecEnv *exec_env, WASMLocalObjectRef *ref)
871870
{
872871
ref->val = NULL;
873872
ref->prev = exec_env->cur_local_object_ref;
874873
exec_env->cur_local_object_ref = ref;
875874
}
876875

877876
WASMLocalObjectRef *
878-
wasm_runtime_pop_local_object_ref(WASMExecEnv *exec_env)
877+
wasm_runtime_pop_local_obj_ref(WASMExecEnv *exec_env)
879878
{
880879
WASMLocalObjectRef *local_ref = exec_env->cur_local_object_ref;
881880
exec_env->cur_local_object_ref = exec_env->cur_local_object_ref->prev;
882881
return local_ref;
883882
}
884883

885884
void
886-
wasm_runtime_pop_local_object_refs(WASMExecEnv *exec_env, uint32 n)
885+
wasm_runtime_pop_local_obj_refs(WASMExecEnv *exec_env, uint32 n)
887886
{
888887
bh_assert(n > 0);
889888

@@ -892,6 +891,15 @@ wasm_runtime_pop_local_object_refs(WASMExecEnv *exec_env, uint32 n)
892891
} while (--n > 0);
893892
}
894893

894+
WASMLocalObjectRef *
895+
wasm_runtime_get_cur_local_obj_ref(WASMExecEnv *exec_env)
896+
{
897+
WASMLocalObjectRef *local_ref = exec_env->cur_local_object_ref;
898+
899+
bh_assert(local_ref);
900+
return local_ref;
901+
}
902+
895903
void
896904
wasm_runtime_gc_prepare(WASMExecEnv *exec_env)
897905
{

core/iwasm/common/gc/gc_object.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -428,19 +428,19 @@ wasm_externref_obj_new(WASMExecEnv *exec_env, const void *host_obj)
428428
anyref_obj->host_obj = host_obj;
429429

430430
/* Lock anyref_obj in case it is reclaimed when allocating memory below */
431-
wasm_runtime_push_local_object_ref(exec_env, &local_ref);
431+
wasm_runtime_push_local_obj_ref(exec_env, &local_ref);
432432
local_ref.val = (WASMObjectRef)anyref_obj;
433433

434434
if (!(externref_obj =
435435
gc_obj_malloc(heap_handle, sizeof(WASMExternrefObject)))) {
436-
wasm_runtime_pop_local_object_ref(exec_env);
436+
wasm_runtime_pop_local_obj_ref(exec_env);
437437
return NULL;
438438
}
439439

440440
externref_obj->header = WASM_OBJ_EXTERNREF_OBJ_FLAG;
441441
externref_obj->internal_obj = (WASMObjectRef)anyref_obj;
442442

443-
wasm_runtime_pop_local_object_ref(exec_env);
443+
wasm_runtime_pop_local_obj_ref(exec_env);
444444
return externref_obj;
445445
}
446446

core/iwasm/common/wasm_application.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,7 @@ execute_func(WASMModuleInstanceCommon *module_inst, const char *name,
595595
module_inst, NULL, 0))) {
596596
goto fail;
597597
}
598-
wasm_runtime_push_local_object_ref(exec_env, local_ref);
598+
wasm_runtime_push_local_obj_ref(exec_env, local_ref);
599599
local_ref->val = (WASMObjectRef)gc_obj;
600600
num_local_ref_pushed++;
601601
PUT_REF_TO_ADDR(argv1 + p, gc_obj);
@@ -618,7 +618,7 @@ execute_func(WASMModuleInstanceCommon *module_inst, const char *name,
618618
module_inst, NULL, 0))) {
619619
goto fail;
620620
}
621-
wasm_runtime_push_local_object_ref(exec_env, local_ref);
621+
wasm_runtime_push_local_obj_ref(exec_env, local_ref);
622622
local_ref->val = (WASMObjectRef)gc_obj;
623623
num_local_ref_pushed++;
624624
PUT_REF_TO_ADDR(argv1 + p, gc_obj);
@@ -842,7 +842,7 @@ execute_func(WASMModuleInstanceCommon *module_inst, const char *name,
842842

843843
#if WASM_ENABLE_GC != 0
844844
for (j = 0; j < num_local_ref_pushed; j++) {
845-
local_ref = wasm_runtime_pop_local_object_ref(exec_env);
845+
local_ref = wasm_runtime_pop_local_obj_ref(exec_env);
846846
wasm_runtime_free(local_ref);
847847
}
848848
#endif
@@ -856,7 +856,7 @@ execute_func(WASMModuleInstanceCommon *module_inst, const char *name,
856856

857857
#if WASM_ENABLE_GC != 0
858858
for (j = 0; j < num_local_ref_pushed; j++) {
859-
local_ref = wasm_runtime_pop_local_object_ref(exec_env);
859+
local_ref = wasm_runtime_pop_local_obj_ref(exec_env);
860860
wasm_runtime_free(local_ref);
861861
}
862862
#endif

core/iwasm/include/gc_export.h

+15-4
Original file line numberDiff line numberDiff line change
@@ -890,8 +890,8 @@ wasm_obj_is_instance_of_ref_type(const wasm_obj_t obj,
890890
* @param local_obj_ref the local object ref to push
891891
*/
892892
WASM_RUNTIME_API_EXTERN void
893-
wasm_runtime_push_local_object_ref(wasm_exec_env_t exec_env,
894-
wasm_local_obj_ref_t *local_obj_ref);
893+
wasm_runtime_push_local_obj_ref(wasm_exec_env_t exec_env,
894+
wasm_local_obj_ref_t *local_obj_ref);
895895

896896
/**
897897
* Pop a local object ref from stack
@@ -901,7 +901,7 @@ wasm_runtime_push_local_object_ref(wasm_exec_env_t exec_env,
901901
* @return the popped wasm_local_obj_ref_t
902902
*/
903903
WASM_RUNTIME_API_EXTERN wasm_local_obj_ref_t *
904-
wasm_runtime_pop_local_object_ref(wasm_exec_env_t exec_env);
904+
wasm_runtime_pop_local_obj_ref(wasm_exec_env_t exec_env);
905905

906906
/**
907907
* Pop n local object refs from stack
@@ -910,7 +910,18 @@ wasm_runtime_pop_local_object_ref(wasm_exec_env_t exec_env);
910910
* @param n number to pop
911911
*/
912912
WASM_RUNTIME_API_EXTERN void
913-
wasm_runtime_pop_local_object_refs(wasm_exec_env_t exec_env, uint32_t n);
913+
wasm_runtime_pop_local_obj_refs(wasm_exec_env_t exec_env, uint32_t n);
914+
915+
/**
916+
* Get current local object ref from stack
917+
*
918+
* @param exec_env the execution environment
919+
*
920+
* @return the wasm_local_obj_ref_t obj from the top of the stack, not change
921+
* the state of the stack
922+
*/
923+
WASM_RUNTIME_API_EXTERN wasm_local_obj_ref_t *
924+
wasm_runtime_get_cur_local_obj_ref(wasm_exec_env_t exec_env);
914925

915926
/**
916927
* Set finalizer to the given object, if another finalizer is set to the same

0 commit comments

Comments
 (0)