mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-05-28 12:37:25 +00:00
Add place holders for exception handling opcodes (#1852)
Define exception handling opcodes and add empty handlers for the opcodes.
This commit is contained in:
parent
14288f59b0
commit
587513f3c6
|
@ -285,6 +285,10 @@ if (WAMR_BUILD_REF_TYPES EQUAL 1)
|
|||
else ()
|
||||
message (" Reference types disabled")
|
||||
endif ()
|
||||
if (WAMR_BUILD_EXCE_HANDLING EQUAL 1)
|
||||
add_definitions (-DWASM_ENABLE_EXCE_HANDLING=1)
|
||||
message (" Exception Handling enabled")
|
||||
endif ()
|
||||
if (DEFINED WAMR_BH_VPRINTF)
|
||||
add_definitions (-DBH_VPRINTF=${WAMR_BH_VPRINTF})
|
||||
endif ()
|
||||
|
|
|
@ -422,6 +422,10 @@
|
|||
#define WASM_ENABLE_REF_TYPES 0
|
||||
#endif
|
||||
|
||||
#ifndef WASM_ENABLE_EXCE_HANDLING
|
||||
#define WASM_ENABLE_EXCE_HANDLING 0
|
||||
#endif
|
||||
|
||||
#ifndef WASM_ENABLE_SGX_IPFS
|
||||
#define WASM_ENABLE_SGX_IPFS 0
|
||||
#endif
|
||||
|
|
|
@ -1503,6 +1503,20 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|||
goto call_func_from_interp;
|
||||
}
|
||||
|
||||
#if WASM_ENABLE_EXCE_HANDLING != 0
|
||||
HANDLE_OP(WASM_OP_TRY)
|
||||
HANDLE_OP(WASM_OP_CATCH)
|
||||
HANDLE_OP(WASM_OP_THROW)
|
||||
HANDLE_OP(WASM_OP_RETHROW)
|
||||
HANDLE_OP(WASM_OP_DELEGATE)
|
||||
HANDLE_OP(WASM_OP_CATCH_ALL)
|
||||
{
|
||||
/* TODO */
|
||||
wasm_set_exception(module, "unsupported opcode");
|
||||
goto got_exception;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* parametric instructions */
|
||||
HANDLE_OP(WASM_OP_DROP)
|
||||
{
|
||||
|
@ -3747,10 +3761,6 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|||
#endif
|
||||
|
||||
#if WASM_ENABLE_LABELS_AS_VALUES != 0
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x06)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x07)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x08)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x09)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x0a)
|
||||
#if WASM_ENABLE_TAIL_CALL == 0
|
||||
HANDLE_OP(WASM_OP_RETURN_CALL)
|
||||
|
@ -3766,13 +3776,19 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|||
HANDLE_OP(WASM_OP_REF_NULL)
|
||||
HANDLE_OP(WASM_OP_REF_IS_NULL)
|
||||
HANDLE_OP(WASM_OP_REF_FUNC)
|
||||
#endif
|
||||
#if WASM_ENABLE_EXCE_HANDLING == 0
|
||||
HANDLE_OP(WASM_OP_TRY)
|
||||
HANDLE_OP(WASM_OP_CATCH)
|
||||
HANDLE_OP(WASM_OP_THROW)
|
||||
HANDLE_OP(WASM_OP_RETHROW)
|
||||
HANDLE_OP(WASM_OP_DELEGATE)
|
||||
HANDLE_OP(WASM_OP_CATCH_ALL)
|
||||
#endif
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x14)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x15)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x16)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x17)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x18)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x19)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x27)
|
||||
/* Used by fast interpreter */
|
||||
HANDLE_OP(EXT_OP_SET_LOCAL_FAST_I64)
|
||||
|
|
|
@ -1395,6 +1395,20 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|||
goto call_func_from_interp;
|
||||
}
|
||||
|
||||
#if WASM_ENABLE_EXCE_HANDLING != 0
|
||||
HANDLE_OP(WASM_OP_TRY)
|
||||
HANDLE_OP(WASM_OP_CATCH)
|
||||
HANDLE_OP(WASM_OP_THROW)
|
||||
HANDLE_OP(WASM_OP_RETHROW)
|
||||
HANDLE_OP(WASM_OP_DELEGATE)
|
||||
HANDLE_OP(WASM_OP_CATCH_ALL)
|
||||
{
|
||||
/* TODO */
|
||||
wasm_set_exception(module, "unsupported opcode");
|
||||
goto got_exception;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* parametric instructions */
|
||||
HANDLE_OP(WASM_OP_SELECT)
|
||||
{
|
||||
|
@ -3601,10 +3615,6 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|||
#endif
|
||||
|
||||
#if WASM_ENABLE_LABELS_AS_VALUES != 0
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x06)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x07)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x08)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x09)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x0a)
|
||||
#if WASM_ENABLE_TAIL_CALL == 0
|
||||
HANDLE_OP(WASM_OP_RETURN_CALL)
|
||||
|
@ -3619,6 +3629,14 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|||
HANDLE_OP(WASM_OP_REF_NULL)
|
||||
HANDLE_OP(WASM_OP_REF_IS_NULL)
|
||||
HANDLE_OP(WASM_OP_REF_FUNC)
|
||||
#endif
|
||||
#if WASM_ENABLE_EXCE_HANDLING == 0
|
||||
HANDLE_OP(WASM_OP_TRY)
|
||||
HANDLE_OP(WASM_OP_CATCH)
|
||||
HANDLE_OP(WASM_OP_THROW)
|
||||
HANDLE_OP(WASM_OP_RETHROW)
|
||||
HANDLE_OP(WASM_OP_DELEGATE)
|
||||
HANDLE_OP(WASM_OP_CATCH_ALL)
|
||||
#endif
|
||||
/* SELECT_T is converted to SELECT or SELECT_64 */
|
||||
HANDLE_OP(WASM_OP_SELECT_T)
|
||||
|
@ -3626,8 +3644,6 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|||
HANDLE_OP(WASM_OP_UNUSED_0x15)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x16)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x17)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x18)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x19)
|
||||
HANDLE_OP(WASM_OP_UNUSED_0x27)
|
||||
/* optimized op code */
|
||||
HANDLE_OP(WASM_OP_F32_STORE)
|
||||
|
|
|
@ -4553,6 +4553,17 @@ wasm_loader_find_block_addr(WASMExecEnv *exec_env, BlockAddr *block_addr_cache,
|
|||
u8 = read_uint8(p); /* 0x00 */
|
||||
break;
|
||||
|
||||
#if WASM_ENABLE_EXCE_HANDLING != 0
|
||||
case WASM_OP_TRY:
|
||||
case WASM_OP_CATCH:
|
||||
case WASM_OP_THROW:
|
||||
case WASM_OP_RETHROW:
|
||||
case WASM_OP_DELEGATE:
|
||||
case WASM_OP_CATCH_ALL:
|
||||
/* TODO */
|
||||
return false;
|
||||
#endif
|
||||
|
||||
case WASM_OP_DROP:
|
||||
case WASM_OP_SELECT:
|
||||
case WASM_OP_DROP_64:
|
||||
|
@ -7828,6 +7839,19 @@ re_scan:
|
|||
break;
|
||||
}
|
||||
|
||||
#if WASM_ENABLE_EXCE_HANDLING != 0
|
||||
case WASM_OP_TRY:
|
||||
case WASM_OP_CATCH:
|
||||
case WASM_OP_THROW:
|
||||
case WASM_OP_RETHROW:
|
||||
case WASM_OP_DELEGATE:
|
||||
case WASM_OP_CATCH_ALL:
|
||||
/* TODO */
|
||||
set_error_buf_v(error_buf, error_buf_size, "%s %02x",
|
||||
"unsupported opcode", opcode);
|
||||
goto fail;
|
||||
#endif
|
||||
|
||||
case WASM_OP_DROP:
|
||||
{
|
||||
BranchBlock *cur_block = loader_ctx->frame_csp - 1;
|
||||
|
|
|
@ -3232,6 +3232,17 @@ wasm_loader_find_block_addr(WASMExecEnv *exec_env, BlockAddr *block_addr_cache,
|
|||
u8 = read_uint8(p); /* 0x00 */
|
||||
break;
|
||||
|
||||
#if WASM_ENABLE_EXCE_HANDLING != 0
|
||||
case WASM_OP_TRY:
|
||||
case WASM_OP_CATCH:
|
||||
case WASM_OP_THROW:
|
||||
case WASM_OP_RETHROW:
|
||||
case WASM_OP_DELEGATE:
|
||||
case WASM_OP_CATCH_ALL:
|
||||
/* TODO */
|
||||
return false;
|
||||
#endif
|
||||
|
||||
case WASM_OP_DROP:
|
||||
case WASM_OP_SELECT:
|
||||
case WASM_OP_DROP_64:
|
||||
|
@ -6073,6 +6084,18 @@ re_scan:
|
|||
break;
|
||||
}
|
||||
|
||||
#if WASM_ENABLE_EXCE_HANDLING != 0
|
||||
case WASM_OP_TRY:
|
||||
case WASM_OP_CATCH:
|
||||
case WASM_OP_THROW:
|
||||
case WASM_OP_RETHROW:
|
||||
case WASM_OP_DELEGATE:
|
||||
case WASM_OP_CATCH_ALL:
|
||||
/* TODO */
|
||||
set_error_buf(error_buf, error_buf_size, "unsupported opcode");
|
||||
goto fail;
|
||||
#endif
|
||||
|
||||
case WASM_OP_DROP:
|
||||
{
|
||||
BranchBlock *cur_block = loader_ctx->frame_csp - 1;
|
||||
|
|
|
@ -21,10 +21,11 @@ typedef enum WASMOpcode {
|
|||
WASM_OP_IF = 0x04, /* if */
|
||||
WASM_OP_ELSE = 0x05, /* else */
|
||||
|
||||
WASM_OP_UNUSED_0x06 = 0x06,
|
||||
WASM_OP_UNUSED_0x07 = 0x07,
|
||||
WASM_OP_UNUSED_0x08 = 0x08,
|
||||
WASM_OP_UNUSED_0x09 = 0x09,
|
||||
WASM_OP_TRY = 0x06, /* try */
|
||||
WASM_OP_CATCH = 0x07, /* catch */
|
||||
WASM_OP_THROW = 0x08, /* throw */
|
||||
WASM_OP_RETHROW = 0x09, /* rethrow */
|
||||
|
||||
WASM_OP_UNUSED_0x0a = 0x0a,
|
||||
|
||||
WASM_OP_END = 0x0b, /* end */
|
||||
|
@ -41,8 +42,9 @@ typedef enum WASMOpcode {
|
|||
WASM_OP_UNUSED_0x15 = 0x15,
|
||||
WASM_OP_UNUSED_0x16 = 0x16,
|
||||
WASM_OP_UNUSED_0x17 = 0x17,
|
||||
WASM_OP_UNUSED_0x18 = 0x18,
|
||||
WASM_OP_UNUSED_0x19 = 0x19,
|
||||
|
||||
WASM_OP_DELEGATE = 0x18, /* delegate */
|
||||
WASM_OP_CATCH_ALL = 0x19, /* catch_all */
|
||||
|
||||
/* parametric instructions */
|
||||
WASM_OP_DROP = 0x1a, /* drop */
|
||||
|
@ -694,10 +696,10 @@ typedef enum WASMAtomicEXTOpcode {
|
|||
HANDLE_OPCODE(WASM_OP_LOOP), /* 0x03 */ \
|
||||
HANDLE_OPCODE(WASM_OP_IF), /* 0x04 */ \
|
||||
HANDLE_OPCODE(WASM_OP_ELSE), /* 0x05 */ \
|
||||
HANDLE_OPCODE(WASM_OP_UNUSED_0x06), /* 0x06 */ \
|
||||
HANDLE_OPCODE(WASM_OP_UNUSED_0x07), /* 0x07 */ \
|
||||
HANDLE_OPCODE(WASM_OP_UNUSED_0x08), /* 0x08 */ \
|
||||
HANDLE_OPCODE(WASM_OP_UNUSED_0x09), /* 0x09 */ \
|
||||
HANDLE_OPCODE(WASM_OP_TRY), /* 0x06 */ \
|
||||
HANDLE_OPCODE(WASM_OP_CATCH), /* 0x07 */ \
|
||||
HANDLE_OPCODE(WASM_OP_THROW), /* 0x08 */ \
|
||||
HANDLE_OPCODE(WASM_OP_RETHROW), /* 0x09 */ \
|
||||
HANDLE_OPCODE(WASM_OP_UNUSED_0x0a), /* 0x0a */ \
|
||||
HANDLE_OPCODE(WASM_OP_END), /* 0x0b */ \
|
||||
HANDLE_OPCODE(WASM_OP_BR), /* 0x0c */ \
|
||||
|
@ -712,8 +714,8 @@ typedef enum WASMAtomicEXTOpcode {
|
|||
HANDLE_OPCODE(WASM_OP_UNUSED_0x15), /* 0x15 */ \
|
||||
HANDLE_OPCODE(WASM_OP_UNUSED_0x16), /* 0x16 */ \
|
||||
HANDLE_OPCODE(WASM_OP_UNUSED_0x17), /* 0x17 */ \
|
||||
HANDLE_OPCODE(WASM_OP_UNUSED_0x18), /* 0x18 */ \
|
||||
HANDLE_OPCODE(WASM_OP_UNUSED_0x19), /* 0x19 */ \
|
||||
HANDLE_OPCODE(WASM_OP_DELEGATE), /* 0x18 */ \
|
||||
HANDLE_OPCODE(WASM_OP_CATCH_ALL), /* 0x19 */ \
|
||||
HANDLE_OPCODE(WASM_OP_DROP), /* 0x1a */ \
|
||||
HANDLE_OPCODE(WASM_OP_SELECT), /* 0x1b */ \
|
||||
HANDLE_OPCODE(WASM_OP_SELECT_T), /* 0x1c */ \
|
||||
|
|
Loading…
Reference in New Issue
Block a user