From 09f39ae2ccea78ecd37facc5431c51e4c9666630 Mon Sep 17 00:00:00 2001 From: Ginger Bill Date: Wed, 26 Oct 2016 20:10:32 +0100 Subject: Better constant strings for SSA; Fix Type_Info --- src/checker/expr.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src/checker/expr.cpp') diff --git a/src/checker/expr.cpp b/src/checker/expr.cpp index dbddfd33e..9024d3c9e 100644 --- a/src/checker/expr.cpp +++ b/src/checker/expr.cpp @@ -248,16 +248,17 @@ void check_fields(Checker *c, AstNode *node, AstNodeArray decls, CycleChecker *cycle_checker, String context) { PROF_PROC(); + gbTempArenaMemory tmp = gb_temp_arena_memory_begin(&c->tmp_arena); + defer (gb_temp_arena_memory_end(tmp)); + Map entity_map = {}; - map_init(&entity_map, heap_allocator()); - defer (map_destroy(&entity_map)); + map_init_with_reserve(&entity_map, c->tmp_allocator, 2*(field_count+other_field_count)); + // defer (map_destroy(&entity_map)); isize other_field_index = 0; Entity *using_index_expr = NULL; - gbTempArenaMemory tmp = gb_temp_arena_memory_begin(&c->tmp_arena); - defer (gb_temp_arena_memory_end(tmp)); struct Delay { Entity *e; AstNode *t; @@ -661,9 +662,13 @@ void check_enum_type(Checker *c, Type *enum_type, Type *named_type, AstNode *nod GB_ASSERT(is_type_enum(enum_type)); ast_node(et, EnumType, node); + + gbTempArenaMemory tmp = gb_temp_arena_memory_begin(&c->tmp_arena); + defer (gb_temp_arena_memory_end(tmp)); + Map entity_map = {}; - map_init(&entity_map, heap_allocator()); - defer (map_destroy(&entity_map)); + map_init_with_reserve(&entity_map, c->tmp_allocator, 2*(et->fields.count)); + // defer (map_destroy(&entity_map)); Type *base_type = t_int; if (et->base_type != NULL) { -- cgit v1.2.3