Skip to content

Commit 73fb140

Browse files
committed
Add custom data setter for InstantiationArgs2
Add custom data setter for InsantiationArgs2, so user can provide custom data before post-instantiation code (such as _initialize) runs.
1 parent cd390ea commit 73fb140

8 files changed

Lines changed: 27 additions & 11 deletions

File tree

core/iwasm/aot/aot_runtime.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1963,6 +1963,8 @@ aot_instantiate(AOTModule *module, AOTModuleInstance *parent,
19631963
module_inst->e =
19641964
(WASMModuleInstanceExtra *)((uint8 *)module_inst + extra_info_offset);
19651965
extra = (AOTModuleInstanceExtra *)module_inst->e;
1966+
wasm_runtime_set_custom_data_internal(
1967+
(WASMModuleInstanceCommon *)module_inst, args->custom_data);
19661968
#if WASM_ENABLE_THREAD_MGR != 0
19671969
if (os_mutex_init(&extra->common.exception_lock) != 0) {
19681970
wasm_runtime_free(module_inst);

core/iwasm/common/wasm_runtime_common.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1755,6 +1755,13 @@ wasm_runtime_instantiation_args_set_max_memory_pages(
17551755
p->v1.max_memory_pages = v;
17561756
}
17571757

1758+
void
1759+
wasm_runtime_instantiation_args_set_custom_data(struct InstantiationArgs2 *p,
1760+
void *custom_data)
1761+
{
1762+
p->custom_data = custom_data;
1763+
}
1764+
17581765
#if WASM_ENABLE_LIBC_WASI != 0
17591766
void
17601767
wasm_runtime_instantiation_args_set_wasi_arg(struct InstantiationArgs2 *p,

core/iwasm/common/wasm_runtime_common.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -617,6 +617,7 @@ wasm_runtime_get_exec_env_tls(void);
617617

618618
struct InstantiationArgs2 {
619619
InstantiationArgs v1;
620+
void *custom_data;
620621
#if WASM_ENABLE_LIBC_WASI != 0
621622
WASIArguments wasi;
622623
#endif
@@ -741,6 +742,11 @@ void
741742
wasm_runtime_instantiation_args_set_max_memory_pages(
742743
struct InstantiationArgs2 *p, uint32 v);
743744

745+
/* See wasm_export.h for description */
746+
WASM_RUNTIME_API_EXTERN void
747+
wasm_runtime_instantiation_args_set_custom_data(struct InstantiationArgs2 *p,
748+
void *custom_data);
749+
744750
/* See wasm_export.h for description */
745751
WASM_RUNTIME_API_EXTERN void
746752
wasm_runtime_instantiation_args_set_wasi_arg(struct InstantiationArgs2 *p,

core/iwasm/include/wasm_export.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -780,6 +780,10 @@ WASM_RUNTIME_API_EXTERN void
780780
wasm_runtime_instantiation_args_set_max_memory_pages(
781781
struct InstantiationArgs2 *p, uint32_t v);
782782

783+
WASM_RUNTIME_API_EXTERN void
784+
wasm_runtime_instantiation_args_set_custom_data(struct InstantiationArgs2 *p,
785+
void *custom_data);
786+
783787
WASM_RUNTIME_API_EXTERN void
784788
wasm_runtime_instantiation_args_set_wasi_arg(struct InstantiationArgs2 *p,
785789
char *argv[], int argc);

core/iwasm/interpreter/wasm_runtime.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2512,6 +2512,8 @@ wasm_instantiate(WASMModule *module, WASMModuleInstance *parent,
25122512
module_inst->module = module;
25132513
module_inst->e =
25142514
(WASMModuleInstanceExtra *)((uint8 *)module_inst + extra_info_offset);
2515+
wasm_runtime_set_custom_data_internal(
2516+
(WASMModuleInstanceCommon *)module_inst, args->custom_data);
25152517
#if WASM_ENABLE_THREAD_MGR != 0
25162518
if (os_mutex_init(&module_inst->e->common.exception_lock) != 0) {
25172519
wasm_runtime_free(module_inst);

core/iwasm/libraries/lib-pthread/lib_pthread_wrapper.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -582,14 +582,12 @@ pthread_create_wrapper(wasm_exec_env_t exec_env,
582582

583583
wasm_runtime_instantiation_args_set_defaults(&args);
584584
wasm_runtime_instantiation_args_set_default_stack_size(&args, stack_size);
585+
wasm_runtime_instantiation_args_set_custom_data(
586+
&args, wasm_runtime_get_custom_data(module_inst));
585587
if (!(new_module_inst = wasm_runtime_instantiate_internal(
586588
module, module_inst, exec_env, &args, NULL, 0)))
587589
return -1;
588590

589-
/* Set custom_data to new module instance */
590-
wasm_runtime_set_custom_data_internal(
591-
new_module_inst, wasm_runtime_get_custom_data(module_inst));
592-
593591
wasm_native_inherit_contexts(new_module_inst, module_inst);
594592

595593
if (!(wasm_cluster_dup_c_api_imports(new_module_inst, module_inst)))

core/iwasm/libraries/lib-wasi-threads/lib_wasi_threads_wrapper.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,12 @@ thread_spawn_wrapper(wasm_exec_env_t exec_env, uint32 start_arg)
8989

9090
wasm_runtime_instantiation_args_set_defaults(&args);
9191
wasm_runtime_instantiation_args_set_default_stack_size(&args, stack_size);
92+
wasm_runtime_instantiation_args_set_custom_data(
93+
&args, wasm_runtime_get_custom_data(module_inst));
9294
if (!(new_module_inst = wasm_runtime_instantiate_internal(
9395
module, module_inst, exec_env, &args, NULL, 0)))
9496
return -1;
9597

96-
wasm_runtime_set_custom_data_internal(
97-
new_module_inst, wasm_runtime_get_custom_data(module_inst));
98-
9998
if (!(wasm_cluster_dup_c_api_imports(new_module_inst, module_inst)))
10099
goto thread_preparation_fail;
101100

core/iwasm/libraries/thread-mgr/thread_manager.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -502,15 +502,13 @@ wasm_cluster_spawn_exec_env(WASMExecEnv *exec_env)
502502

503503
wasm_runtime_instantiation_args_set_defaults(&args);
504504
wasm_runtime_instantiation_args_set_default_stack_size(&args, stack_size);
505+
wasm_runtime_instantiation_args_set_custom_data(
506+
&args, wasm_runtime_get_custom_data(module_inst));
505507
if (!(new_module_inst = wasm_runtime_instantiate_internal(
506508
module, module_inst, exec_env, &args, NULL, 0))) {
507509
return NULL;
508510
}
509511

510-
/* Set custom_data to new module instance */
511-
wasm_runtime_set_custom_data_internal(
512-
new_module_inst, wasm_runtime_get_custom_data(module_inst));
513-
514512
wasm_native_inherit_contexts(new_module_inst, module_inst);
515513

516514
if (!(wasm_cluster_dup_c_api_imports(new_module_inst, module_inst))) {

0 commit comments

Comments
 (0)