From bfe5f2673f14c30e74614b9aa8dd77432648e487 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 17 Aug 2020 20:23:49 -0500 Subject: [PATCH] added returning structs; much easier than anticipated --- core/alloc.onyx | 9 ---- docs/plan | 16 +++---- include/onyxastnodes.h | 13 ++++++ include/onyxwasm.h | 1 + onyx | Bin 410696 -> 412288 bytes progs/stack_based.onyx | 17 +++----- src/onyxwasm.c | 92 ++++++++++++++++++++++++++++++++++++----- 7 files changed, 107 insertions(+), 41 deletions(-) diff --git a/core/alloc.onyx b/core/alloc.onyx index e70f900d..377b7589 100644 --- a/core/alloc.onyx +++ b/core/alloc.onyx @@ -206,15 +206,6 @@ scratch_alloc_init :: proc (a: ^Allocator, ss: ^ScratchState) { } -#private return_scratch_size :: 256 -#private return_scratch_buff : [return_scratch_size] u8 -#private return_scratch_state : ScratchState; - -return_scratch_alloc : Allocator; - memory_init :: proc { heap_init(); - - scratch_state_init(^return_scratch_state, return_scratch_buff, return_scratch_size); - scratch_alloc_init(^return_scratch_alloc, ^return_scratch_state); } \ No newline at end of file diff --git a/docs/plan b/docs/plan index 614d56fe..2f58f7e8 100644 --- a/docs/plan +++ b/docs/plan @@ -181,6 +181,12 @@ HOW: [X] #size on structs + [X] multiple return value + - Returning on the stack + + [X] returning structs + - This will put forward a lot of the work that will be done for multiple return values + [ ] 'use' enums and packages at an arbitrary scope [ ] 'when' statements @@ -215,16 +221,6 @@ HOW: - Dynamic resizing? - They are just very hard to use at the moment - [ ] multiple return values - - THIS IS NOT GOING TO BE FUN. - - Wasm multi-value proposal is not finalized and nothing has implemented it yet - - This means other methods of returning multiple things would be needed: - - globals - - on the stack - - [ ] returning structs - - This will put forward a lot of the work that will be done for multiple return values - [X] Start work on evaluating compile time known values. - An expression marked COMPTIME will be reduced to its value in the parse tree. diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index ca9e7499..06225a02 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -240,6 +240,12 @@ typedef enum OnyxIntrinsic { ONYX_INTRINSIC_F64_COPYSIGN, } OnyxIntrinsic; +typedef enum CallingConvention { + CC_Undefined, + CC_Return_Wasm, + CC_Return_Stack +} CallingConvention; + // Base Nodes #define AstNode_members { \ @@ -543,4 +549,11 @@ static inline b32 node_is_type(AstNode* node) { return (node->kind > Ast_Kind_Type_Start) && (node->kind < Ast_Kind_Type_End); } +static inline CallingConvention type_function_get_cc(Type* type) { + if (type == NULL) return CC_Undefined; + if (type->kind != Type_Kind_Function) return CC_Undefined; + if (type->Function.return_type->kind == Type_Kind_Struct) return CC_Return_Stack; + return CC_Return_Wasm; +} + #endif // #ifndef ONYXASTNODES_H diff --git a/include/onyxwasm.h b/include/onyxwasm.h index b99798ad..c448a303 100644 --- a/include/onyxwasm.h +++ b/include/onyxwasm.h @@ -340,6 +340,7 @@ typedef struct OnyxWasmModule { i32 *stack_top_ptr; u64 stack_base_idx; + CallingConvention curr_cc; b32 has_stack_locals : 1; } OnyxWasmModule; diff --git a/onyx b/onyx index 3e28fe9aca207135d442f747dd302c725ed494b0..7e7a4a81acf136b808249de5dbd4dc6b857bbe9b 100755 GIT binary patch delta 112891 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

