Skip to content

Shared heap enhancements for Interpreter and AOT #4400

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 23 commits into
base: main
Choose a base branch
from

Conversation

TianlongLiang
Copy link
Collaborator

For interpreter and AOT mode:

  • Added a new type of shared heap, which can be initialized from a preallocated buffer.
  • Introduced shared heap chain, allowing multiple shared heaps to be chained together; and added new export APIs to create/disconnect a shared heap chain.
  • Updated related document and sample code, added more unit test cases.

TianlongLiang and others added 23 commits February 5, 2025 10:12
- preallocated shared heap and shared heap chain
- update preallocated shared heap and shared heap chain sample and document
- shared heap unit test and sample
- update document and build script

Co-authored-by: liang.he <[email protected]>
…shared_heap_from_main

From 68e4534 Iterate callstack API
to 7f968f5 wasi_socket_ext.c: avoid tls to make this library-friendly
…_from_main

merge commits into dev/shared_heap from main

From 68e4534 Iterate callstack API
to 7f968f5 wasi_socket_ext.c: avoid tls to make this library-friendly
* shared heap enhancement: modify memory check for aot_check_memory_overflow to accomodate shared heap chain
* shared heap enhancement in AOT
* use alloca for func ctx shared heap cache value
* use correct alloca for func ctx shared heap cache value
* enable shared heap chain aot test and bug fix
* Fix a missing argument on 32bits platform, still has the shared heap chain iteration problem
* Fix shared heap chain iteration problem on 32bits platform
* fix AOT bulk memory bounds checks compliation issue
* fix AOT bulk memory bounds checks on 64 bits platform
* refactor aot memory check
* refactor AOT bulk memory bounds checks
* add more unit test for shared heap
* finished organizing unit test for shared heap and enable x86_32 for shared heap unit test
* cover a corner case for bulk memory overflow check
* try func call to replace shared heap chain traverse
* fix compilation error in JIT and potentially load nullptr
* add option for wamrc to enable single shared heap/multi shared heap, and update shared heap unit tests and sample
* cr suggestions: 1. check potiential underflow 2. refactor and use separate function for bulk memory and normal memroy 3. static assert 4. add more comments 5. remove unused code
Copy link
Collaborator Author

@TianlongLiang TianlongLiang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review checkpoint 1/2

@@ -974,29 +1222,17 @@ wasm_runtime_addr_native_to_app(WASMModuleInstanceCommon *module_inst_comm,

bounds_checks = is_bounds_checks_enabled(module_inst_comm);

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this logic should moved to cmake config, to double check

load_wasm(char *wasm_file_tested, unsigned int app_heap_size)
static void
destroy_module_env(struct ret_env module_env);

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might want to use setup() and teardown() to simplify and unify test procedures.

Copy link
Collaborator Author

@TianlongLiang TianlongLiang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review 2/2

goto fail; \
} \
} while (0)

static bool
create_shared_heap_info(AOTCompContext *comp_ctx, AOTFuncContext *func_ctx)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the future, maybe should update func ctx shared heap alloca value back to module instance extra when the function end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants