From 1217310d963a2f99520982be0aa0d6349618a68a Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sat, 15 Aug 2020 10:19:04 -0500 Subject: [PATCH] code cleanup; can 'use' bare structures --- core/alloc.onyx | 18 +++++----- include/onyxastnodes.h | 2 +- onyx | Bin 401792 -> 401904 bytes progs/stack_based.onyx | 38 ++++++++++----------- src/onyxchecker.c | 1 - src/onyxsymres.c | 38 +++++++-------------- src/onyxwasm.c | 74 +++++++++++++++++++++++++---------------- 7 files changed, 85 insertions(+), 86 deletions(-) diff --git a/core/alloc.onyx b/core/alloc.onyx index 81a96dd2..e70f900d 100644 --- a/core/alloc.onyx +++ b/core/alloc.onyx @@ -22,15 +22,15 @@ Allocator :: struct { func: alloc_proc; } -alloc :: proc (use a: ^Allocator, size: u32) -> rawptr { +alloc :: proc (use a: Allocator, size: u32) -> rawptr { return func(data, AllocAction.Alloc, size, 16, null); } -resize :: proc (use a: ^Allocator, ptr: rawptr, size: u32) -> rawptr { +resize :: proc (use a: Allocator, ptr: rawptr, size: u32) -> rawptr { return func(data, AllocAction.Resize, size, 16, ptr); } -free :: proc (use a: ^Allocator, ptr: rawptr) { +free :: proc (use a: Allocator, ptr: rawptr) { func(data, AllocAction.Free, 0, 0, ptr); } @@ -159,9 +159,9 @@ heap_alloc_proc :: proc (data: rawptr, aa: AllocAction, size: u32, align: u32, o return null; } -malloc :: proc (size: u32) -> rawptr do return alloc(^heap_allocator, size); -mfree :: proc (ptr: rawptr) do free(^heap_allocator, ptr); -mresize :: proc (ptr: rawptr, size: u32) -> rawptr do return resize(^heap_allocator, ptr, size); +malloc :: proc (size: u32) -> rawptr do return alloc(heap_allocator, size); +mfree :: proc (ptr: rawptr) do free(heap_allocator, ptr); +mresize :: proc (ptr: rawptr, size: u32) -> rawptr do return resize(heap_allocator, ptr, size); @@ -206,10 +206,10 @@ scratch_alloc_init :: proc (a: ^Allocator, ss: ^ScratchState) { } -#private return_scratch_size :: 256 -#private return_scratch_buff : [return_scratch_size] u8 +#private return_scratch_size :: 256 +#private return_scratch_buff : [return_scratch_size] u8 +#private return_scratch_state : ScratchState; -return_scratch_state : ScratchState; return_scratch_alloc : Allocator; memory_init :: proc { diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index 7fb649f6..c9b0e146 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -353,7 +353,7 @@ struct AstTypeAlias { AstType_base; AstType* to; }; // Top level nodes struct AstBinding { AstTyped_base; AstNode* node; }; -struct AstMemRes { AstTyped_base; u64 addr; AstTyped *initial_value; }; // HACK: This has to be the same size or bigger as AstDereference +struct AstMemRes { AstTyped_base; u64 addr; AstTyped *initial_value; }; struct AstInclude { AstNode_base; OnyxToken *name; }; struct AstUsePackage { AstNode_base; diff --git a/onyx b/onyx index 9e1bc71ea4113c5886750394d5353ce4b709c02e..77ebf6e3fbae2fecd5b18ece9fba250d61bbbb04 100755 GIT binary patch delta 74973 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 delta 75716 zcmc${2UJu^)GpdpO%s%;k~0_xilCyHK}AtfG3S6;M=@u|Mlpbh>8NGSIV)rjLKr=_S*loJ7je$~tHO5br`=3cacO7b(*B4`yB3?4bsz}Ek4w83 zm-Yqf?BLAI$UcOgxGH&78AcK_XIF8iwBt@`L)E`5rmiC@mKaGrNqFYgYALq#`f4en zK@6R_S{mM<39Y?4^HhV07HW2oNKF#FtanJrDPzQb*8CtTE=`CpN?K%2kAJKto232; z0i;=GM#4P}T_k1pYg5C5cAO<`=&*<^$&Be3qb}2aBhseFCdW-VKHNzmDcNpu=?T_x z>8e~!_K=B+>*PY$C8Tp*7|l$U61)1_w%@>0k4WYT*@;l(K3i*>xvlF%N=HtUW^})b z=Izu&O=#vgDY2(F>71$U*-lL?q&t09k?zvizL)96kxI;n%s&0nDYc&a8|q{%az(kBx$Z_X@E$okCeS+xo2Ed|Xv zg>n39&RtSdIx{zpe(EhbN)yO%X_j=Bq)Bb(1(K@LxOsg^IqBKFmZX1X)cib3wnz~R zLn6kzt5o~>WXgWgTBVwDe1tDLFfT6ctWXYaRuFwoiOwZbL}qbm#llB)Nqb4Vs532@ zkojm)9X0(>M=9b`DSFvm`ZY!gtdXiN??`*M%v`X%DWR2GO3zocrVm?4HCHaDr5a{F zT)CaljD*aL)ukzQiI?`StwC*?WPV&5Lh06qlJAB@GFO_op%jUfHf-2TN5@GmH~xb$ehbX7_o9Z|d>SfH{PUWu!u<_Ah> z=jwQS79 z5yj4mOZhcR<*MKhLy@oXva zv9lE#?rgTt8y2IXC0HXHT2v~wrKFubPnmX`$GvDE)!ov!WYTCQbM6c7QEO$*(e$rn zG;CK_y1K=sXeDl#@@uwgL?vm}IhT-($X7eey6|gFLl;8Li8XpnPS09(E43m+7({LZn4tVt+i;a`qHbdLA8sT=l8mXA-^@; zlhR3mIMhP(xdzWnafM!2Tpg$=8QWkd+n`LyN z%tpUBZF=N2VSF8MzzVKRCwj;QB^gEcR>?Tx{N z!YZ^t6%dRrXk|=&u{t0h&K+~f?6~yKdFM~Hj!XM1F69-HYAP#5MV&PDILpxV3Xz`g z4ADCAkQj!U(JEE$xVUuZ{3_5XlLVci`9lfW9ao^{2|&X%jNG%?Hhfa?r7Y#wJQenb z47(aQ&m6SG6pG7;+{gF*jGFg05mk1jB&D)wiv(UlU>t9dyts5})-D@TSz5Hqi?*sF z>2{UXp7=|#eW%QkG>xw)%R9bo+d51;f|g1<9+y#K3J9-8b@)%Wpm7W1GMvkU$B}C? z?<$@iGwE!0WS%VNOykBT$|Ij-Id_DqM*9Vt9&zcN3RBkSs^*GO%5lZlA}nFKd^j7u zcT!5r7lk^Gxur~FEWW{(Z!_=W45{1xkdE$l3)VkF1yf?*xuI>#ROT%mhepwODHLVK zj46q*ZRJdPcU@9qLnUsa*~mc*$YnRAHhbb5FeQRFrm{Nv85W7Rm&MRtuT)txL`iox zyU_#Wnsy51F-dSXyW#^WXHWSOw<@B2u*L1i)KcX(M1BsHq_TVc9S5v8TN&m^o%gmR zvC_nSflkimQAH|Bf9+l3IN}k{end57gzk-Y;~T1DEDozC>q|9h&%R5xIS&=fn%q)~ z+2Q6maP2>>bpCYSL+SDU0LM7}bTY06124_(Fx-+#CP{nAS!M*^)PS7J&W?=FQN@v`#ad|7v?DYzBqW4lX3 zj(9bBwF10tccoCaXJhx{Afw9h*C?Yni(eTsYF_6il?qJ|smjsA5DjWDIlxVvx=Z)q zeL3fE5~Y0bNt|Cyl>Cl*HR;3o#zbRIHr&lnGdJTq7B&}9kk@;zUpjLlSrn^+W@ICGOLW+t}W zL_shVKc9qJ3|H1i^u2RBruO>%0AKlehKb)XdId#n3tmY=I3r#$^iLaSS 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 print(); - { - varr : [5] Vec3; - varr[2].x = 4; - varr[2].y = 5; - varr[2].z = 6; - mag_squared(varr[2]) |> print(); - - v1 : Vec3; - v1.x = 1; - v1.y = 2; - v1.z = 4; - - v2 := v1; - - v3 : Vec3 = *vadd(v1, v2); - print(v3.x); - print(v3.y); - print(v3.z); - } + varr : [5] Vec3; + varr[2].x = 4; + varr[2].y = 5; + varr[2].z = 6; + mag_squared(varr[2]) |> print(); + + v1 : Vec3; + v1.x = 1; + v1.y = 2; + v1.z = 4; + + v2 := v1; + + v3 := *vadd(v1, v2); + print(v3.x); + print(v3.y); + print(v3.z); } vadd :: proc (v1: Vec3, v2: Vec3) -> ^Vec3 { - out := cast(^Vec3) alloc(^return_scratch_alloc, sizeof Vec3); + out := cast(^Vec3) alloc(return_scratch_alloc, sizeof Vec3); out.x = v1.x + v2.x; out.y = v1.y + v2.y; out.z = v1.z + v2.z; diff --git a/src/onyxchecker.c b/src/onyxchecker.c index c0b50b8d..68f21b10 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -1048,7 +1048,6 @@ CHECK(memres, AstMemRes* memres) { } Type* memres_type = memres->type; - if (!type_is_compound(memres_type)) memres_type = memres_type->Pointer.elem; if (!types_are_compatible(memres_type, memres->initial_value->type)) { onyx_message_add(Msg_Type_Binop_Mismatch, diff --git a/src/onyxsymres.c b/src/onyxsymres.c index 83cc6091..34573b4c 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -338,12 +338,13 @@ static void symres_function(AstFunction* func) { symbol_introduce(semstate.curr_scope, param->token, (AstNode *) param); if (param->flags & Ast_Flag_Param_Use) { - if (param->type->kind != Type_Kind_Pointer || param->type->Pointer.elem->kind != Type_Kind_Struct) { - onyx_message_add(Msg_Type_Literal, - param->token->pos, - "can only 'use' pointers to structures."); - } else { - AstStructType* st = (AstStructType *) ((AstPointerType *) param->type_node)->elem; + if (type_is_struct(param->type)) { + AstStructType* st; + if (param->type->kind == Type_Kind_Struct) { + st = (AstStructType *) param->type_node; + } else { + st = (AstStructType *) ((AstPointerType *) param->type_node)->elem; + } bh_arr_each(AstStructMember *, mem, st->members) { AstFieldAccess* fa = onyx_ast_node_new(semstate.node_allocator, sizeof(AstFieldAccess), Ast_Kind_Field_Access); @@ -358,6 +359,11 @@ static void symres_function(AstFunction* func) { (AstNode *) fa); token_toggle_end((*mem)->token); } + + } else { + onyx_message_add(Msg_Type_Literal, + param->token->pos, + "can only 'use' structures or pointers to structures."); } } } @@ -478,26 +484,6 @@ static void symres_memres(AstMemRes** memres) { } else { if ((*memres)->type_node == NULL) return; } - - (*memres)->type = type_build_from_ast(semstate.allocator, (*memres)->type_node); - - if (!type_is_compound((*memres)->type)) { - Type* ptr_type = type_make_pointer(semstate.allocator, (*memres)->type); - (*memres)->type = ptr_type; - - AstMemRes* new_memres = onyx_ast_node_new(semstate.node_allocator, sizeof(AstMemRes), Ast_Kind_Memres); - memcpy(new_memres, (*memres), sizeof(AstMemRes)); - - // BIG HACK: converting the (*memres) node to a dereference node to not break - // already resolved symbols - ((AstDereference *) (*memres))->kind = Ast_Kind_Dereference; - ((AstDereference *) (*memres))->type_node = (*memres)->type_node; - ((AstDereference *) (*memres))->type = (*memres)->type->Pointer.elem; - ((AstDereference *) (*memres))->expr = (AstTyped *) new_memres; - - // BUT retain the 'old' memres in the entity list - *memres = new_memres; - } } void onyx_resolve_symbols() { diff --git a/src/onyxwasm.c b/src/onyxwasm.c index debefaae..822480c5 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -343,31 +343,32 @@ static u64 local_lookup_idx(LocalAllocator* la, u64 value) { #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); -COMPILE_FUNC(block, AstBlock* block, b32 generate_block_headers); -COMPILE_FUNC(statement, AstNode* stmt); -COMPILE_FUNC(assignment, AstBinaryOp* assign); -COMPILE_FUNC(store_instruction, Type* type, u32 offset); -COMPILE_FUNC(load_instruction, Type* type, u32 offset); -COMPILE_FUNC(if, AstIf* if_node); -COMPILE_FUNC(while, AstWhile* while_node); -COMPILE_FUNC(for, AstFor* for_node); -COMPILE_FUNC(defer, AstDefer* defer); -COMPILE_FUNC(deferred_stmts, AstNode* node); -COMPILE_FUNC(binop, AstBinaryOp* binop); -COMPILE_FUNC(unaryop, AstUnaryOp* unop); -COMPILE_FUNC(call, AstCall* call); -COMPILE_FUNC(intrinsic_call, AstIntrinsicCall* call); -COMPILE_FUNC(array_access_location, AstArrayAccess* aa, u64* offset_return); -COMPILE_FUNC(field_access_location, AstFieldAccess* field, u64* offset_return); -COMPILE_FUNC(local_location, AstLocal* local, u64* offset_return); -COMPILE_FUNC(struct_load, Type* type, u64 offset); -COMPILE_FUNC(struct_store, AstTyped* lval); -COMPILE_FUNC(expression, AstTyped* expr); -COMPILE_FUNC(cast, AstUnaryOp* cast); -COMPILE_FUNC(return, AstReturn* ret); -COMPILE_FUNC(stack_enter, u64 stacksize); -COMPILE_FUNC(stack_leave, u32 unused); +COMPILE_FUNC(function_body, AstFunction* fd); +COMPILE_FUNC(block, AstBlock* block, b32 generate_block_headers); +COMPILE_FUNC(statement, AstNode* stmt); +COMPILE_FUNC(assignment, AstBinaryOp* assign); +COMPILE_FUNC(store_instruction, Type* type, u32 offset); +COMPILE_FUNC(load_instruction, Type* type, u32 offset); +COMPILE_FUNC(if, AstIf* if_node); +COMPILE_FUNC(while, AstWhile* while_node); +COMPILE_FUNC(for, AstFor* for_node); +COMPILE_FUNC(defer, AstDefer* defer); +COMPILE_FUNC(deferred_stmts, AstNode* node); +COMPILE_FUNC(binop, AstBinaryOp* binop); +COMPILE_FUNC(unaryop, AstUnaryOp* unop); +COMPILE_FUNC(call, AstCall* call); +COMPILE_FUNC(intrinsic_call, AstIntrinsicCall* call); +COMPILE_FUNC(array_access_location, AstArrayAccess* aa, u64* offset_return); +COMPILE_FUNC(field_access_location, AstFieldAccess* field, u64* offset_return); +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(expression, AstTyped* expr); +COMPILE_FUNC(cast, AstUnaryOp* cast); +COMPILE_FUNC(return, AstReturn* ret); +COMPILE_FUNC(stack_enter, u64 stacksize); +COMPILE_FUNC(stack_leave, u32 unused); COMPILE_FUNC(function_body, AstFunction* fd) { if (fd->body == NULL) return; @@ -1002,6 +1003,9 @@ COMPILE_FUNC(array_access_location, AstArrayAccess* aa, u64* offset_return) { } else if (aa->addr->kind == Ast_Kind_Local && aa->addr->type->kind == Type_Kind_Array) { compile_local_location(mod, &code, (AstLocal *) aa->addr, &offset); + } else if (aa->addr->kind == Ast_Kind_Memres + && aa->addr->type->kind != Type_Kind_Array) { + compile_memory_reservation_location(mod, &code, (AstMemRes *) aa->addr); } else { compile_expression(mod, &code, aa->addr); } @@ -1033,6 +1037,9 @@ COMPILE_FUNC(field_access_location, AstFieldAccess* field, u64* offset_return) { u64 o2 = 0; compile_local_location(mod, &code, (AstLocal *) source_expr, &o2); offset += o2; + } else if (source_expr->kind == Ast_Kind_Memres + && source_expr->type->kind != Type_Kind_Pointer) { + compile_memory_reservation_location(mod, &code, (AstMemRes *) source_expr); } else { compile_expression(mod, &code, source_expr); } @@ -1042,6 +1049,14 @@ COMPILE_FUNC(field_access_location, AstFieldAccess* field, u64* offset_return) { *pcode = code; } +COMPILE_FUNC(memory_reservation_location, AstMemRes* memres) { + bh_arr(WasmInstruction) code = *pcode; + + WID(WI_I32_CONST, memres->addr); + + *pcode = code; +} + COMPILE_FUNC(local_location, AstLocal* local, u64* offset_return) { bh_arr(WasmInstruction) code = *pcode; @@ -1328,6 +1343,7 @@ COMPILE_FUNC(expression, AstTyped* expr) { case Ast_Kind_Memres: { AstMemRes* memres = (AstMemRes *) expr; WID(WI_I32_CONST, memres->addr); + compile_load_instruction(mod, &code, memres->type, 0); break; } @@ -1658,16 +1674,17 @@ static void compile_function(OnyxWasmModule* mod, AstFunction* fd) { mod->local_alloc = &wasm_func.locals; mod->local_alloc->param_count = localidx; - mod->stack_base_idx = local_raw_allocate(mod->local_alloc, WASM_TYPE_INT32); - mod->has_stack_locals = 0; bh_arr_each(AstLocal *, local, fd->locals) mod->has_stack_locals |= !local_is_wasm_local(*local); - if (mod->has_stack_locals) + 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); + mod->stack_base_idx = local_raw_allocate(mod->local_alloc, WASM_TYPE_INT32); + } + // Generate code compile_function_body(mod, &wasm_func.code, fd); @@ -1833,7 +1850,6 @@ static void compile_raw_data(OnyxWasmModule* mod, ptr data, AstTyped* node) { static void compile_memory_reservation(OnyxWasmModule* mod, AstMemRes* memres) { Type* effective_type = memres->type; - if (!type_is_compound(effective_type)) effective_type = effective_type->Pointer.elem; u64 alignment = type_alignment_of(effective_type); u64 size = type_size_of(effective_type); -- 2.25.1