From 3e292bbd2e4926d5f19ede98271837ba33cfb982 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 10 Aug 2020 15:24:51 -0500 Subject: [PATCH] used valgrind to find memory issues --- include/bh.h | 4 +--- onyx | Bin 386792 -> 386712 bytes src/onyx.c | 1 + src/onyxtypes.c | 17 ++++------------- src/onyxwasm.c | 10 +++++----- 5 files changed, 11 insertions(+), 21 deletions(-) diff --git a/include/bh.h b/include/bh.h index 5d498f84..b3085d29 100644 --- a/include/bh.h +++ b/include/bh.h @@ -1206,8 +1206,6 @@ char* bh_strdup(bh_allocator a, char* str) { char* t = buf; while (*t++ = *str++); - - *t = 0; return buf; } @@ -2096,7 +2094,7 @@ b32 bh_table_iter_next(bh_table_iterator* it) { step_to_next: // Step forward to find next valid - while (*it->tab == NULL && it->tab != it->endtab) { + while (it->tab != it->endtab && *it->tab == NULL) { it->tab++; } diff --git a/onyx b/onyx index 0304ad6c83f1b9756eba03cc31494cdac5723bc3..0481c589a8dd8e84b14463b082c3c9af6d809eb6 100755 GIT binary patch delta 39817 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
wmAqDQd&z5cHI;nP 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 Dm>GLK diff --git a/src/onyx.c b/src/onyx.c index 6be4e6f0..253b4eff 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -424,6 +424,7 @@ int main(int argc, char *argv[]) { compiler_state_free(&compile_state); + bh_scratch_free(&global_scratch); bh_managed_heap_free(&global_heap); return compiler_progress != ONYX_COMPILER_PROGRESS_SUCCESS; diff --git a/src/onyxtypes.c b/src/onyxtypes.c index 8134b4be..bf8d2ce1 100644 --- a/src/onyxtypes.c +++ b/src/onyxtypes.c @@ -410,19 +410,10 @@ const char* type_get_name(Type* type) { u32 type_get_alignment_log2(Type* type) { i32 store_size = type_size_of(type); - i32 is_integer = (type->Basic.flags & Basic_Flag_Integer) - || (type->Basic.flags & Basic_Flag_Pointer); - - if (is_integer) { - if (store_size == 1) return 0; - else if (store_size == 2) return 1; - else if (store_size == 4) return 2; - else if (store_size == 8) return 3; - } else { - if (store_size == 4) return 2; - else if (store_size == 8) return 3; - } - + if (store_size == 1) return 0; + else if (store_size == 2) return 1; + else if (store_size == 4) return 2; + else if (store_size == 8) return 3; return 2; } diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 665cd82f..f3355734 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -424,11 +424,11 @@ COMPILE_FUNC(store_instruction, Type* type, u32 alignment, u32 offset) { type = &basic_types[Basic_Kind_U32]; } - i32 store_size = type_size_of(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); i32 is_integer = is_basic && (type->Basic.flags & Basic_Flag_Integer); - i32 is_float = is_basic && type->Basic.flags & Basic_Flag_Float; + i32 is_float = is_basic && (type->Basic.flags & Basic_Flag_Float); if (is_pointer) { WID(WI_I32_STORE, ((WasmInstructionData) { alignment, offset })); @@ -473,8 +473,8 @@ COMPILE_FUNC(load_instruction, Type* type, u32 offset) { i32 is_basic = type->kind == Type_Kind_Basic || type->kind == Type_Kind_Pointer; i32 is_pointer = is_basic && (type->Basic.flags & Basic_Flag_Pointer); i32 is_integer = is_basic && (type->Basic.flags & Basic_Flag_Integer); - i32 is_float = is_basic && type->Basic.flags & Basic_Flag_Float; - i32 is_unsigned = is_basic && type->Basic.flags & Basic_Flag_Unsigned; + i32 is_float = is_basic && (type->Basic.flags & Basic_Flag_Float); + i32 is_unsigned = is_basic && (type->Basic.flags & Basic_Flag_Unsigned); WasmInstructionType instr = WI_NOP; i32 alignment = type_get_alignment_log2(type); @@ -1697,7 +1697,7 @@ static void compile_memory_reservation(OnyxWasmModule* mod, AstMemRes* memres) { } if (memres->initial_value != NULL) { - u8* data = bh_alloc(mod->allocator, size); + u8* data = bh_alloc(global_heap_allocator, size); compile_raw_data(mod, data, memres->initial_value); WasmDatum datum = { -- 2.25.1