Implement memory64 for classic interpreter (#3266)
Adding a new cmake flag (cache variable) `WAMR_BUILD_MEMORY64` to enable the memory64 feature, it can only be enabled on the 64-bit platform/target and can only use software boundary check. And when it is enabled, it can support both i32 and i64 linear memory types. The main modifications are: - wasm loader & mini-loader: loading and bytecode validating process - wasm runtime: memory instantiating process - classic-interpreter: wasm code executing process - Support memory64 memory in related runtime APIs - Modify main function type check when it's memory64 wasm file - Modify `wasm_runtime_invoke_native` and `wasm_runtime_invoke_native_raw` to handle registered native function pointer argument when memory64 is enabled - memory64 classic-interpreter spec test in `test_wamr.sh` and in CI Currently, it supports memory64 memory wasm file that uses core spec (including bulk memory proposal) opcodes and threads opcodes. ps. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3091 https://github.com/bytecodealliance/wasm-micro-runtime/pull/3240 https://github.com/bytecodealliance/wasm-micro-runtime/pull/3260
This commit is contained in:
28
tests/wamr-test-suites/spec-test-script/memory64.patch
Normal file
28
tests/wamr-test-suites/spec-test-script/memory64.patch
Normal file
@ -0,0 +1,28 @@
|
||||
diff --git a/test/core/memory.wast b/test/core/memory.wast
|
||||
index 1dd5b84..497b69f 100644
|
||||
--- a/test/core/memory.wast
|
||||
+++ b/test/core/memory.wast
|
||||
@@ -76,17 +76,17 @@
|
||||
"memory size must be at most 65536 pages (4GiB)"
|
||||
)
|
||||
|
||||
-(assert_invalid
|
||||
+(assert_malformed
|
||||
(module quote "(memory 0x1_0000_0000)")
|
||||
- "memory size must be at most 65536 pages (4GiB)"
|
||||
+ "i32 constant out of range"
|
||||
)
|
||||
-(assert_invalid
|
||||
+(assert_malformed
|
||||
(module quote "(memory 0x1_0000_0000 0x1_0000_0000)")
|
||||
- "memory size must be at most 65536 pages (4GiB)"
|
||||
+ "i32 constant out of range"
|
||||
)
|
||||
-(assert_invalid
|
||||
+(assert_malformed
|
||||
(module quote "(memory 0 0x1_0000_0000)")
|
||||
- "memory size must be at most 65536 pages (4GiB)"
|
||||
+ "i32 constant out of range"
|
||||
)
|
||||
|
||||
(module
|
||||
Reference in New Issue
Block a user