From 64ccc50476aa37b6018ee63f0f85b4628088f00a Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 16 Apr 2021 22:19:17 -0500 Subject: [PATCH] even more clean up in code generation --- bin/onyx | Bin 358480 -> 358480 bytes include/bh.h | 5 +++++ src/onyxwasm.c | 9 ++------- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bin/onyx b/bin/onyx index 5e002a9d88a1e2917fe43a92c604fca0ed34f032..58a3ef31605799b64bc4f284df68e8388f04c70c 100755 GIT binary patch delta 841 zcmXX@Z)j6j6u;-*7@xwttyU;@(1=f|3X+0T{2=SA3EqTYEBH;Mbst)BEf!IyHLp|@2iU2KujqyE;D7sU6KjU^ zYJM|I%!QBYhgP(%>M<%?0YBJGU!zAPOt-C!??Zs0bAD~I1NUcKes!B}h}7Yli1qq-K(8~b+lCB!#ArYlD3O>GGiisJc`(OeUIt$nPTTFG z8?tWA>Y+TDokK_@71f218~^PFa=i>$LVoocbK@E+BoXU_vumj68u6JUJh8@0RuJBE z=0A6~5ao#jUP3U7@#Il$mWhi+a)c+mcJEVGMVAcOWs_{__Dwh`_Y<;O`a`l#6RC~A z^`eDb)#+0BglsIU9dWwP6th+^yMbsyDqOL&fxdBy`)80qr%GORuys18eW~i zp@i7JG1d+5>{DZ`SKC|3%ZUto?6uF>`b9K3%@g0^7gI-ExMOuzuFR{hXY3f=i8pkR zi*jpfr&pVmxHBa_A8~JC!&^LJo8E!W3Lg1Oq{qDiGFG_2%WJT6MUNwwmv@vQ_+9TW zfrCB-efqB@ApCaAb7sI@`^N}8;?q%QFBfY<2_`|KS~&u y0#>ufGzrQ9CxVn*u4Fr{ zS_Cl(@ko%UN2sbxh-@YLiqLozk$O}xyMA;N35(TncK!0}p6|?@@B7aE?m&FM{_Pmqu^3FF<~fiWm4vms1}i^t~rrJ zp6=!&&q)nT^d~5*Gri#@K$$;oR1K2tkl;guq)ZfF5@XLBlFgUCCMU(F4Ne~mC{FXp z(@{&lwNg=OxFNSx|GeLeCiHHVp%U%!Diqxb+VE(XNwhd0U`D3r3ok-Z??ao`wb1z)jNZ=*+{RR3jeXir*d^Jt?ST#|1`-z^t@SgA%p z4sJz^)owY|D5WM*nT8^Akl-x)f2}lkif&4~;rK{qtSUnK=y9Zyr#E9M_?TOw;lfj` zc(F2fD~viRD|5_^nDv*E7VD6Zvy>G(qi=quW(4!-LG+b&N%bD84@PGuEvxdd;T$4+ z;k$8eh_sF^$(Az&HqR({OBQ5#Y@t3mxDl5Q@3J7S*JtPT@}{?BpSTX4=jLnKD1q6U z=th5l(bg({Es{#so=$cSwr(oT_*Kr>;y`duIh+RdP6P*(vuRM``u6~qCl(IKo(K2< zFeGYJejqCJ8W%s1^~C|jWj3DtWBE|lbsujIRqwt^A7zqxz7s>jm|Z;r!Jb#IwrQGx r*1+`PP&As}-_4f|lOr%L0=mZ*_PQ({`$(n&%xtlLBHaGTR&w+&^JGoZ diff --git a/include/bh.h b/include/bh.h index 2afef54c..69b2becf 100644 --- a/include/bh.h +++ b/include/bh.h @@ -528,6 +528,11 @@ typedef struct bh__arr { bh__arr_grow(bh_arr_allocator(arr), (void **) &(arr), sizeof(*(arr)), bh_arr_length(arr) + 1), \ arr[bh__arrhead(arr)->length++] = value) +#define bh_arr_set_at(arr, n, value) ( \ + bh__arr_grow(bh_arr_allocator(arr), (void **) &(arr), sizeof(*(arr)), (n) + 1), \ + bh_arr_set_length((arr), bh_max(bh_arr_length(arr), (i32) (n) + 1)), \ + arr[n] = value) + #define bh_arr_is_empty(arr) (arr ? bh__arrhead(arr)->length == 0 : 1) #define bh_arr_clear(arr) (arr ? (bh__arrhead(arr)->length = 0) : 0) diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 2368fafe..7e44ac33 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -2792,10 +2792,7 @@ static void emit_function(OnyxWasmModule* mod, AstFunction* fd) { bh_arr_push(wasm_func.code, ((WasmInstruction){ WI_BLOCK_END, 0x00 })); - // HACK: This is gross - bh_arr_grow(mod->funcs, func_idx - mod->foreign_function_count + 1); - mod->funcs[func_idx - mod->foreign_function_count] = wasm_func; - bh_arr_set_length(mod->funcs, bh_max((u32) bh_arr_length(mod->funcs), func_idx - mod->foreign_function_count + 1)); + bh_arr_set_at(mod->funcs, func_idx - mod->foreign_function_count, wasm_func); // NOTE: Clear the local map on exit of generating this function bh_imap_clear(&mod->local_map); @@ -2852,9 +2849,7 @@ static void emit_global(OnyxWasmModule* module, AstGlobal* global) { default: assert(("Invalid global type", 0)); break; } - bh_arr_grow(module->globals, global_idx - module->foreign_global_count + 1); - module->globals[global_idx - module->foreign_global_count] = glob; - bh_arr_set_length(module->globals, bh_max((u32) bh_arr_length(module->globals), global_idx - module->foreign_global_count + 1)); + bh_arr_set_at(module->globals, global_idx - module->foreign_global_count, glob); if (global->flags & Ast_Flag_Global_Stack_Top) module->stack_top_ptr = &module->globals[global_idx - module->foreign_global_count].initial_value[0].data.i1; -- 2.25.1