Implement GC (Garbage Collection) feature for interpreter, AOT and LLVM-JIT (#3125)
Implement the GC (Garbage Collection) feature for interpreter mode, AOT mode and LLVM-JIT mode, and support most features of the latest spec proposal, and also enable the stringref feature. Use `cmake -DWAMR_BUILD_GC=1/0` to enable/disable the feature, and `wamrc --enable-gc` to generate the AOT file with GC supported. And update the AOT file version from 2 to 3 since there are many AOT ABI breaks, including the changes of AOT file format, the changes of AOT module/memory instance layouts, the AOT runtime APIs for the AOT code to invoke and so on.
This commit is contained in:
@ -305,6 +305,11 @@
|
||||
#define WASM_ENABLE_SIMD 0
|
||||
#endif
|
||||
|
||||
/* GC performance profiling */
|
||||
#ifndef WASM_ENABLE_GC_PERF_PROFILING
|
||||
#define WASM_ENABLE_GC_PERF_PROFILING 0
|
||||
#endif
|
||||
|
||||
/* Memory profiling */
|
||||
#ifndef WASM_ENABLE_MEMORY_PROFILING
|
||||
#define WASM_ENABLE_MEMORY_PROFILING 0
|
||||
@ -325,6 +330,11 @@
|
||||
#define WASM_ENABLE_DUMP_CALL_STACK 0
|
||||
#endif
|
||||
|
||||
/* AOT stack frame */
|
||||
#ifndef WASM_ENABLE_AOT_STACK_FRAME
|
||||
#define WASM_ENABLE_AOT_STACK_FRAME 0
|
||||
#endif
|
||||
|
||||
/* Heap verification */
|
||||
#ifndef BH_ENABLE_GC_VERIFY
|
||||
#define BH_ENABLE_GC_VERIFY 0
|
||||
@ -388,6 +398,13 @@
|
||||
#define APP_HEAP_SIZE_MIN (256)
|
||||
#define APP_HEAP_SIZE_MAX (512 * 1024 * 1024)
|
||||
|
||||
/* Default min/max gc heap size of each app */
|
||||
#ifndef GC_HEAP_SIZE_DEFAULT
|
||||
#define GC_HEAP_SIZE_DEFAULT (128 * 1024)
|
||||
#endif
|
||||
#define GC_HEAP_SIZE_MIN (4 * 1024)
|
||||
#define GC_HEAP_SIZE_MAX (1024 * 1024 * 1024)
|
||||
|
||||
/* Default wasm stack size of each app */
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_AMD_64)
|
||||
#define DEFAULT_WASM_STACK_SIZE (16 * 1024)
|
||||
@ -461,6 +478,30 @@
|
||||
#define WASM_ENABLE_REF_TYPES 0
|
||||
#endif
|
||||
|
||||
#ifndef WASM_ENABLE_GC
|
||||
#define WASM_ENABLE_GC 0
|
||||
#endif
|
||||
|
||||
#ifndef WASM_CONST_EXPR_STACK_SIZE
|
||||
#if WASM_ENABLE_GC != 0
|
||||
#define WASM_CONST_EXPR_STACK_SIZE 8
|
||||
#else
|
||||
#define WASM_CONST_EXPR_STACK_SIZE 4
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef WASM_ENABLE_STRINGREF
|
||||
#define WASM_ENABLE_STRINGREF 0
|
||||
#endif
|
||||
|
||||
#ifndef GC_REFTYPE_MAP_SIZE_DEFAULT
|
||||
#define GC_REFTYPE_MAP_SIZE_DEFAULT 64
|
||||
#endif
|
||||
|
||||
#ifndef GC_RTTOBJ_MAP_SIZE_DEFAULT
|
||||
#define GC_RTTOBJ_MAP_SIZE_DEFAULT 64
|
||||
#endif
|
||||
|
||||
#ifndef WASM_ENABLE_EXCE_HANDLING
|
||||
#define WASM_ENABLE_EXCE_HANDLING 0
|
||||
#endif
|
||||
@ -525,4 +566,8 @@
|
||||
#define WASM_ENABLE_QUICK_AOT_ENTRY 1
|
||||
#endif
|
||||
|
||||
#ifndef WASM_TABLE_MAX_SIZE
|
||||
#define WASM_TABLE_MAX_SIZE 1024
|
||||
#endif
|
||||
|
||||
#endif /* end of _CONFIG_H_ */
|
||||
|
||||
Reference in New Issue
Block a user