From 0992e040a6965824b94397b6799d543f3951e47e Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sat, 19 Jun 2021 22:58:52 -0500 Subject: [PATCH] refactored call generation to use less instructions --- bin/onyx | Bin 409808 -> 405712 bytes src/onyxwasm.c | 158 +++++++++++++++++++++++++++---------------------- 2 files changed, 88 insertions(+), 70 deletions(-) diff --git a/bin/onyx b/bin/onyx index 37c9c8cb41f936b004c311aa62d7741ad7195ca1..c129f2fa9f249bb4d46e4c3a3763a1689b6f2300 100755 GIT binary patch delta 87034 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 (i32, i32) +// +// WASM stack: top is last pushed +// +// vararg count +// vararg pointer to variadic arguments in the linear memory +// pointer to struct-like arguments (z) +// simple structs/primitives (y, x) +// +// Linear memory stack: +// +// ... | struct-like arguments (z) | variadic arguments (va) | return space | ... +// +// The interesting part from above is the fact that 'y' gets passed on the WASM stack, not the linear memory +// stack, even though a 'str' in Onyx is 2-component structure. This is because so-called "simple" structures, +// i.e. structures that are completely flat, with no sub-structures, are passed as multiple primitives. I do +// this because many times for interoperability, it is nicer to get two primitive values for the pointer and +// count of a slice, instead of a pointer. EMIT_FUNC(call, AstCall* call) { bh_arr(WasmInstruction) code = *pcode; - u32 stack_grow_amm = 0; u64 stack_top_idx = bh_imap_get(&mod->index_map, (u64) &builtin_stack_top); + u64 stack_top_store_local = local_raw_allocate(mod->local_alloc, WASM_TYPE_PTR); + + // Because it would be inefficient to increment and decrement the global stack pointer for every argument, + // a simple set of instructions increments it once to the size it will need to be. However, because it is + // impossible to know what size the reserved memory will be, a location patch is taken in order to fill it + // in later. + u32 reserve_space_patch = bh_arr_length(code); + WID(WI_GLOBAL_GET, stack_top_idx); + WIL(WI_LOCAL_TEE, stack_top_store_local); + WID(WI_PTR_CONST, 0); // This will be filled in later. + WI(WI_PTR_ADD); + WID(WI_GLOBAL_SET, stack_top_idx); - u32 vararg_count = 0; - u32 vararg_offset = 0xffffffff; - u64 stack_top_store_local; + u32 reserve_size = 0; + u32 vararg_count = 0; + i32 vararg_offset = -1; bh_arr_each(AstTyped *, parg, call->args.values) { AstArgument* arg = (AstArgument *) *parg; if (arg->is_baked) continue; - b32 place_on_stack = 0; + b32 place_on_stack = 0; - if (arg->va_kind != VA_Kind_Not_VA) { - if (vararg_offset == 0xffffffff) vararg_offset = stack_grow_amm; + if (type_get_param_pass(arg->value->type) == Param_Pass_By_Implicit_Pointer) { + // This arguments needs to be written to the stack because it is not a simple structure. place_on_stack = 1; } - if (type_get_param_pass(arg->value->type) == Param_Pass_By_Implicit_Pointer) place_on_stack = 1; - if (place_on_stack) WID(WI_GLOBAL_GET, stack_top_idx); - - if (stack_grow_amm != 0) { - stack_top_store_local = local_raw_allocate(mod->local_alloc, WASM_TYPE_PTR); - WID(WI_GLOBAL_GET, stack_top_idx); - WIL(WI_LOCAL_SET, stack_top_store_local); + if (arg->va_kind != VA_Kind_Not_VA) { + // This is a variadic argument and needs to be written to the stack. If the starting + // location of the vararg array hasn't been noted, note it. + if (vararg_offset < 0) vararg_offset = reserve_size; - WID(WI_GLOBAL_GET, stack_top_idx); - WID(WI_PTR_CONST, stack_grow_amm); - WI(WI_PTR_ADD); - WID(WI_GLOBAL_SET, stack_top_idx); + place_on_stack = 1; + vararg_count += 1; } - emit_expression(mod, &code, arg->value); - - if (stack_grow_amm != 0) { - WIL(WI_LOCAL_GET, stack_top_store_local); - WID(WI_GLOBAL_SET, stack_top_idx); + if (place_on_stack) WIL(WI_LOCAL_GET, stack_top_store_local); - local_raw_free(mod->local_alloc, WASM_TYPE_PTR); - } + emit_expression(mod, &code, arg->value); if (place_on_stack) { - emit_store_instruction(mod, &code, arg->value->type, stack_grow_amm); + emit_store_instruction(mod, &code, arg->value->type, reserve_size); - if (arg->va_kind != VA_Kind_Not_VA) vararg_count += 1; - else { - WID(WI_GLOBAL_GET, stack_top_idx); - WID(WI_PTR_CONST, stack_grow_amm); + if (arg->va_kind == VA_Kind_Not_VA) { + // Non-variadic arguments on the stack need a pointer to them placed on the WASM stack. + WIL(WI_LOCAL_GET, stack_top_store_local); + WID(WI_PTR_CONST, reserve_size); WI(WI_PTR_ADD); } - stack_grow_amm += type_size_of(arg->value->type); + reserve_size += type_size_of(arg->value->type); } } switch (call->va_kind) { case VA_Kind_Typed: { - WID(WI_GLOBAL_GET, stack_top_idx); - WID(WI_PTR_CONST, vararg_offset); + WIL(WI_LOCAL_GET, stack_top_store_local); + WID(WI_PTR_CONST, (u32) vararg_offset); WI(WI_PTR_ADD); WID(WI_I32_CONST, vararg_count); break; } case VA_Kind_Untyped: { - WID(WI_GLOBAL_GET, stack_top_idx); - WID(WI_GLOBAL_GET, stack_top_idx); + WIL(WI_LOCAL_GET, stack_top_store_local); + WIL(WI_LOCAL_GET, stack_top_store_local); WID(WI_PTR_CONST, vararg_offset); WI(WI_PTR_ADD); - emit_store_instruction(mod, &code, &basic_types[Basic_Kind_Rawptr], stack_grow_amm); + emit_store_instruction(mod, &code, &basic_types[Basic_Kind_Rawptr], reserve_size); // NOTE: There will be 4 uninitialized bytes here, because pointers are only 4 bytes in WASM. - WID(WI_GLOBAL_GET, stack_top_idx); + WIL(WI_LOCAL_GET, stack_top_store_local); WID(WI_I32_CONST, vararg_count); - emit_store_instruction(mod, &code, &basic_types[Basic_Kind_I32], stack_grow_amm + 8); + emit_store_instruction(mod, &code, &basic_types[Basic_Kind_I32], reserve_size + 8); - WID(WI_GLOBAL_GET, stack_top_idx); - WID(WI_PTR_CONST, stack_grow_amm); + WIL(WI_LOCAL_GET, stack_top_store_local); + WID(WI_PTR_CONST, reserve_size); WI(WI_PTR_ADD); - stack_grow_amm += 12; + reserve_size += 12; break; } - - default: break; } CallingConvention cc = type_function_get_cc(call->callee->type); assert(cc != CC_Undefined); - b32 needs_stack = (cc == CC_Return_Stack) || (stack_grow_amm > 0); - Type* return_type = call->callee->type->Function.return_type; u32 return_size = type_size_of(return_type); - u32 return_align = type_alignment_of(return_type); - bh_align(return_size, return_align); + assert(return_size % type_alignment_of(return_type) == 0); - if (cc == CC_Return_Stack) { - bh_align(stack_grow_amm, return_align); - stack_grow_amm += return_size; - } - - bh_align(stack_grow_amm, 16); - - if (needs_stack) { - WID(WI_GLOBAL_GET, stack_top_idx); - WID(WI_PTR_CONST, stack_grow_amm); - WI(WI_PTR_ADD); - WID(WI_GLOBAL_SET, stack_top_idx); - } + if (cc == CC_Return_Stack) reserve_size += return_size; if (call->callee->kind == Ast_Kind_Function) { i32 func_idx = (i32) bh_imap_get(&mod->index_map, (u64) call->callee); @@ -1461,18 +1474,23 @@ EMIT_FUNC(call, AstCall* call) { WID(WI_CALL_INDIRECT, ((WasmInstructionData) { type_idx, 0x00 })); } - if (needs_stack) { - WID(WI_GLOBAL_GET, stack_top_idx); - WID(WI_PTR_CONST, stack_grow_amm); - WI(WI_PTR_SUB); + if (reserve_size > 0) { + WIL(WI_LOCAL_GET, stack_top_store_local); WID(WI_GLOBAL_SET, stack_top_idx); + + bh_align(reserve_size, 16); + code[reserve_space_patch + 2].data.l = reserve_size; + + } else { + fori (i, 0, 5) code[reserve_space_patch + i].type = WI_NOP; } if (cc == CC_Return_Stack) { WID(WI_GLOBAL_GET, stack_top_idx); - emit_load_instruction(mod, &code, return_type, stack_grow_amm - return_size); + emit_load_instruction(mod, &code, return_type, reserve_size - return_size); } + local_raw_free(mod->local_alloc, WASM_TYPE_PTR); *pcode = code; } -- 2.25.1