From c90ef365c8edce2ebd885a6c29d0d9c4a546ec9b Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 13 Aug 2020 08:21:10 -0500 Subject: [PATCH] Added a local allocator to better manage WASM locals --- docs/plan | 10 +- include/onyxastnodes.h | 2 +- include/onyxsempass.h | 9 +- include/onyxwasm.h | 24 +-- onyx | Bin 395392 -> 401832 bytes progs/heap_resize_test.onyx | 31 ++++ src/onyxchecker.c | 2 + src/onyxparser.c | 1 + src/onyxsempass.c | 4 + src/onyxsymres.c | 24 +-- src/onyxwasm.c | 293 +++++++++++++++++++++++++----------- 11 files changed, 270 insertions(+), 130 deletions(-) diff --git a/docs/plan b/docs/plan index 316d6f7d..d56405af 100644 --- a/docs/plan +++ b/docs/plan @@ -168,14 +168,18 @@ HOW: __stack_top etc - [ ] multiple return values + [X] local variable allocator + + [ ] Struct literals + + [ ] 'use' enums and packages at an arbitrary scope [ ] multiple lvals and compound assignment a := 2 b := 5 a, b = b, a; - [ ] 'use' enums and packages at an arbitrary scope + [ ] multiple return values [ ] All code paths return correct value @@ -197,8 +201,6 @@ HOW: [ ] Array literals - [ ] Struct literals - [ ] Top level variable initialization - Works for numeric literals diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index 8af55706..7fb649f6 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -288,7 +288,7 @@ struct AstBreak { AstNode_base; u64 count; }; struct AstContinue { AstNode_base; u64 count; }; // Structure Nodes -struct AstBlock { AstNode_base; AstNode *body; Scope *scope; }; +struct AstBlock { AstNode_base; AstNode *body; Scope *scope; bh_arr(AstLocal *) locals; }; struct AstWhile { AstNode_base; AstTyped *cond; AstBlock *stmt; }; struct AstDefer { AstNode_base; AstNode *stmt; }; struct AstFor { diff --git a/include/onyxsempass.h b/include/onyxsempass.h index ea504989..7dbed0a3 100644 --- a/include/onyxsempass.h +++ b/include/onyxsempass.h @@ -16,10 +16,11 @@ typedef struct SemState { ProgramInfo* program; // NOTE: Used in symbol resolution phase - Package* curr_package; - Scope* global_scope; - Scope* curr_scope; - AstFunction* curr_function; + Package* curr_package; + Scope* global_scope; + Scope* curr_scope; + AstFunction* curr_function; + bh_arr(AstBlock *) block_stack; // NOTE: Used in type checking phase Type* expected_return_type; diff --git a/include/onyxwasm.h b/include/onyxwasm.h index b7998c82..b99798ad 100644 --- a/include/onyxwasm.h +++ b/include/onyxwasm.h @@ -243,16 +243,20 @@ typedef struct WasmInstruction { WasmInstructionData data; } WasmInstruction; -typedef struct WasmFuncLocals { - u8 i32_count; - u8 i64_count; - u8 f32_count; - u8 f64_count; -} WasmFuncLocals; +#define LOCAL_IS_WASM 0x8000000000000 +typedef struct LocalAllocator { + u32 param_count; + + u32 allocated[4]; + u32 freed[4]; + + i32 max_stack; + i32 curr_stack; +} LocalAllocator; typedef struct WasmFunc { i32 type_idx; - WasmFuncLocals locals; + LocalAllocator locals; bh_arr(WasmInstruction) code; } WasmFunc; @@ -290,8 +294,6 @@ typedef struct DeferredStmt { AstNode *stmt; } DeferredStmt; -#define LOCAL_IS_WASM 0x8000000000000 - typedef struct OnyxWasmModule { bh_allocator allocator; @@ -301,6 +303,8 @@ typedef struct OnyxWasmModule { // NOTE: Mapping from local ast node ptrs to indicies or offsets, depending on the mode bh_imap local_map; + LocalAllocator* local_alloc; + // NOTE: Mapping ptrs to elements bh_imap elem_map; @@ -335,7 +339,7 @@ typedef struct OnyxWasmModule { u32 next_elem_idx; i32 *stack_top_ptr; - u32 stack_base_idx; + u64 stack_base_idx; b32 has_stack_locals : 1; } OnyxWasmModule; diff --git a/onyx b/onyx index 3c14e98c5508af1d376e953cb8d0b63a1bd1a131..1d3ffad0b2d7fcb3ba9294343118b8a8df8058f3 100755 GIT binary patch delta 155543 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 z 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 veSLai@+}95qC-2PXbeAw^^H$&J9%Fyebi2 delta 149866 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 az3=Qfipn$lBm>7LztiI=)vS}CH~Bw$eL;u- diff --git a/progs/heap_resize_test.onyx b/progs/heap_resize_test.onyx index a81de580..94af0da8 100644 --- a/progs/heap_resize_test.onyx +++ b/progs/heap_resize_test.onyx @@ -26,6 +26,37 @@ proc #export "start" { v.x = 10; v.y = 100; + if false { + v : Vec2; + v2 : Vec2; + + x := 1; + y := 1.0f; + z := 1.0; + w := 1.0f; + } + if false { + v : Vec2; + + x := 1; + y := 1.0f; + z := 1.0; + } + if false { + v : Vec2; + + x := 1; + y := 1.0f; + z := 1.0; + } + if false { + v : Vec2; + + x := 1; + y := 1.0f; + z := 1.0; + } + other(^v) |> print(); } diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 99292d96..a1999947 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -882,6 +882,8 @@ CHECK(block, AstBlock* block) { if (check_statement_chain(block->body)) return 1; bh_table_each_start(AstTyped *, block->scope->symbols); + fill_in_type(value); + if (value->type == NULL) { onyx_message_add(Msg_Type_Unresolved_Type, value->token->pos, diff --git a/src/onyxparser.c b/src/onyxparser.c index f0d0279b..3187a492 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -865,6 +865,7 @@ static AstNode* parse_statement(OnyxParser* parser) { // '{' '}' static AstBlock* parse_block(OnyxParser* parser) { AstBlock* block = make_node(AstBlock, Ast_Kind_Block); + bh_arr_new(global_heap_allocator, block->locals, 4); // NOTE: --- is for an empty block if (parser->curr->type == Token_Type_Empty_Block) { diff --git a/src/onyxsempass.c b/src/onyxsempass.c index 4362dc7b..a29be082 100644 --- a/src/onyxsempass.c +++ b/src/onyxsempass.c @@ -12,8 +12,12 @@ void onyx_sempass_init(bh_allocator alloc, bh_allocator node_alloc) { .global_scope = NULL, .curr_scope = NULL, + .block_stack = NULL, + .defer_allowed = 1, }; + + bh_arr_new(global_heap_allocator, semstate.block_stack, 4); } void onyx_sempass(ProgramInfo* program) { diff --git a/src/onyxsymres.c b/src/onyxsymres.c index cf9e0a3a..83cc6091 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -114,8 +114,9 @@ static AstType* symres_type(AstType* type) { static void symres_local(AstLocal** local) { (*local)->type_node = symres_type((*local)->type_node); + bh_arr_push(bh_arr_last(semstate.block_stack)->locals, *local); bh_arr_push(semstate.curr_function->locals, *local); - + symbol_introduce(semstate.curr_scope, (*local)->token, (AstNode *) *local); } @@ -123,24 +124,6 @@ static void symres_call(AstCall* call) { symres_expression((AstTyped **) &call->callee); if (call->callee == NULL) return; - // NOTE: Disabling UFC now. Causes too many problems. - // Especially since structs can have function pointers as members, - // so x.y(...) is ambiguous. - // - // if (call->callee->kind == Ast_Kind_Field_Access) { - // AstFieldAccess* fa = (AstFieldAccess *) call->callee; - // if (fa->expr == NULL) return; - - // AstArgument* implicit_arg = onyx_ast_node_new(semstate.node_allocator, sizeof(AstArgument), Ast_Kind_Argument); - // implicit_arg->value = fa->expr; - // implicit_arg->token = fa->expr->token; - // implicit_arg->next = (AstNode *) call->arguments; - - // call->callee = (AstTyped *) symbol_resolve(semstate.curr_scope, fa->token); - // call->arguments = implicit_arg; - // call->arg_count++; - // } - symres_statement_chain((AstNode **) &call->arguments); } @@ -285,7 +268,6 @@ static void symres_for(AstFor* fornode) { fornode->scope = scope_create(semstate.node_allocator, semstate.curr_scope); scope_enter(fornode->scope); - bh_arr_push(semstate.curr_function->locals, fornode->var); symbol_introduce(semstate.curr_scope, fornode->var->token, (AstNode *) fornode->var); symres_expression(&fornode->start); @@ -334,10 +316,12 @@ static void symres_block(AstBlock* block) { block->scope = scope_create(semstate.node_allocator, semstate.curr_scope); scope_enter(block->scope); + bh_arr_push(semstate.block_stack, block); if (block->body) symres_statement_chain(&block->body); + bh_arr_pop(semstate.block_stack); scope_leave(); } diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 452119a6..3d3e9074 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -242,8 +242,101 @@ static WasmType onyx_type_to_wasm_type(Type* type) { static i32 generate_type_idx(OnyxWasmModule* mod, Type* ft); static i32 get_element_idx(OnyxWasmModule* mod, AstFunction* func); +#define LOCAL_I32 0x000000000 +#define LOCAL_I64 0x100000000 +#define LOCAL_F32 0x300000000 +#define LOCAL_F64 0x700000000 + +static b32 local_is_wasm_local(AstLocal* local) { + if (local->flags & Ast_Flag_Address_Taken) return 0; + if (local->type->kind == Type_Kind_Basic) return 1; + if (local->type->kind == Type_Kind_Pointer) return 1; + return 0; +} + +static u64 local_raw_allocate(LocalAllocator* la, WasmType wt) { + i32 idx = 0; + if (wt == WASM_TYPE_INT32) idx = 0; + if (wt == WASM_TYPE_INT64) idx = 1; + if (wt == WASM_TYPE_FLOAT32) idx = 2; + if (wt == WASM_TYPE_FLOAT64) idx = 3; + + u64 flag_bits = LOCAL_IS_WASM; + if (wt == WASM_TYPE_INT32) flag_bits |= LOCAL_I32; + if (wt == WASM_TYPE_INT64) flag_bits |= LOCAL_I64; + if (wt == WASM_TYPE_FLOAT32) flag_bits |= LOCAL_F32; + if (wt == WASM_TYPE_FLOAT64) flag_bits |= LOCAL_F64; + + if (la->freed[idx] > 0) { + la->freed[idx]--; + return flag_bits | ((u64) (la->allocated[idx] - la->freed[idx] - 1 + la->param_count)); + + } else { + la->allocated[idx]++; + return flag_bits | ((u64) (la->allocated[idx] - 1 + la->param_count)); + } +} + +static u64 local_allocate(LocalAllocator* la, AstLocal* local) { + if (local_is_wasm_local(local)) { + WasmType wt = onyx_type_to_wasm_type(local->type); + return local_raw_allocate(la, wt); + + } else { + u32 size = type_size_of(local->type); + u32 alignment = type_alignment_of(local->type); + if (size % alignment != 0) + size += alignment - (size % alignment); + + if (la->max_stack - la->curr_stack >= size) { + la->curr_stack += size; + } else { + la->max_stack += size - (la->max_stack - la->curr_stack); + la->curr_stack = la->max_stack; + } + + return la->curr_stack - size; + } +} + +static void local_free(LocalAllocator* la, AstLocal* local) { + if (local_is_wasm_local(local)) { + i32 idx = 0; + + WasmType wt = onyx_type_to_wasm_type(local->type); + if (wt == WASM_TYPE_INT32) idx = 0; + if (wt == WASM_TYPE_INT64) idx = 1; + if (wt == WASM_TYPE_FLOAT32) idx = 2; + if (wt == WASM_TYPE_FLOAT64) idx = 3; + + assert(la->allocated[idx] > 0 && la->freed[idx] < la->allocated[idx]); + + la->freed[idx]++; + + } else { + u32 size = type_size_of(local->type); + u32 alignment = type_alignment_of(local->type); + if (size % alignment != 0) + size += alignment - (size % alignment); + + la->curr_stack -= size; + } +} + +static u64 local_lookup_idx(LocalAllocator* la, u64 value) { + assert(value & LOCAL_IS_WASM); + + u32 idx = value & 0xFFFFFFFF; + if (value & 0x100000000) idx += la->allocated[0]; + if (value & 0x200000000) idx += la->allocated[1]; + if (value & 0x400000000) idx += la->allocated[2]; + + return (u64) idx; +} + #define WI(instr) bh_arr_push(code, ((WasmInstruction){ instr, 0x00 })) #define WID(instr, data) bh_arr_push(code, ((WasmInstruction){ instr, data })) +#define WIL(instr, data) bh_arr_push(code, ((WasmInstruction){ instr, { .l = data } })) #define COMPILE_FUNC(kind, ...) static void compile_ ## kind (OnyxWasmModule* mod, bh_arr(WasmInstruction)* pcode, __VA_ARGS__) COMPILE_FUNC(function_body, AstFunction* fd); @@ -275,18 +368,27 @@ COMPILE_FUNC(function_body, AstFunction* fd) { bh_arr(WasmInstruction) code = *pcode; + bh_arr_each(AstLocal *, local, fd->body->locals) + bh_imap_put(&mod->local_map, (u64) *local, local_allocate(mod->local_alloc, *local)); + forll (AstNode, stmt, fd->body->body, next) { compile_statement(mod, &code, stmt); } compile_deferred_stmts(mod, &code, (AstNode *) fd); + bh_arr_each(AstLocal *, local, fd->body->locals) + local_free(mod->local_alloc, *local); + *pcode = code; } COMPILE_FUNC(block, AstBlock* block) { bh_arr(WasmInstruction) code = *pcode; + bh_arr_each(AstLocal *, local, block->locals) + bh_imap_put(&mod->local_map, (u64) *local, local_allocate(mod->local_alloc, *local)); + bh_arr_push(mod->structured_jump_target, 1); WID(WI_BLOCK_START, 0x40); @@ -299,6 +401,9 @@ COMPILE_FUNC(block, AstBlock* block) { WI(WI_BLOCK_END); bh_arr_pop(mod->structured_jump_target); + bh_arr_each(AstLocal *, local, block->locals) + local_free(mod->local_alloc, *local); + *pcode = code; } @@ -356,9 +461,9 @@ COMPILE_FUNC(assignment, AstBinaryOp* assign) { if (lval->kind == Ast_Kind_Local) { if (bh_imap_get(&mod->local_map, (u64) lval) & LOCAL_IS_WASM) { - u32 localidx = (u32) (bh_imap_get(&mod->local_map, (u64) lval) & ~LOCAL_IS_WASM); + u64 localidx = bh_imap_get(&mod->local_map, (u64) lval); compile_expression(mod, &code, assign->right); - WID(WI_LOCAL_SET, localidx); + WIL(WI_LOCAL_SET, localidx); } else { u64 offset = 0; @@ -510,9 +615,15 @@ COMPILE_FUNC(if, AstIf* if_node) { bh_arr_push(mod->structured_jump_target, 0); if (if_node->true_stmt) { + bh_arr_each(AstLocal *, local, if_node->true_stmt->locals) + bh_imap_put(&mod->local_map, (u64) *local, local_allocate(mod->local_alloc, *local)); + forll (AstNode, stmt, if_node->true_stmt->body, next) { compile_statement(mod, &code, stmt); } + + bh_arr_each(AstLocal *, local, if_node->true_stmt->locals) + local_free(mod->local_alloc, *local); } if (if_node->false_stmt) { @@ -521,9 +632,15 @@ COMPILE_FUNC(if, AstIf* if_node) { if (if_node->false_stmt->kind == Ast_Kind_If) { compile_if(mod, &code, (AstIf *) if_node->false_stmt); } else { + bh_arr_each(AstLocal *, local, ((AstBlock *) if_node->false_stmt)->locals) + bh_imap_put(&mod->local_map, (u64) *local, local_allocate(mod->local_alloc, *local)); + forll (AstNode, stmt, ((AstBlock *) if_node->false_stmt)->body, next) { compile_statement(mod, &code, stmt); } + + bh_arr_each(AstLocal *, local, ((AstBlock *) if_node->false_stmt)->locals) + local_free(mod->local_alloc, *local); } } @@ -549,10 +666,16 @@ COMPILE_FUNC(while, AstWhile* while_node) { bh_arr_push(mod->structured_jump_target, 1); bh_arr_push(mod->structured_jump_target, 2); + bh_arr_each(AstLocal *, local, while_node->stmt->locals) + bh_imap_put(&mod->local_map, (u64) *local, local_allocate(mod->local_alloc, *local)); + forll (AstNode, stmt, while_node->stmt->body, next) { compile_statement(mod, &code, stmt); } + bh_arr_each(AstLocal *, local, while_node->stmt->locals) + local_free(mod->local_alloc, *local); + compile_deferred_stmts(mod, &code, (AstNode *) while_node); bh_arr_pop(mod->structured_jump_target); @@ -570,9 +693,10 @@ COMPILE_FUNC(for, AstFor* for_node) { bh_arr(WasmInstruction) code = *pcode; AstLocal* var = for_node->var; - u64 tmp = bh_imap_get(&mod->local_map, (u64) var); + u64 tmp = local_allocate(mod->local_alloc, var); + bh_imap_put(&mod->local_map, (u64) var, tmp); + b32 it_is_local = (b32) ((tmp & LOCAL_IS_WASM) != 0); - u32 it_idx = (u32) (tmp & ~LOCAL_IS_WASM); u64 offset = 0; WasmType var_type = onyx_type_to_wasm_type(for_node->var->type); @@ -582,7 +706,7 @@ COMPILE_FUNC(for, AstFor* for_node) { if (it_is_local) { compile_expression(mod, &code, for_node->start); - WID(WI_LOCAL_SET, it_idx); + WIL(WI_LOCAL_SET, tmp); } else { compile_local_location(mod, &code, var, &offset); compile_expression(mod, &code, for_node->start); @@ -596,7 +720,7 @@ COMPILE_FUNC(for, AstFor* for_node) { bh_arr_push(mod->structured_jump_target, 2); if (it_is_local) { - WID(WI_LOCAL_GET, it_idx); + WIL(WI_LOCAL_GET, tmp); } else { offset = 0; compile_local_location(mod, &code, var, &offset); @@ -606,15 +730,21 @@ COMPILE_FUNC(for, AstFor* for_node) { WI(ge_instr); WID(WI_COND_JUMP, 0x01); + bh_arr_each(AstLocal *, local, for_node->stmt->locals) + bh_imap_put(&mod->local_map, (u64) *local, local_allocate(mod->local_alloc, *local)); + forll (AstNode, stmt, for_node->stmt->body, next) { compile_statement(mod, &code, stmt); } + bh_arr_each(AstLocal *, local, for_node->stmt->locals) + local_free(mod->local_alloc, *local); + if (it_is_local) { - WID(WI_LOCAL_GET, it_idx); + WIL(WI_LOCAL_GET, tmp); compile_expression(mod, &code, for_node->step); WI(add_instr); - WID(WI_LOCAL_SET, it_idx); + WIL(WI_LOCAL_SET, tmp); } else { offset = 0; compile_local_location(mod, &code, var, &offset); @@ -636,6 +766,8 @@ COMPILE_FUNC(for, AstFor* for_node) { WI(WI_LOOP_END); WI(WI_BLOCK_END); + local_free(mod->local_alloc, var); + *pcode = code; } @@ -943,9 +1075,10 @@ COMPILE_FUNC(field_access_location, AstFieldAccess* field, u64* offset_return) { COMPILE_FUNC(local_location, AstLocal* local, u64* offset_return) { bh_arr(WasmInstruction) code = *pcode; - i32 local_offset = (i32) bh_imap_get(&mod->local_map, (u64) local); + u64 local_offset = (u64) bh_imap_get(&mod->local_map, (u64) local); + assert((local_offset & (LOCAL_IS_WASM | LOCAL_F64)) == 0); - WID(WI_LOCAL_GET, mod->stack_base_idx); + WIL(WI_LOCAL_GET, mod->stack_base_idx); *offset_return += local_offset; @@ -982,16 +1115,17 @@ COMPILE_FUNC(expression, AstTyped* expr) { switch (expr->kind) { case Ast_Kind_Param: { - i32 localidx = (i32) bh_imap_get(&mod->local_map, (u64) expr); + u64 localidx = bh_imap_get(&mod->local_map, (u64) expr); - WID(WI_LOCAL_GET, localidx); + WIL(WI_LOCAL_GET, localidx); break; } case Ast_Kind_Local: { u64 tmp = bh_imap_get(&mod->local_map, (u64) expr); if (tmp & LOCAL_IS_WASM) { - WID(WI_LOCAL_GET, (u32) (tmp & ~LOCAL_IS_WASM)); + WIL(WI_LOCAL_GET, tmp); + } else { if (expr->type->kind == Type_Kind_Struct) { compile_struct_load(mod, &code, expr); @@ -1155,9 +1289,9 @@ COMPILE_FUNC(expression, AstTyped* expr) { type_struct_lookup_member(field->expr->type, field->token->text, &smem); token_toggle_end(field->token); - i32 localidx = (i32) bh_imap_get(&mod->local_map, (u64) field->expr) + smem.idx; + u64 localidx = bh_imap_get(&mod->local_map, (u64) field->expr) + smem.idx; - WID(WI_LOCAL_GET, localidx); + WIL(WI_LOCAL_GET, localidx); break; } @@ -1353,13 +1487,14 @@ COMPILE_FUNC(return, AstReturn* ret) { COMPILE_FUNC(stack_enter, u64 stacksize) { bh_arr(WasmInstruction) code = *pcode; - u32 stack_top_idx = bh_imap_get(&mod->index_map, (u64) &builtin_stack_top); + u64 stack_top_idx = bh_imap_get(&mod->index_map, (u64) &builtin_stack_top); - WID(WI_GLOBAL_GET, stack_top_idx); - WID(WI_LOCAL_TEE, mod->stack_base_idx); - WID(WI_I32_CONST, stacksize); - WI(WI_I32_ADD); - WID(WI_GLOBAL_SET, stack_top_idx); + // HACK: slightly... There will be space for 5 instructions + code[0] = (WasmInstruction) { WI_GLOBAL_GET, { .l = stack_top_idx } }; + code[1] = (WasmInstruction) { WI_LOCAL_TEE, { .l = mod->stack_base_idx} }; + code[2] = (WasmInstruction) { WI_I32_CONST, { .l = stacksize } }; + code[3] = (WasmInstruction) { WI_I32_ADD, 0 }; + code[4] = (WasmInstruction) { WI_GLOBAL_SET, { .l = stack_top_idx } }; *pcode = code; } @@ -1367,9 +1502,9 @@ COMPILE_FUNC(stack_enter, u64 stacksize) { COMPILE_FUNC(stack_leave, u32 unused) { bh_arr(WasmInstruction) code = *pcode; - u32 stack_top_idx = bh_imap_get(&mod->index_map, (u64) &builtin_stack_top); + u32 stack_top_idx = bh_imap_get(&mod->index_map, (u64) &builtin_stack_top); - WID(WI_LOCAL_GET, mod->stack_base_idx); + WIL(WI_LOCAL_GET, mod->stack_base_idx); WID(WI_GLOBAL_SET, stack_top_idx); *pcode = code; @@ -1462,12 +1597,6 @@ static inline b32 should_compile_function(AstFunction* fd) { return 1; } -static b32 local_is_wasm_local(AstLocal* local) { - if (local->flags & Ast_Flag_Address_Taken) return 0; - if (local->type->kind == Type_Kind_Basic) return 1; - if (local->type->kind == Type_Kind_Pointer) return 1; - return 0; -} static void compile_function(OnyxWasmModule* mod, AstFunction* fd) { if (!should_compile_function(fd)) return; @@ -1489,10 +1618,13 @@ static void compile_function(OnyxWasmModule* mod, AstFunction* fd) { WasmFunc wasm_func = { .type_idx = type_idx, .locals = { - .i32_count = 1, // NOTE: for the old stack base - .i64_count = 0, - .f32_count = 0, - .f64_count = 0, + .param_count = 0, + + .allocated = { 0 }, + .freed = { 0 }, + + .max_stack = 0, + .curr_stack = 0, }, .code = NULL, }; @@ -1520,7 +1652,7 @@ static void compile_function(OnyxWasmModule* mod, AstFunction* fd) { u64 localidx = 0; for (AstLocal *param = fd->params; param != NULL; param = (AstLocal *) param->next) { if (param->type->kind == Type_Kind_Struct) { - bh_imap_put(&mod->local_map, (u64) param, localidx); + bh_imap_put(&mod->local_map, (u64) param, localidx | LOCAL_IS_WASM); localidx += param->type->Struct.mem_count; } else { @@ -1528,54 +1660,27 @@ static void compile_function(OnyxWasmModule* mod, AstFunction* fd) { } } - static const WasmType local_types[4] = { WASM_TYPE_INT32, WASM_TYPE_INT64, WASM_TYPE_FLOAT32, WASM_TYPE_FLOAT64 }; - - mod->stack_base_idx = localidx++; - - // HACK: This assumes that the order of the count members - // is the same as the order of the local_types above - u8* count = &wasm_func.locals.i32_count; - fori (ti, 0, 3) { - bh_arr_each(AstLocal *, local, fd->locals) { - if (!local_is_wasm_local(*local)) continue; - - if (onyx_type_to_wasm_type((*local)->type) == local_types[ti]) { - bh_imap_put(&mod->local_map, (u64) *local, localidx++ | LOCAL_IS_WASM); + mod->local_alloc = &wasm_func.locals; + mod->local_alloc->param_count = localidx; - (*count)++; - } - } + mod->stack_base_idx = local_raw_allocate(mod->local_alloc, WASM_TYPE_INT32); - count++; - } - - b32 has_stack_locals = 0; - u64 offset = 0; - bh_arr_each(AstLocal *, local, fd->locals) { - if (local_is_wasm_local(*local)) continue; + mod->has_stack_locals = 0; + bh_arr_each(AstLocal *, local, fd->locals) + mod->has_stack_locals |= !local_is_wasm_local(*local); - has_stack_locals = 1; - u32 size = type_size_of((*local)->type); - u32 align = type_alignment_of((*local)->type); - if (offset % align != 0) - offset += align - (offset % align); - - bh_imap_put(&mod->local_map, (u64) *local, offset); - offset += size; - } - - if (offset % 16 != 0) - offset += 16 - (offset % 16); + if (mod->has_stack_locals) + // NOTE: '5' needs to match the number of instructions it takes + // to setup a stack frame + bh_arr_insert_end(wasm_func.code, 5); // Generate code - if (has_stack_locals) - compile_stack_enter(mod, &wasm_func.code, (u64) offset); - - mod->has_stack_locals = has_stack_locals; compile_function_body(mod, &wasm_func.code, fd); - if (has_stack_locals) + if (mod->has_stack_locals) { + compile_stack_enter(mod, &wasm_func.code, mod->local_alloc->max_stack); compile_stack_leave(mod, &wasm_func.code, 0); + } } bh_arr_push(wasm_func.code, ((WasmInstruction){ WI_BLOCK_END, 0x00 })); @@ -1967,7 +2072,7 @@ typedef i32 vector_func(void*, bh_buffer*); static const u8 WASM_MAGIC_STRING[] = { 0x00, 0x61, 0x73, 0x6D }; static const u8 WASM_VERSION[] = { 0x01, 0x00, 0x00, 0x00 }; -static void output_instruction(WasmInstruction* instr, bh_buffer* buff); +static void output_instruction(WasmFunc* func, WasmInstruction* instr, bh_buffer* buff); static i32 output_vector(void** arr, i32 stride, i32 arrlen, vector_func elem, bh_buffer* vec_buff) { i32 len; @@ -2142,7 +2247,7 @@ static i32 output_globalsection(OnyxWasmModule* module, bh_buffer* buff) { bh_buffer_write_byte(&vec_buff, 0x01); bh_arr_each(WasmInstruction, instr, global->initial_value) - output_instruction(instr, &vec_buff); + output_instruction(NULL, instr, &vec_buff); // NOTE: Initial value expression terminator bh_buffer_write_byte(&vec_buff, (u8) WI_BLOCK_END); @@ -2294,32 +2399,32 @@ static i32 output_locals(WasmFunc* func, bh_buffer* buff) { // NOTE: Output vector length i32 total_locals = - (i32) (func->locals.i32_count != 0) + - (i32) (func->locals.i64_count != 0) + - (i32) (func->locals.f32_count != 0) + - (i32) (func->locals.f64_count != 0); + (i32) (func->locals.allocated[0] != 0) + + (i32) (func->locals.allocated[1] != 0) + + (i32) (func->locals.allocated[2] != 0) + + (i32) (func->locals.allocated[3] != 0); i32 leb_len; u8* leb = uint_to_uleb128((u64) total_locals, &leb_len); bh_buffer_append(buff, leb, leb_len); - if (func->locals.i32_count != 0) { - leb = uint_to_uleb128((u64) func->locals.i32_count, &leb_len); + if (func->locals.allocated[0] != 0) { + leb = uint_to_uleb128((u64) func->locals.allocated[0], &leb_len); bh_buffer_append(buff, leb, leb_len); bh_buffer_write_byte(buff, WASM_TYPE_INT32); } - if (func->locals.i64_count != 0) { - leb = uint_to_uleb128((u64) func->locals.i64_count, &leb_len); + if (func->locals.allocated[1] != 0) { + leb = uint_to_uleb128((u64) func->locals.allocated[1], &leb_len); bh_buffer_append(buff, leb, leb_len); bh_buffer_write_byte(buff, WASM_TYPE_INT64); } - if (func->locals.f32_count != 0) { - leb = uint_to_uleb128((u64) func->locals.f32_count, &leb_len); + if (func->locals.allocated[2] != 0) { + leb = uint_to_uleb128((u64) func->locals.allocated[2], &leb_len); bh_buffer_append(buff, leb, leb_len); bh_buffer_write_byte(buff, WASM_TYPE_FLOAT32); } - if (func->locals.f64_count != 0) { - leb = uint_to_uleb128((u64) func->locals.f64_count, &leb_len); + if (func->locals.allocated[3] != 0) { + leb = uint_to_uleb128((u64) func->locals.allocated[3], &leb_len); bh_buffer_append(buff, leb, leb_len); bh_buffer_write_byte(buff, WASM_TYPE_FLOAT64); } @@ -2327,7 +2432,7 @@ static i32 output_locals(WasmFunc* func, bh_buffer* buff) { return buff->length - prev_len; } -static void output_instruction(WasmInstruction* instr, bh_buffer* buff) { +static void output_instruction(WasmFunc* func, WasmInstruction* instr, bh_buffer* buff) { i32 leb_len; u8* leb; @@ -2336,7 +2441,13 @@ static void output_instruction(WasmInstruction* instr, bh_buffer* buff) { switch (instr->type) { case WI_LOCAL_GET: case WI_LOCAL_SET: - case WI_LOCAL_TEE: + case WI_LOCAL_TEE: { + u64 actual_idx = local_lookup_idx(&func->locals, instr->data.l); + leb = uint_to_uleb128(actual_idx, &leb_len); + bh_buffer_append(buff, leb, leb_len); + break; + } + case WI_GLOBAL_GET: case WI_GLOBAL_SET: case WI_CALL: @@ -2411,7 +2522,7 @@ static i32 output_code(WasmFunc* func, bh_buffer* buff) { output_locals(func, &code_buff); // Output code - bh_arr_each(WasmInstruction, instr, func->code) output_instruction(instr, &code_buff); + bh_arr_each(WasmInstruction, instr, func->code) output_instruction(func, instr, &code_buff); i32 leb_len; u8* leb = uint_to_uleb128((u64) code_buff.length, &leb_len); -- 2.25.1