wasm-micro-runtime icon indicating copy to clipboard operation
wasm-micro-runtime copied to clipboard

Wasm shared heap

Open WenLY1 opened this issue 2 weeks ago • 3 comments

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_addr~~ ~~wasm_runtime_addr_app_to_native~~ ~~wasm_runtime_addr_native_to_app~~ ~~wasm_runtime_validate_native_addr~~

  • [ ] interpreter/fast-jit do boundary check ~~classic interp mode~~ ~~fast interp mode~~ jit

  • [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

            #include <stdio.h>  
            #include <stdlib.h>  
            extern void *shared_malloc(int size);  
            extern void shared_free(void *ptr);  
            int main()  
            {  
	            int *pa = (int *)malloc(4);  
	            *pa = 4;  
	            printf("pa value is %d\n", *pa);  
	            free(pa);  
	            int *ps = (int *)shared_malloc(4);  
	            *ps = 5;  
	            printf("ps value is %d\n", *ps);  
	            shared_free(ps);  
            } 

#3543

WenLY1 avatar Jun 18 '24 11:06 WenLY1