From 673c40103fb38675c8782ce9f79d751c76bd0852 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 15 Jan 2021 13:04:13 -0600 Subject: [PATCH] made pointers 8 bytes in size; easier transition to WASM64 or C backend --- bin/onyx | Bin 331488 -> 331536 bytes include/onyxtypes.h | 1 + onyx.exe | Bin 421376 -> 421376 bytes src/onyxtypes.c | 41 +++++++++++++++++++++-------------- src/onyxwasm.c | 17 +++++++++------ tests/struct_robustness | 4 ++-- tests/struct_robustness.onyx | 2 +- 7 files changed, 39 insertions(+), 26 deletions(-) diff --git a/bin/onyx b/bin/onyx index 978ceb02ad72d6674ad57b8b6424abf58d395895..ea7ee4c95d7f3dd46378573cee73c2325f8ef518 100755 GIT binary patch delta 54176 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%0D#6z2PPd-^h1L^>v-l?Jn2pDXlZFsA-XSIM!a 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 jav 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 delta 53914 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 QH6+ARa;-cc7IO9f0aOw=)c^nh diff --git a/include/onyxtypes.h b/include/onyxtypes.h index 6d92d21b..16e71891 100644 --- a/include/onyxtypes.h +++ b/include/onyxtypes.h @@ -146,6 +146,7 @@ struct AstCompound; b32 types_are_compatible(Type* t1, Type* t2); u32 type_size_of(Type* type); u32 type_alignment_of(Type* type); +u32 type_aligned_size_of(Type* type); Type* type_build_from_ast(bh_allocator alloc, struct AstType* type_node); Type* type_build_function_type(bh_allocator alloc, struct AstFunction* func); diff --git a/onyx.exe b/onyx.exe index a089c778c5031f5119b176fc987989546dda475f..932a0a46d6640f5a9aacf1435ffa2c5e633583db 100644 GIT binary patch delta 29193 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 VyC5&CB=SmI)2}7vMQkYz^+zQ? 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 { case Type_Kind_Basic: return type->Basic.size; - case Type_Kind_Pointer: return 4; + case Type_Kind_Pointer: return 8; case Type_Kind_Function: return 4; case Type_Kind_Array: return type->Array.size; case Type_Kind_Struct: return type->Struct.size; case Type_Kind_Enum: return type_size_of(type->Enum.backing); - case Type_Kind_Slice: return 8; - case Type_Kind_VarArgs: return 8; - case Type_Kind_DynArray: return 12; + case Type_Kind_Slice: return 16; // HACK: These should not have to be 16 bytes in size, they should only have to be 12, + case Type_Kind_VarArgs: return 16; // but there are alignment issues right now with that so I decided to not fight it and just make them 16 bytes in size. + case Type_Kind_DynArray: return 16; case Type_Kind_Compound: return type->Compound.size; default: return 0; } @@ -273,19 +273,28 @@ u32 type_alignment_of(Type* type) { switch (type->kind) { case Type_Kind_Basic: return type->Basic.alignment; - case Type_Kind_Pointer: return 4; + case Type_Kind_Pointer: return 8; case Type_Kind_Function: return 4; case Type_Kind_Array: return type_alignment_of(type->Array.elem); case Type_Kind_Struct: return type->Struct.alignment; case Type_Kind_Enum: return type_alignment_of(type->Enum.backing); - case Type_Kind_Slice: return 4; - case Type_Kind_VarArgs: return 4; - case Type_Kind_DynArray: return 4; + case Type_Kind_Slice: return 8; + case Type_Kind_VarArgs: return 8; + case Type_Kind_DynArray: return 8; case Type_Kind_Compound: return 8; // HACK default: return 1; } } +u32 type_aligned_size_of(Type* type) { + u32 size = type_size_of(type); + u32 alignment = type_alignment_of(type); + + bh_align(size, alignment); + + return size; +} + Type* type_build_from_ast(bh_allocator alloc, AstType* type_node) { if (type_node == NULL) return NULL; @@ -603,7 +612,7 @@ Type* type_make_pointer(bh_allocator alloc, Type* to) { ptr_type->kind = Type_Kind_Pointer; ptr_type->Pointer.base.flags |= Basic_Flag_Pointer; - ptr_type->Pointer.base.size = 4; + ptr_type->Pointer.base.size = 8; ptr_type->Pointer.elem = to; return ptr_type; @@ -781,7 +790,7 @@ b32 type_lookup_member(Type* type, char* member, StructMember* smem) { } if (strcmp(member, "count") == 0) { smem->idx = 1; - smem->offset = 4; + smem->offset = 8; smem->type = &basic_types[Basic_Kind_U32]; smem->name = "count"; return 1; @@ -800,14 +809,14 @@ b32 type_lookup_member(Type* type, char* member, StructMember* smem) { } if (strcmp(member, "count") == 0) { smem->idx = 1; - smem->offset = 4; + smem->offset = 8; smem->type = &basic_types[Basic_Kind_U32]; smem->name = "count"; return 1; } if (strcmp(member, "capacity") == 0) { smem->idx = 2; - smem->offset = 8; + smem->offset = 12; smem->type = &basic_types[Basic_Kind_U32]; smem->name = "capacity"; return 1; @@ -843,7 +852,7 @@ b32 type_lookup_member_by_idx(Type* type, i32 idx, StructMember* smem) { } if (idx == 1) { smem->idx = 1; - smem->offset = 4; + smem->offset = 8; smem->type = &basic_types[Basic_Kind_U32]; smem->name = "count"; return 1; @@ -862,14 +871,14 @@ b32 type_lookup_member_by_idx(Type* type, i32 idx, StructMember* smem) { } if (idx == 1) { smem->idx = 1; - smem->offset = 4; + smem->offset = 8; smem->type = &basic_types[Basic_Kind_U32]; smem->name = "count"; return 1; } if (idx == 2) { smem->idx = 2; - smem->offset = 8; + smem->offset = 12; smem->type = &basic_types[Basic_Kind_U32]; smem->name = "capacity"; return 1; diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 794a3224..326c1fdb 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -559,7 +559,7 @@ EMIT_FUNC(store_instruction, Type* type, u32 offset) { i32 is_simd = is_basic && (type->Basic.flags & Basic_Flag_SIMD); if (is_pointer) { - WID(WI_I32_STORE, ((WasmInstructionData) { alignment, offset })); + WID(WI_I32_STORE, ((WasmInstructionData) { 2, offset })); } else if (is_integer) { if (store_size == 1) WID(WI_I32_STORE_8, ((WasmInstructionData) { alignment, offset })); else if (store_size == 2) WID(WI_I32_STORE_16, ((WasmInstructionData) { alignment, offset })); @@ -635,6 +635,7 @@ EMIT_FUNC(load_instruction, Type* type, u32 offset) { if (is_pointer) { instr = WI_I32_LOAD; + alignment = 2; } else if (is_integer) { if (load_size == 1) instr = WI_I32_LOAD_8_S; @@ -1392,17 +1393,19 @@ EMIT_FUNC(call, AstCall* call) { WID(WI_GLOBAL_GET, stack_top_idx); WID(WI_I32_CONST, vararg_offset); WI(WI_I32_ADD); - emit_store_instruction(mod, &code, &basic_types[Basic_Kind_I32], stack_grow_amm); + emit_store_instruction(mod, &code, &basic_types[Basic_Kind_Rawptr], stack_grow_amm); + + // NOTE: There will be 4 uninitialized bytes here, because pointers are only 4 bytes in WASM. WID(WI_GLOBAL_GET, stack_top_idx); WID(WI_I32_CONST, vararg_count); - emit_store_instruction(mod, &code, &basic_types[Basic_Kind_I32], stack_grow_amm + 4); + emit_store_instruction(mod, &code, &basic_types[Basic_Kind_I32], stack_grow_amm + 8); WID(WI_GLOBAL_GET, stack_top_idx); WID(WI_I32_CONST, stack_grow_amm); WI(WI_I32_ADD); - stack_grow_amm += 8; + stack_grow_amm += 12; break; } @@ -2282,7 +2285,6 @@ EMIT_FUNC(expression, AstTyped* expr) { } case Ast_Kind_Array_Literal: { - // assert(("Array literals are not allowed as expressions currently. This will be added in a future update.", 0)); emit_array_literal(mod, &code, (AstArrayLiteral *) expr); break; } @@ -2997,7 +2999,8 @@ static void emit_raw_data(OnyxWasmModule* mod, ptr data, AstTyped* node) { // by emit_string_literal. u32* sdata = (u32 *) data; sdata[0] = sl->addr; - sdata[1] = sl->length; + sdata[1] = 0x00; + sdata[2] = sl->length; break; } @@ -3039,12 +3042,12 @@ static void emit_raw_data(OnyxWasmModule* mod, ptr data, AstTyped* node) { case Basic_Kind_I32: case Basic_Kind_U32: - case Basic_Kind_Rawptr: *((i32 *) data) = ((AstNumLit *) node)->value.i; return; case Basic_Kind_I64: case Basic_Kind_U64: + case Basic_Kind_Rawptr: *((i64 *) data) = ((AstNumLit *) node)->value.l; return; diff --git a/tests/struct_robustness b/tests/struct_robustness index 5c7b967c..75163735 100644 --- a/tests/struct_robustness +++ b/tests/struct_robustness @@ -1,5 +1,5 @@ Testing a simple structure. -SimpleStruct<16, 4>(41, 67, Steve) +SimpleStruct<24, 8>(41, 67, Steve) Testing a simple union. @@ -36,5 +36,5 @@ PolyUnion(1234) Testing a polymorphic union with use. -8 == 8 +16 == 16 0, 5678.0 diff --git a/tests/struct_robustness.onyx b/tests/struct_robustness.onyx index 4e75fb46..70df0f08 100644 --- a/tests/struct_robustness.onyx +++ b/tests/struct_robustness.onyx @@ -145,7 +145,7 @@ main :: proc (args: [] cstr) { }; } - printf("%i == 8\n", sizeof PolyStruct(i32, [] u32)); + printf("%i == 16\n", sizeof PolyStruct(i32, [] u32)); ps : PolyStruct(i32, f64); ps.t_data = 1234; -- 2.25.1