m)+AZ6hLfG-_bX-$yVMh>`BQmFNA@-S`bP_R>F8 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 diff --git a/progs/stack_based.onyx b/progs/stack_based.onyx index 5301b59a..8842eaff 100644 --- a/progs/stack_based.onyx +++ b/progs/stack_based.onyx @@ -60,12 +60,6 @@ mag_squared :: proc (use v: Vec3) -> i32 { return x * x + y * y + z * z; } -vec_add :: proc (v: Vec3, u: Vec3, use out: ^Vec3) { - x = v.x + u.x; - y = v.y + u.y; - z = v.z + u.z; -} - clamp :: proc (v: i32, lo: i32, hi: i32) -> i32 { if v < lo do return lo; if v > hi do return hi; @@ -154,7 +148,7 @@ start :: proc #export { mag_squared(varr[2]) |> print(); v1 := Vec3.{}; - v2 := *vadd(v1, Vec3.{ 0, 0, 0 }); + v2 := vmul(vadd(v1, Vec3.{ 1, 2, 3 }), 3); print(v2.x); print(v2.y); @@ -167,15 +161,16 @@ start :: proc #export { print_hex(cast(u64) un.i); } -vadd :: proc (v1: Vec3, v2: Vec3) -> ^Vec3 { - out := cast(^Vec3) alloc(return_scratch_alloc, sizeof Vec3); - *out = Vec3.{ +vadd :: proc (v1: Vec3, v2: Vec3) -> Vec3 { + return Vec3.{ x = v1.x + v2.x, y = v1.y + v2.y, z = v1.z + v2.z, }; +} - return out; +vmul :: proc (use v: Vec3, s: i32) -> Vec3 { + return Vec3.{ x = x * s, y = y * s, z = z * s }; } UnionTest :: struct #union { diff --git a/src/onyxwasm.c b/src/onyxwasm.c index fe1de9d3..f526e6b9 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -363,7 +363,8 @@ COMPILE_FUNC(field_access_location, AstFieldAccess* field, u64* offset_r COMPILE_FUNC(local_location, AstLocal* local, u64* offset_return); COMPILE_FUNC(memory_reservation_location, AstMemRes* memres); COMPILE_FUNC(struct_load, Type* type, u64 offset); -COMPILE_FUNC(struct_store, AstTyped* lval); +COMPILE_FUNC(struct_lval, AstTyped* lval); +COMPILE_FUNC(struct_store, Type* type, u64 offset); COMPILE_FUNC(struct_literal, AstStructLiteral* sl); COMPILE_FUNC(expression, AstTyped* expr); COMPILE_FUNC(cast, AstUnaryOp* cast); @@ -457,7 +458,7 @@ COMPILE_FUNC(assignment, AstBinaryOp* assign) { if (assign->right->type->kind == Type_Kind_Struct) { compile_expression(mod, &code, assign->right); - compile_struct_store(mod, &code, assign->left); + compile_struct_lval(mod, &code, assign->left); *pcode = code; return; @@ -526,9 +527,10 @@ COMPILE_FUNC(assignment, AstBinaryOp* assign) { COMPILE_FUNC(store_instruction, Type* type, u32 offset) { bh_arr(WasmInstruction) code = *pcode; - assert(("Should use compile_struct_store instead", type->kind != Type_Kind_Struct)); - - u32 alignment = type_get_alignment_log2(type); + if (type->kind == Type_Kind_Struct) { + compile_struct_store(mod, pcode, type, offset); + return; + } if (type->kind == Type_Kind_Enum) { type = type->Enum.backing; @@ -538,6 +540,8 @@ COMPILE_FUNC(store_instruction, Type* type, u32 offset) { type = &basic_types[Basic_Kind_U32]; } + u32 alignment = type_get_alignment_log2(type); + i32 store_size = type_size_of(type); i32 is_basic = type->kind == Type_Kind_Basic || type->kind == Type_Kind_Pointer; i32 is_pointer = is_basic && (type->Basic.flags & Basic_Flag_Pointer); @@ -909,9 +913,24 @@ COMPILE_FUNC(call, AstCall* call) { compile_expression(mod, &code, arg->value); } + CallingConvention cc = type_function_get_cc(call->callee->type); + assert(cc != CC_Undefined); + + Type* return_type = call->callee->type->Function.return_type; + u32 return_size = type_size_of(return_type); + u64 stack_top_idx = bh_imap_get(&mod->index_map, (u64) &builtin_stack_top); + + if (cc == CC_Return_Stack) { + WID(WI_GLOBAL_GET, stack_top_idx); + WID(WI_I32_CONST, return_size); + WI(WI_I32_ADD); + WID(WI_GLOBAL_SET, stack_top_idx); + } + if (call->callee->kind == Ast_Kind_Function) { i32 func_idx = (i32) bh_imap_get(&mod->index_map, (u64) call->callee); bh_arr_push(code, ((WasmInstruction){ WI_CALL, func_idx })); + } else { compile_expression(mod, &code, call->callee); @@ -919,6 +938,16 @@ COMPILE_FUNC(call, AstCall* call) { WID(WI_CALL_INDIRECT, ((WasmInstructionData) { type_idx, 0x00 })); } + if (cc == CC_Return_Stack) { + WID(WI_GLOBAL_GET, stack_top_idx); + WID(WI_I32_CONST, return_size); + WI(WI_I32_SUB); + WID(WI_GLOBAL_SET, stack_top_idx); + + WID(WI_GLOBAL_GET, stack_top_idx); + compile_load_instruction(mod, &code, return_type, 0); + } + *pcode = code; } @@ -1108,7 +1137,7 @@ COMPILE_FUNC(struct_load, Type* type, u64 offset) { *pcode = code; } -COMPILE_FUNC(struct_store, AstTyped* lval) { +COMPILE_FUNC(struct_lval, AstTyped* lval) { // NOTE: Expects the stack to look like: // mem_1 // mem_2 @@ -1131,10 +1160,27 @@ COMPILE_FUNC(struct_store, AstTyped* lval) { default: assert(0); } + compile_struct_store(mod, &code, lval->type, offset); + + *pcode = code; +} + +COMPILE_FUNC(struct_store, Type* type, u64 offset) { + // NOTE: Expects the stack to look like: + // mem_1 + // mem_2 + // ... + // mem_n + // loc + + bh_arr(WasmInstruction) code = *pcode; + + assert(type->kind == Type_Kind_Struct); + u64 loc_idx = local_raw_allocate(mod->local_alloc, WASM_TYPE_INT32); WIL(WI_LOCAL_SET, loc_idx); - bh_arr_rev_each(StructMember *, smem, lval->type->Struct.memarr) { + bh_arr_rev_each(StructMember *, smem, type->Struct.memarr) { WasmType wt = onyx_type_to_wasm_type((*smem)->type); u64 tmp_idx = local_raw_allocate(mod->local_alloc, wt); @@ -1505,7 +1551,28 @@ COMPILE_FUNC(return, AstReturn* ret) { bh_arr(WasmInstruction) code = *pcode; if (ret->expr) { - compile_expression(mod, &code, ret->expr); + if (mod->curr_cc == CC_Return_Stack) { + if (ret->expr->type->kind == Type_Kind_Struct) { + compile_expression(mod, &code, ret->expr); + + WIL(WI_LOCAL_GET, mod->stack_base_idx); + WID(WI_I32_CONST, type_size_of(ret->expr->type)); + WI(WI_I32_SUB); + + compile_store_instruction(mod, &code, ret->expr->type, 0); + + } else { + WIL(WI_LOCAL_GET, mod->stack_base_idx); + WID(WI_I32_CONST, type_size_of(ret->expr->type)); + WI(WI_I32_SUB); + + compile_expression(mod, &code, ret->expr); + compile_store_instruction(mod, &code, ret->expr->type, 0); + } + + } else { + compile_expression(mod, &code, ret->expr); + } } compile_deferred_stmts(mod, &code, (AstNode *) ret); @@ -1544,7 +1611,7 @@ 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); + u64 stack_top_idx = bh_imap_get(&mod->index_map, (u64) &builtin_stack_top); WIL(WI_LOCAL_GET, mod->stack_base_idx); WID(WI_GLOBAL_SET, stack_top_idx); @@ -1577,6 +1644,7 @@ static i32 generate_type_idx(OnyxWasmModule* mod, Type* ft) { } *(t++) = ':'; + // HACK: Slightly: the wasm type for structs has to be 0x00 WasmType return_type = onyx_type_to_wasm_type(ft->Function.return_type); *(t++) = (char) return_type; *t = '\0'; @@ -1705,7 +1773,10 @@ static void compile_function(OnyxWasmModule* mod, AstFunction* fd) { mod->local_alloc = &wasm_func.locals; mod->local_alloc->param_count = localidx; - mod->has_stack_locals = 0; + mod->curr_cc = type_function_get_cc(fd->type); + assert(mod->curr_cc != CC_Undefined); + + mod->has_stack_locals = (mod->curr_cc == CC_Return_Stack); bh_arr_each(AstLocal *, local, fd->locals) mod->has_stack_locals |= !local_is_wasm_local(*local); @@ -1716,7 +1787,6 @@ static void compile_function(OnyxWasmModule* mod, AstFunction* fd) { mod->stack_base_idx = local_raw_allocate(mod->local_alloc, WASM_TYPE_INT32); } - // Generate code compile_function_body(mod, &wasm_func.code, fd); -- 2.25.1