Open WenLY1 opened 5 months ago
If wasm shared heap is enable, should the boundary check keep enabled ? In the following code, if bounds checks is disabled, should we return the offset directly or judge whether the addr is in shared heap? In function wasm_runtime_addr_native_to_app
if (bounds_checks) {
if (memory_inst->memory_data <= addr && addr < memory_inst->memory_data_end) {
ret = (uint64)(addr - memory_inst->memory_data);
SHARED_MEMORY_UNLOCK(memory_inst);
return ret;
}
}
/* If bounds checks is disabled, return the offset directly */
else if (addr != NULL) {
ret = (uint64)(addr - memory_inst->memory_data);
SHARED_MEMORY_UNLOCK(memory_inst);
return ret;
}
Would u mind giving us, the community, a quick introduction about:
@WenLY1 Many people may not know the background and the design details of the shared heap, I submitted issue #3546 to try to illustrate that, suggest you to post tasks in that issue to track and discuss instead.
Implementation tasks:
[X] add WAMR_BUILD_SHARED_HEAP and WASM_ENABLE_SHARED_HEAP
[ ] add wamrc --enable-shared-heap
[x] consider the behavior of import memory in multi-module feature
[ ] adapt address conversion/validation aot code boundary check wasm_runtime_invoke_native wasm_runtime_invoke_native_raw
wasm_runtime_validate_app_addrwasm_runtime_addr_app_to_nativewasm_runtime_addr_native_to_appwasm_runtime_validate_native_addr[ ] interpreter/fast-jit do boundary check
classic interp modefast interp modejit[X] Support setting shared heap’s size and shared heap’s alloc options in RuntimeInitArgs for wasm_runtime_full_init
[x] Add check in load module, default memory’s max_memory_size should be no larger than 4G-shared_heap_size, if not, reduce it to 4G-shared_heap_size
[X] Add API wasm_runtime_shared_malloc/wasm_runtime_shared_free
[X] App allocates memory from shared heap with API shared_malloc/shared_free example
3543