From 3761036d68086fd0df27c3528ced7b1fdf1e6d27 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 10 Aug 2020 10:27:14 -0500 Subject: [PATCH] string literal data section improvement --- include/onyxwasm.h | 1 + onyx | Bin 140328 -> 140328 bytes progs/print_funcs.onyx | 34 ++++++++++++++++++---------------- progs/stack_based.onyx | 1 + src/onyxchecker.c | 28 ++++++++++++++-------------- src/onyxwasm.c | 8 ++++++++ 6 files changed, 42 insertions(+), 30 deletions(-) diff --git a/include/onyxwasm.h b/include/onyxwasm.h index e0b74e71..3ee2c499 100644 --- a/include/onyxwasm.h +++ b/include/onyxwasm.h @@ -312,6 +312,7 @@ typedef struct OnyxWasmModule { bh_table(i32) type_map; bh_table(u32) loaded_file_offsets; + bh_table(u32) string_literals; bh_arr(u8) structured_jump_target; diff --git a/onyx b/onyx index 75bf841a04a72597ff158b95741bb4bda0b070ee..bedfe214813a519434ac328dfe9a62dbed941910 100755 GIT binary patch delta 20222 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 delta 20216 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 G=zjtDQZn5D diff --git a/progs/print_funcs.onyx b/progs/print_funcs.onyx index 8abf5672..a9a63b57 100644 --- a/progs/print_funcs.onyx +++ b/progs/print_funcs.onyx @@ -59,22 +59,24 @@ print_u64_with_base :: proc (n_: u64, base: u64) { m :: n % base; ch := cast(u8) 0; - if m == 0l do ch = #char "0"; - if m == 1l do ch = #char "1"; - if m == 2l do ch = #char "2"; - if m == 3l do ch = #char "3"; - if m == 4l do ch = #char "4"; - if m == 5l do ch = #char "5"; - if m == 6l do ch = #char "6"; - if m == 7l do ch = #char "7"; - if m == 8l do ch = #char "8"; - if m == 9l do ch = #char "9"; - if m == 10l do ch = #char "A"; - if m == 11l do ch = #char "B"; - if m == 12l do ch = #char "C"; - if m == 13l do ch = #char "D"; - if m == 14l do ch = #char "E"; - if m == 15l do ch = #char "F"; + + // TODO: Replace with array lookup when array literals are added + if m == 0l do ch = #char "0"; + elseif m == 1l do ch = #char "1"; + elseif m == 2l do ch = #char "2"; + elseif m == 3l do ch = #char "3"; + elseif m == 4l do ch = #char "4"; + elseif m == 5l do ch = #char "5"; + elseif m == 6l do ch = #char "6"; + elseif m == 7l do ch = #char "7"; + elseif m == 8l do ch = #char "8"; + elseif m == 9l do ch = #char "9"; + elseif m == 10l do ch = #char "A"; + elseif m == 11l do ch = #char "B"; + elseif m == 12l do ch = #char "C"; + elseif m == 13l do ch = #char "D"; + elseif m == 14l do ch = #char "E"; + elseif m == 15l do ch = #char "F"; *c = ch; c -= 1; diff --git a/progs/stack_based.onyx b/progs/stack_based.onyx index b8f409ec..d3a048c1 100644 --- a/progs/stack_based.onyx +++ b/progs/stack_based.onyx @@ -47,6 +47,7 @@ vec_add :: proc (v: Vec3, u: Vec3, use out: ^Vec3) { start :: proc #export { heap_init(); print("Hello, World!"); + print("Hello, World!"); print_ptr(__heap_start); print_ptr(__stack_base); print_ptr(__stack_top); diff --git a/src/onyxchecker.c b/src/onyxchecker.c index ac964dca..3fb2967e 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -504,6 +504,20 @@ CHECK(binaryop, AstBinaryOp* binop, b32 assignment_is_ok) { || binop->operation == Binary_Op_Bool_Or) return check_binaryop_bool(binop); + if (binop->left->type == NULL) { + onyx_message_add(Msg_Type_Unresolved_Type, + binop->token->pos, + binop->left->token->text, binop->left->token->length); + return 1; + } + + if (binop->right->type == NULL) { + onyx_message_add(Msg_Type_Unresolved_Type, + binop->token->pos, + binop->right->token->text, binop->right->token->length); + return 1; + } + if (!type_is_numeric(binop->left->type) && !type_is_pointer(binop->left->type)) { onyx_message_add(Msg_Type_Literal, binop->token->pos, @@ -542,20 +556,6 @@ CHECK(binaryop, AstBinaryOp* binop, b32 assignment_is_ok) { return 1; } - if (binop->left->type == NULL) { - onyx_message_add(Msg_Type_Unresolved_Type, - binop->token->pos, - binop->left->token->text, binop->left->token->length); - return 1; - } - - if (binop->right->type == NULL) { - onyx_message_add(Msg_Type_Unresolved_Type, - binop->token->pos, - binop->right->token->text, binop->right->token->length); - return 1; - } - if (lptr) { if (!type_is_integer(binop->right->type)) { onyx_message_add(Msg_Type_Literal, diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 75fc778b..dc821569 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -1624,6 +1624,11 @@ static void compile_string_literal(OnyxWasmModule* mod, AstStrLit* strlit) { } *des++ = '\0'; + if (bh_table_has(u32, mod->string_literals, (char *) strdata)) { + strlit->addr = bh_table_get(u32, mod->string_literals, (char *) strdata); + return; + } + u32 length = (u32) (des - strdata); WasmDatum datum = { @@ -1635,6 +1640,8 @@ static void compile_string_literal(OnyxWasmModule* mod, AstStrLit* strlit) { strlit->addr = (u32) mod->next_datum_offset, mod->next_datum_offset += length; + bh_table_put(u32, mod->string_literals, (char *) strdata, strlit->addr); + bh_arr_push(mod->data, datum); } @@ -1748,6 +1755,7 @@ OnyxWasmModule onyx_wasm_module_create(bh_allocator alloc) { bh_table_init(global_heap_allocator, module.type_map, 61); bh_table_init(global_heap_allocator, module.exports, 61); bh_table_init(global_heap_allocator, module.loaded_file_offsets, 7); + bh_table_init(global_heap_allocator, module.string_literals, 16); bh_imap_init(&module.index_map, global_heap_allocator, 128); bh_imap_init(&module.local_map, global_heap_allocator, 16); -- 2.25.1