Skip to content

Commit 75ce5d2

Browse files
committed
implement extended const expr for interp
1 parent b7474b3 commit 75ce5d2

8 files changed

Lines changed: 1034 additions & 114 deletions

File tree

build-scripts/config_common.cmake

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,10 @@ if (NOT DEFINED WAMR_BUILD_TAIL_CALL)
211211
set (WAMR_BUILD_TAIL_CALL 0)
212212
endif ()
213213

214+
if (NOT DEFINED WAMR_BUILD_EXTENDED_CONST_EXPR)
215+
set (WAMR_BUILD_EXTENDED_CONST_EXPR 0)
216+
endif ()
217+
214218
########################################
215219
# Compilation options to marco
216220
########################################
@@ -671,7 +675,17 @@ if (WAMR_BUILD_AOT_VALIDATOR EQUAL 1)
671675
message (" AOT validator enabled")
672676
add_definitions (-DWASM_ENABLE_AOT_VALIDATOR=1)
673677
endif ()
674-
678+
if (WAMR_BUILD_INSTRUCTION_METERING EQUAL 1)
679+
message (" Instruction metering enabled")
680+
add_definitions (-DWASM_ENABLE_INSTRUCTION_METERING=1)
681+
endif ()
682+
if (WAMR_BUILD_EXTENDED_CONST_EXPR EQUAL 1)
683+
message (" Extended constant expression enabled")
684+
add_definitions(-DWASM_ENABLE_EXTENDED_CONST_EXPR=1)
685+
else()
686+
message (" Extended constant expression disabled")
687+
add_definitions(-DWASM_ENABLE_EXTENDED_CONST_EXPR=0)
688+
endif ()
675689
########################################
676690
# Show Phase4 Wasm proposals status.
677691
########################################
@@ -695,11 +709,11 @@ message (
695709
" \"Tail call\" via WAMR_BUILD_TAIL_CALL: ${WAMR_BUILD_TAIL_CALL}\n"
696710
" \"Threads\" via WAMR_BUILD_SHARED_MEMORY: ${WAMR_BUILD_SHARED_MEMORY}\n"
697711
" \"Typed Function References\" via WAMR_BUILD_GC: ${WAMR_BUILD_GC}\n"
712+
" \"Extended Constant Expressions\" via WAMR_BUILD_EXTENDED_CONST_EXPR: ${WAMR_BUILD_EXTENDED_CONST_EXPR}\n"
698713
" Unsupported (>= Phase4):\n"
699714
" \"Branch Hinting\"\n"
700715
" \"Custom Annotation Syntax in the Text Format\"\n"
701716
" \"Exception handling\"\n"
702-
" \"Extended Constant Expressions\"\n"
703717
" \"Import/Export of Mutable Globals\"\n"
704718
" \"JS String Builtins\"\n"
705719
" \"Relaxed SIMD\"\n"

core/iwasm/interpreter/wasm.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,12 @@ typedef void *table_elem_type_t;
135135
#define INIT_EXPR_TYPE_F64_CONST 0x44
136136
#define INIT_EXPR_TYPE_V128_CONST 0xFD
137137
#define INIT_EXPR_TYPE_GET_GLOBAL 0x23
138+
#define INIT_EXPR_TYPE_I32_ADD 0x6A
139+
#define INIT_EXPR_TYPE_I32_SUB 0x6B
140+
#define INIT_EXPR_TYPE_I32_MUL 0x6C
141+
#define INIT_EXPR_TYPE_I64_ADD 0x7C
142+
#define INIT_EXPR_TYPE_I64_SUB 0x7D
143+
#define INIT_EXPR_TYPE_I64_MUL 0x7E
138144
#define INIT_EXPR_TYPE_REFNULL_CONST 0xD0
139145
#define INIT_EXPR_TYPE_FUNCREF_CONST 0xD2
140146
#define INIT_EXPR_TYPE_STRUCT_NEW 0xD3
@@ -278,8 +284,20 @@ typedef struct InitializerExpression {
278284
constant expression */
279285
uint8 init_expr_type;
280286
WASMValue u;
287+
#if WASM_ENABLE_EXTENDED_CONST_EXPR != 0
288+
struct InitializerExpression *l_expr;
289+
struct InitializerExpression *r_expr;
290+
#endif
281291
} InitializerExpression;
282292

293+
#if WASM_ENABLE_EXTENDED_CONST_EXPR != 0
294+
void
295+
destroy_init_expr_recursive(InitializerExpression *expr);
296+
297+
void
298+
destroy_sub_init_expr(InitializerExpression *expr);
299+
#endif
300+
283301
#if WASM_ENABLE_GC != 0
284302
/**
285303
* Reference type of (ref null ht) or (ref ht),

0 commit comments

Comments
 (0)