From b14a9e2078d29d58fc779c98c8f5146659b70f8e Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sat, 16 Oct 2021 18:11:37 -0500 Subject: [PATCH] finished atomic intrinsics implementation --- bin/onyx | Bin 439840 -> 452320 bytes core/intrinsics/atomics.onyx | 4 +- include/wasm.h | 77 ++++++++++++ src/wasm.c | 70 +++++++++++ src/wasm_intrinsics.c | 227 ++++++++++++++++++++++++++++++++++- src/wasm_output.c | 13 +- 6 files changed, 386 insertions(+), 5 deletions(-) diff --git a/bin/onyx b/bin/onyx index c9b126da43d76423dd6beeef760700e9cdde25ff..2a32dd070fee55cee4cde8737fd6021207e3baaf 100755 GIT binary patch delta 117904 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

t8~q#TIa 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 delta 110068 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 SbAk8wcvp|tS~#6oTK+#>ip(GY diff --git a/core/intrinsics/atomics.onyx b/core/intrinsics/atomics.onyx index 30a41bcc..cc3ea2e4 100644 --- a/core/intrinsics/atomics.onyx +++ b/core/intrinsics/atomics.onyx @@ -1,10 +1,10 @@ package core.intrinsics.atomics #private_file { - runtime :: package Runtime + runtime :: package runtime #if !#defined(runtime.Allow_Multi_Threading) { - #error "Multi-threading is not enabled so you cannot include the 'core.intrinsics.atomics' package." + // #error "Multi-threading is not enabled so you cannot include the 'core.intrinsics.atomics' package." } } diff --git a/include/wasm.h b/include/wasm.h index d09f7da8..e651924c 100644 --- a/include/wasm.h +++ b/include/wasm.h @@ -427,6 +427,83 @@ typedef enum WasmInstructionType { WI_MEMORY_COPY = EXT_INSTR_MASK | 0x0a, WI_MEMORY_FILL = EXT_INSTR_MASK | 0x0b, + WI_ATOMIC_NOTIFY = ATOMIC_INSTR_MASK | 0x00, + WI_ATOMIC_WAIT32 = ATOMIC_INSTR_MASK | 0x01, + WI_ATOMIC_WAIT64 = ATOMIC_INSTR_MASK | 0x02, + + WI_ATOMIC_FENCE = ATOMIC_INSTR_MASK | 0x03, + + WI_ATOMIC_I32_LOAD = ATOMIC_INSTR_MASK | 0x10, + WI_ATOMIC_I64_LOAD = ATOMIC_INSTR_MASK | 0x11, + WI_ATOMIC_I32_LOAD8_U = ATOMIC_INSTR_MASK | 0x12, + WI_ATOMIC_I32_LOAD16_U = ATOMIC_INSTR_MASK | 0x13, + WI_ATOMIC_I64_LOAD8_U = ATOMIC_INSTR_MASK | 0x14, + WI_ATOMIC_I64_LOAD16_U = ATOMIC_INSTR_MASK | 0x15, + WI_ATOMIC_I64_LOAD32_U = ATOMIC_INSTR_MASK | 0x16, + + WI_ATOMIC_I32_STORE = ATOMIC_INSTR_MASK | 0x17, + WI_ATOMIC_I64_STORE = ATOMIC_INSTR_MASK | 0x18, + WI_ATOMIC_I32_STORE8 = ATOMIC_INSTR_MASK | 0x19, + WI_ATOMIC_I32_STORE16 = ATOMIC_INSTR_MASK | 0x1a, + WI_ATOMIC_I64_STORE8 = ATOMIC_INSTR_MASK | 0x1b, + WI_ATOMIC_I64_STORE16 = ATOMIC_INSTR_MASK | 0x1c, + WI_ATOMIC_I64_STORE32 = ATOMIC_INSTR_MASK | 0x1d, + + WI_ATOMIC_I32_ADD = ATOMIC_INSTR_MASK | 0x1e, + WI_ATOMIC_I64_ADD = ATOMIC_INSTR_MASK | 0x1f, + WI_ATOMIC_I32_ADD8_U = ATOMIC_INSTR_MASK | 0x20, + WI_ATOMIC_I32_ADD16_U = ATOMIC_INSTR_MASK | 0x21, + WI_ATOMIC_I64_ADD8_U = ATOMIC_INSTR_MASK | 0x22, + WI_ATOMIC_I64_ADD16_U = ATOMIC_INSTR_MASK | 0x23, + WI_ATOMIC_I64_ADD32_U = ATOMIC_INSTR_MASK | 0x24, + + WI_ATOMIC_I32_SUB = ATOMIC_INSTR_MASK | 0x25, + WI_ATOMIC_I64_SUB = ATOMIC_INSTR_MASK | 0x26, + WI_ATOMIC_I32_SUB8_U = ATOMIC_INSTR_MASK | 0x27, + WI_ATOMIC_I32_SUB16_U = ATOMIC_INSTR_MASK | 0x28, + WI_ATOMIC_I64_SUB8_U = ATOMIC_INSTR_MASK | 0x29, + WI_ATOMIC_I64_SUB16_U = ATOMIC_INSTR_MASK | 0x2a, + WI_ATOMIC_I64_SUB32_U = ATOMIC_INSTR_MASK | 0x2b, + + WI_ATOMIC_I32_AND = ATOMIC_INSTR_MASK | 0x2c, + WI_ATOMIC_I64_AND = ATOMIC_INSTR_MASK | 0x2d, + WI_ATOMIC_I32_AND8_U = ATOMIC_INSTR_MASK | 0x2e, + WI_ATOMIC_I32_AND16_U = ATOMIC_INSTR_MASK | 0x2f, + WI_ATOMIC_I64_AND8_U = ATOMIC_INSTR_MASK | 0x30, + WI_ATOMIC_I64_AND16_U = ATOMIC_INSTR_MASK | 0x31, + WI_ATOMIC_I64_AND32_U = ATOMIC_INSTR_MASK | 0x32, + + WI_ATOMIC_I32_OR = ATOMIC_INSTR_MASK | 0x33, + WI_ATOMIC_I64_OR = ATOMIC_INSTR_MASK | 0x34, + WI_ATOMIC_I32_OR8_U = ATOMIC_INSTR_MASK | 0x35, + WI_ATOMIC_I32_OR16_U = ATOMIC_INSTR_MASK | 0x36, + WI_ATOMIC_I64_OR8_U = ATOMIC_INSTR_MASK | 0x37, + WI_ATOMIC_I64_OR16_U = ATOMIC_INSTR_MASK | 0x38, + WI_ATOMIC_I64_OR32_U = ATOMIC_INSTR_MASK | 0x39, + + WI_ATOMIC_I32_XOR = ATOMIC_INSTR_MASK | 0x3a, + WI_ATOMIC_I64_XOR = ATOMIC_INSTR_MASK | 0x3b, + WI_ATOMIC_I32_XOR8_U = ATOMIC_INSTR_MASK | 0x3c, + WI_ATOMIC_I32_XOR16_U = ATOMIC_INSTR_MASK | 0x3d, + WI_ATOMIC_I64_XOR8_U = ATOMIC_INSTR_MASK | 0x3e, + WI_ATOMIC_I64_XOR16_U = ATOMIC_INSTR_MASK | 0x3f, + WI_ATOMIC_I64_XOR32_U = ATOMIC_INSTR_MASK | 0x40, + + WI_ATOMIC_I32_XCHG = ATOMIC_INSTR_MASK | 0x41, + WI_ATOMIC_I64_XCHG = ATOMIC_INSTR_MASK | 0x42, + WI_ATOMIC_I32_XCHG8_U = ATOMIC_INSTR_MASK | 0x43, + WI_ATOMIC_I32_XCHG16_U = ATOMIC_INSTR_MASK | 0x44, + WI_ATOMIC_I64_XCHG8_U = ATOMIC_INSTR_MASK | 0x45, + WI_ATOMIC_I64_XCHG16_U = ATOMIC_INSTR_MASK | 0x46, + WI_ATOMIC_I64_XCHG32_U = ATOMIC_INSTR_MASK | 0x47, + + WI_ATOMIC_I32_CMPXCHG = ATOMIC_INSTR_MASK | 0x48, + WI_ATOMIC_I64_CMPXCHG = ATOMIC_INSTR_MASK | 0x49, + WI_ATOMIC_I32_CMPXCHG8_U = ATOMIC_INSTR_MASK | 0x4a, + WI_ATOMIC_I32_CMPXCHG16_U = ATOMIC_INSTR_MASK | 0x4b, + WI_ATOMIC_I64_CMPXCHG8_U = ATOMIC_INSTR_MASK | 0x4c, + WI_ATOMIC_I64_CMPXCHG16_U = ATOMIC_INSTR_MASK | 0x4d, + WI_ATOMIC_I64_CMPXCHG32_U = ATOMIC_INSTR_MASK | 0x4e, } WasmInstructionType; typedef union { diff --git a/src/wasm.c b/src/wasm.c index 796bc328..52938dd4 100644 --- a/src/wasm.c +++ b/src/wasm.c @@ -1968,6 +1968,76 @@ EMIT_FUNC(intrinsic_call, AstCall* call) { case ONYX_INTRINSIC_F32X4_CONVERT_I32X4_S: WI(WI_F32X4_CONVERT_I32X4_S); break; case ONYX_INTRINSIC_F32X4_CONVERT_I32X4_U: WI(WI_F32X4_CONVERT_I32X4_U); break; + case ONYX_INTRINSIC_ATOMIC_WAIT: { + Type* atomic_type = ((AstArgument *) call->args.values[0])->value->type->Pointer.elem; + emit_intrinsic_atomic_wait(mod, &code, atomic_type, call->token); + break; + } + + case ONYX_INTRINSIC_ATOMIC_NOTIFY: { + emit_intrinsic_atomic_notify(mod, &code); + break; + } + + case ONYX_INTRINSIC_ATOMIC_FENCE: { + emit_intrinsic_atomic_fence(mod, &code); + break; + } + + case ONYX_INTRINSIC_ATOMIC_LOAD: { + Type* atomic_type = ((AstArgument *) call->args.values[0])->value->type->Pointer.elem; + emit_intrinsic_atomic_load(mod, &code, atomic_type, call->token); + break; + } + + case ONYX_INTRINSIC_ATOMIC_STORE: { + Type* atomic_type = ((AstArgument *) call->args.values[0])->value->type->Pointer.elem; + emit_intrinsic_atomic_store(mod, &code, atomic_type, call->token); + break; + } + + case ONYX_INTRINSIC_ATOMIC_ADD: { + Type* atomic_type = ((AstArgument *) call->args.values[0])->value->type->Pointer.elem; + emit_intrinsic_atomic_add(mod, &code, atomic_type, call->token); + break; + } + + case ONYX_INTRINSIC_ATOMIC_SUB: { + Type* atomic_type = ((AstArgument *) call->args.values[0])->value->type->Pointer.elem; + emit_intrinsic_atomic_sub(mod, &code, atomic_type, call->token); + break; + } + + case ONYX_INTRINSIC_ATOMIC_AND: { + Type* atomic_type = ((AstArgument *) call->args.values[0])->value->type->Pointer.elem; + emit_intrinsic_atomic_and(mod, &code, atomic_type, call->token); + break; + } + + case ONYX_INTRINSIC_ATOMIC_OR: { + Type* atomic_type = ((AstArgument *) call->args.values[0])->value->type->Pointer.elem; + emit_intrinsic_atomic_or(mod, &code, atomic_type, call->token); + break; + } + + case ONYX_INTRINSIC_ATOMIC_XOR: { + Type* atomic_type = ((AstArgument *) call->args.values[0])->value->type->Pointer.elem; + emit_intrinsic_atomic_xor(mod, &code, atomic_type, call->token); + break; + } + + case ONYX_INTRINSIC_ATOMIC_XCHG: { + Type* atomic_type = ((AstArgument *) call->args.values[0])->value->type->Pointer.elem; + emit_intrinsic_atomic_xchg(mod, &code, atomic_type, call->token); + break; + } + + case ONYX_INTRINSIC_ATOMIC_CMPXCHG: { + Type* atomic_type = ((AstArgument *) call->args.values[0])->value->type->Pointer.elem; + emit_intrinsic_atomic_cmpxchg(mod, &code, atomic_type, call->token); + break; + } + default: assert(("Unsupported intrinsic", 0)); } diff --git a/src/wasm_intrinsics.c b/src/wasm_intrinsics.c index e61192b6..2c0ad877 100644 --- a/src/wasm_intrinsics.c +++ b/src/wasm_intrinsics.c @@ -148,42 +148,265 @@ EMIT_FUNC(initialize_type, Type* type, OnyxToken* where) { type_get_name(type)); break; } - + *pcode = code; } EMIT_FUNC(intrinsic_atomic_wait, Type* type, OnyxToken* where) { + if (type->kind != Type_Kind_Basic) goto bad_type; + + bh_arr(WasmInstruction) code = *pcode; + + switch (type->Basic.kind) { + case Basic_Kind_I32: + case Basic_Kind_U32: WID(WI_ATOMIC_WAIT32, ((WasmInstructionData) { 2, 0 })); break; + + case Basic_Kind_I64: + case Basic_Kind_U64: WID(WI_ATOMIC_WAIT64, ((WasmInstructionData) { 3, 0 })); break; + + default: goto bad_type; + } + + *pcode = code; + return; + +bad_type: + onyx_report_error(where->pos, "Bad type for atomic wait, '%s'. Only i32 and i64 are supported.", type_get_name(type)); } -EMIT_FUNC(intrinsic_atomic_notify, Type* type, OnyxToken* where) { +EMIT_FUNC_NO_ARGS(intrinsic_atomic_notify) { + bh_arr(WasmInstruction) code = *pcode; + WI(WI_ATOMIC_NOTIFY); + *pcode = code; } EMIT_FUNC_NO_ARGS(intrinsic_atomic_fence) { + bh_arr(WasmInstruction) code = *pcode; + WI(WI_ATOMIC_FENCE); + *pcode = code; } EMIT_FUNC(intrinsic_atomic_load, Type* type, OnyxToken* where) { + if (type->kind != Type_Kind_Basic) goto bad_type; + + bh_arr(WasmInstruction) code = *pcode; + + switch (type->Basic.kind) { + case Basic_Kind_U8: WID(WI_ATOMIC_I32_LOAD8_U, ((WasmInstructionData) { 0, 0 })); break; + case Basic_Kind_U16: WID(WI_ATOMIC_I32_LOAD16_U, ((WasmInstructionData) { 1, 0 })); break; + + case Basic_Kind_I32: + case Basic_Kind_U32: WID(WI_ATOMIC_I32_LOAD, ((WasmInstructionData) { 2, 0 })); break; + + case Basic_Kind_I64: + case Basic_Kind_U64: WID(WI_ATOMIC_I64_LOAD, ((WasmInstructionData) { 3, 0 })); break; + + default: goto bad_type; + } + + *pcode = code; + return; + +bad_type: + onyx_report_error(where->pos, "Bad type for atomic load, '%s'. Only u8, u16, u32, i32, u64, and i64 are supported.", type_get_name(type)); } EMIT_FUNC(intrinsic_atomic_store, Type* type, OnyxToken* where) { + if (type->kind != Type_Kind_Basic) goto bad_type; + + bh_arr(WasmInstruction) code = *pcode; + + switch (type->Basic.kind) { + case Basic_Kind_U8: WID(WI_ATOMIC_I32_STORE8, ((WasmInstructionData) { 0, 0 })); break; + case Basic_Kind_U16: WID(WI_ATOMIC_I32_STORE16, ((WasmInstructionData) { 1, 0 })); break; + + case Basic_Kind_I32: + case Basic_Kind_U32: WID(WI_ATOMIC_I32_STORE, ((WasmInstructionData) { 2, 0 })); break; + + case Basic_Kind_I64: + case Basic_Kind_U64: WID(WI_ATOMIC_I64_STORE, ((WasmInstructionData) { 3, 0 })); break; + + default: goto bad_type; + } + + *pcode = code; + return; + +bad_type: + onyx_report_error(where->pos, "Bad type for atomic store, '%s'. Only u8, u16, u32, i32, u64, and i64 are supported.", type_get_name(type)); } EMIT_FUNC(intrinsic_atomic_add, Type* type, OnyxToken* where) { + if (type->kind != Type_Kind_Basic) goto bad_type; + + bh_arr(WasmInstruction) code = *pcode; + + switch (type->Basic.kind) { + case Basic_Kind_U8: WID(WI_ATOMIC_I32_ADD8_U, ((WasmInstructionData) { 0, 0 })); break; + case Basic_Kind_U16: WID(WI_ATOMIC_I32_ADD16_U, ((WasmInstructionData) { 1, 0 })); break; + + case Basic_Kind_I32: + case Basic_Kind_U32: WID(WI_ATOMIC_I32_ADD, ((WasmInstructionData) { 2, 0 })); break; + + case Basic_Kind_I64: + case Basic_Kind_U64: WID(WI_ATOMIC_I64_ADD, ((WasmInstructionData) { 3, 0 })); break; + + default: goto bad_type; + } + + *pcode = code; + return; + +bad_type: + onyx_report_error(where->pos, "Bad type for atomic add, '%s'. Only u8, u16, u32, i32, u64, and i64 are supported.", type_get_name(type)); } EMIT_FUNC(intrinsic_atomic_sub, Type* type, OnyxToken* where) { + if (type->kind != Type_Kind_Basic) goto bad_type; + + bh_arr(WasmInstruction) code = *pcode; + + switch (type->Basic.kind) { + case Basic_Kind_U8: WID(WI_ATOMIC_I32_SUB8_U, ((WasmInstructionData) { 0, 0 })); break; + case Basic_Kind_U16: WID(WI_ATOMIC_I32_SUB16_U, ((WasmInstructionData) { 1, 0 })); break; + + case Basic_Kind_I32: + case Basic_Kind_U32: WID(WI_ATOMIC_I32_SUB, ((WasmInstructionData) { 2, 0 })); break; + + case Basic_Kind_I64: + case Basic_Kind_U64: WID(WI_ATOMIC_I64_SUB, ((WasmInstructionData) { 3, 0 })); break; + + default: goto bad_type; + } + + *pcode = code; + return; + +bad_type: + onyx_report_error(where->pos, "Bad type for atomic sub, '%s'. Only u8, u16, u32, i32, u64, and i64 are supported.", type_get_name(type)); } EMIT_FUNC(intrinsic_atomic_and, Type* type, OnyxToken* where) { + if (type->kind != Type_Kind_Basic) goto bad_type; + + bh_arr(WasmInstruction) code = *pcode; + + switch (type->Basic.kind) { + case Basic_Kind_U8: WID(WI_ATOMIC_I32_AND8_U, ((WasmInstructionData) { 0, 0 })); break; + case Basic_Kind_U16: WID(WI_ATOMIC_I32_AND16_U, ((WasmInstructionData) { 1, 0 })); break; + + case Basic_Kind_I32: + case Basic_Kind_U32: WID(WI_ATOMIC_I32_AND, ((WasmInstructionData) { 2, 0 })); break; + + case Basic_Kind_I64: + case Basic_Kind_U64: WID(WI_ATOMIC_I64_AND, ((WasmInstructionData) { 3, 0 })); break; + + default: goto bad_type; + } + + *pcode = code; + return; + +bad_type: + onyx_report_error(where->pos, "Bad type for atomic and, '%s'. Only u8, u16, u32, i32, u64, and i64 are supported.", type_get_name(type)); } EMIT_FUNC(intrinsic_atomic_or, Type* type, OnyxToken* where) { + if (type->kind != Type_Kind_Basic) goto bad_type; + + bh_arr(WasmInstruction) code = *pcode; + + switch (type->Basic.kind) { + case Basic_Kind_U8: WID(WI_ATOMIC_I32_OR8_U, ((WasmInstructionData) { 0, 0 })); break; + case Basic_Kind_U16: WID(WI_ATOMIC_I32_OR16_U, ((WasmInstructionData) { 1, 0 })); break; + + case Basic_Kind_I32: + case Basic_Kind_U32: WID(WI_ATOMIC_I32_OR, ((WasmInstructionData) { 2, 0 })); break; + + case Basic_Kind_I64: + case Basic_Kind_U64: WID(WI_ATOMIC_I64_OR, ((WasmInstructionData) { 3, 0 })); break; + + default: goto bad_type; + } + + *pcode = code; + return; + +bad_type: + onyx_report_error(where->pos, "Bad type for atomic or, '%s'. Only u8, u16, u32, i32, u64, and i64 are supported.", type_get_name(type)); } EMIT_FUNC(intrinsic_atomic_xor, Type* type, OnyxToken* where) { + if (type->kind != Type_Kind_Basic) goto bad_type; + + bh_arr(WasmInstruction) code = *pcode; + + switch (type->Basic.kind) { + case Basic_Kind_U8: WID(WI_ATOMIC_I32_XOR8_U, ((WasmInstructionData) { 0, 0 })); break; + case Basic_Kind_U16: WID(WI_ATOMIC_I32_XOR16_U, ((WasmInstructionData) { 1, 0 })); break; + + case Basic_Kind_I32: + case Basic_Kind_U32: WID(WI_ATOMIC_I32_XOR, ((WasmInstructionData) { 2, 0 })); break; + + case Basic_Kind_I64: + case Basic_Kind_U64: WID(WI_ATOMIC_I64_XOR, ((WasmInstructionData) { 3, 0 })); break; + + default: goto bad_type; + } + + *pcode = code; + return; + +bad_type: + onyx_report_error(where->pos, "Bad type for atomic xor, '%s'. Only u8, u16, u32, i32, u64, and i64 are supported.", type_get_name(type)); } EMIT_FUNC(intrinsic_atomic_xchg, Type* type, OnyxToken* where) { + if (type->kind != Type_Kind_Basic) goto bad_type; + + bh_arr(WasmInstruction) code = *pcode; + + switch (type->Basic.kind) { + case Basic_Kind_U8: WID(WI_ATOMIC_I32_XCHG8_U, ((WasmInstructionData) { 0, 0 })); break; + case Basic_Kind_U16: WID(WI_ATOMIC_I32_XCHG16_U, ((WasmInstructionData) { 1, 0 })); break; + + case Basic_Kind_I32: + case Basic_Kind_U32: WID(WI_ATOMIC_I32_XCHG, ((WasmInstructionData) { 2, 0 })); break; + + case Basic_Kind_I64: + case Basic_Kind_U64: WID(WI_ATOMIC_I64_XCHG, ((WasmInstructionData) { 3, 0 })); break; + + default: goto bad_type; + } + + *pcode = code; + return; + +bad_type: + onyx_report_error(where->pos, "Bad type for atomic xchg, '%s'. Only u8, u16, u32, i32, u64, and i64 are supported.", type_get_name(type)); } EMIT_FUNC(intrinsic_atomic_cmpxchg, Type* type, OnyxToken* where) { + if (type->kind != Type_Kind_Basic) goto bad_type; + + bh_arr(WasmInstruction) code = *pcode; + + switch (type->Basic.kind) { + case Basic_Kind_U8: WID(WI_ATOMIC_I32_CMPXCHG8_U, ((WasmInstructionData) { 0, 0 })); break; + case Basic_Kind_U16: WID(WI_ATOMIC_I32_CMPXCHG16_U, ((WasmInstructionData) { 1, 0 })); break; + + case Basic_Kind_I32: + case Basic_Kind_U32: WID(WI_ATOMIC_I32_CMPXCHG, ((WasmInstructionData) { 2, 0 })); break; + + case Basic_Kind_I64: + case Basic_Kind_U64: WID(WI_ATOMIC_I64_CMPXCHG, ((WasmInstructionData) { 3, 0 })); break; + + default: goto bad_type; + } + + *pcode = code; + return; + +bad_type: + onyx_report_error(where->pos, "Bad type for atomic cmpxchg, '%s'. Only u8, u16, u32, i32, u64, and i64 are supported.", type_get_name(type)); } diff --git a/src/wasm_output.c b/src/wasm_output.c index 8ab0598d..8a00b5da 100644 --- a/src/wasm_output.c +++ b/src/wasm_output.c @@ -411,6 +411,17 @@ static void output_instruction(WasmFunc* func, WasmInstruction* instr, bh_buffer bh_buffer_write_byte(buff, 0xFE); leb = uint_to_uleb128((u64) (instr->type &~ ATOMIC_INSTR_MASK), &leb_len); bh_buffer_append(buff, leb, leb_len); + + if (instr->type == WI_ATOMIC_FENCE) { + bh_buffer_write_byte(buff, 0x00); + + } else { + leb = uint_to_uleb128((u64) instr->data.i1, &leb_len); + bh_buffer_append(buff, leb, leb_len); + + leb = uint_to_uleb128((u64) instr->data.i2, &leb_len); + bh_buffer_append(buff, leb, leb_len); + } } else { bh_buffer_write_byte(buff, (u8) instr->type); @@ -516,7 +527,7 @@ static void output_instruction(WasmFunc* func, WasmInstruction* instr, bh_buffer case WI_F64X2_EXTRACT_LANE: case WI_F64X2_REPLACE_LANE: bh_buffer_write_byte(buff, (u8) instr->data.i1); break; - + default: break; } } -- 2.25.1