From 983a2ad5df3b945e0414a14f3dc2e24eed9e4d99 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sun, 28 Jun 2020 11:03:11 -0500 Subject: [PATCH] Using managed heap allocator; slight code cleanup --- include/onyxutils.h | 3 +++ onyx | Bin 211768 -> 207800 bytes src/onyx.c | 9 +++++---- src/onyxparser.c | 28 ++++++++++++++-------------- src/onyxutils.c | 3 +++ 5 files changed, 25 insertions(+), 18 deletions(-) diff --git a/include/onyxutils.h b/include/onyxutils.h index a63e4558..07fa1e82 100644 --- a/include/onyxutils.h +++ b/include/onyxutils.h @@ -5,4 +5,7 @@ extern bh_scratch global_scratch; extern bh_allocator global_scratch_allocator; +extern bh_managed_heap global_heap; +extern bh_allocator global_heap_allocator; + void onyx_ast_print(OnyxAstNode* program, i32 indent); diff --git a/onyx b/onyx index d5be33e57d0629b73bd995d573b0bccb0f1d44a8..5efd862d4d244b3c8d906154ea89784eeba3b227 100755 GIT binary patch delta 42381 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∋&*u6kDm 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 diff --git a/src/onyx.c b/src/onyx.c index 4dd19f35..ef5914e0 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -190,12 +190,13 @@ void compiler_state_free(CompilerState* cs) { int main(int argc, char *argv[]) { - bh_allocator alloc = bh_heap_allocator(); - - bh_scratch_init(&global_scratch, alloc, 16 * 1024); // NOTE: 16 KB + bh_scratch_init(&global_scratch, bh_heap_allocator(), 16 * 1024); // NOTE: 16 KB global_scratch_allocator = bh_scratch_allocator(&global_scratch); - OnyxCompileOptions compile_opts = compile_opts_parse(alloc, argc, argv); + bh_managed_heap_init(&global_heap); + global_heap_allocator = bh_managed_heap_allocator(&global_heap); + + OnyxCompileOptions compile_opts = compile_opts_parse(global_heap_allocator, argc, argv); CompilerState compile_state = { .wasm_mod = { 0 } }; diff --git a/src/onyxparser.c b/src/onyxparser.c index b0014149..c5259613 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -125,7 +125,7 @@ static OnyxToken* expect(OnyxParser* parser, OnyxTokenType token_type) { } static OnyxAstNodeNumLit* parse_numeric_literal(OnyxParser* parser) { - OnyxAstNodeNumLit* lit_node = (OnyxAstNodeNumLit *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_LITERAL); + OnyxAstNodeNumLit* lit_node = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_LITERAL); lit_node->token = expect(parser, TOKEN_TYPE_LITERAL_NUMERIC); lit_node->flags |= ONYX_AST_FLAG_COMPTIME; lit_node->value.l = 0ll; @@ -204,7 +204,7 @@ static OnyxAstNode* parse_factor(OnyxParser* parser) { } // NOTE: Function call - OnyxAstNodeCall* call_node = (OnyxAstNodeCall *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_CALL); + OnyxAstNodeCall* call_node = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_CALL); call_node->token = expect(parser, TOKEN_TYPE_OPEN_PAREN); call_node->callee = sym_node; // NOTE: Return type is stored on function definition's type @@ -249,7 +249,7 @@ static OnyxAstNode* parse_factor(OnyxParser* parser) { case TOKEN_TYPE_LITERAL_BOOL_TRUE: { - OnyxAstNodeNumLit* bool_node = (OnyxAstNodeNumLit *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_LITERAL); + OnyxAstNodeNumLit* bool_node = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_LITERAL); bool_node->type = &builtin_types[ONYX_TYPE_INFO_KIND_BOOL]; bool_node->token = expect(parser, TOKEN_TYPE_LITERAL_BOOL_TRUE); bool_node->value.i = 1; @@ -259,7 +259,7 @@ static OnyxAstNode* parse_factor(OnyxParser* parser) { case TOKEN_TYPE_LITERAL_BOOL_FALSE: { - OnyxAstNodeNumLit* bool_node = (OnyxAstNodeNumLit *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_LITERAL); + OnyxAstNodeNumLit* bool_node = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_LITERAL); bool_node->type = &builtin_types[ONYX_TYPE_INFO_KIND_BOOL]; bool_node->token = expect(parser, TOKEN_TYPE_LITERAL_BOOL_FALSE); bool_node->value.i = 0; @@ -380,7 +380,7 @@ static OnyxAstNodeIf* parse_if_stmt(OnyxParser* parser) { OnyxAstNode* cond = parse_expression(parser); OnyxAstNode* true_block = (OnyxAstNode *) parse_block(parser); - OnyxAstNodeIf* if_node = (OnyxAstNodeIf *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_IF); + OnyxAstNodeIf* if_node = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_IF); OnyxAstNodeIf* root_if = if_node; if_node->cond = cond; @@ -389,7 +389,7 @@ static OnyxAstNodeIf* parse_if_stmt(OnyxParser* parser) { while (parser->curr_token->type == TOKEN_TYPE_KEYWORD_ELSEIF) { parser_next_token(parser); - OnyxAstNodeIf* elseif_node = (OnyxAstNodeIf *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_IF); + OnyxAstNodeIf* elseif_node = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_IF); cond = parse_expression(parser); true_block = (OnyxAstNode *) parse_block(parser); @@ -419,7 +419,7 @@ static OnyxAstNodeWhile* parse_while_stmt(OnyxParser* parser) { OnyxAstNode* cond = parse_expression(parser); OnyxAstNodeBlock* body = parse_block(parser); - OnyxAstNodeWhile* while_node = (OnyxAstNodeWhile *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_WHILE); + OnyxAstNodeWhile* while_node = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_WHILE); while_node->token = while_token; while_node->cond = cond; while_node->body = body; @@ -445,7 +445,7 @@ static b32 parse_symbol_statement(OnyxParser* parser, OnyxAstNode** ret) { type = parse_type(parser); } - OnyxAstNodeLocal* local = (OnyxAstNodeLocal*) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_LOCAL); + OnyxAstNodeLocal* local = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_LOCAL); local->token = symbol; local->type = type; local->flags |= ONYX_AST_FLAG_LVAL; // NOTE: DELETE @@ -591,8 +591,8 @@ static OnyxAstNode* parse_statement(OnyxParser* parser) { } static OnyxAstNodeBlock* parse_block(OnyxParser* parser) { - OnyxAstNodeBlock* block = (OnyxAstNodeBlock *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_BLOCK); - OnyxAstNodeScope* scope = (OnyxAstNodeScope *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_SCOPE); + OnyxAstNodeBlock* block = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_BLOCK); + OnyxAstNodeScope* scope = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_SCOPE); block->scope = scope; // --- is for an empty block @@ -666,7 +666,7 @@ static OnyxAstNodeParam* parse_function_params(OnyxParser* parser) { symbol = expect(parser, TOKEN_TYPE_SYMBOL); - curr_param = (OnyxAstNodeParam *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_PARAM); + curr_param = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_PARAM); curr_param->token = symbol; curr_param->type = parse_type(parser); curr_param->flags |= ONYX_AST_FLAG_CONST; @@ -686,7 +686,7 @@ static OnyxAstNodeParam* parse_function_params(OnyxParser* parser) { static OnyxAstNodeFuncDef* parse_function_definition(OnyxParser* parser) { expect(parser, TOKEN_TYPE_KEYWORD_PROC); - OnyxAstNodeFuncDef* func_def = (OnyxAstNodeFuncDef *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_FUNCDEF); + OnyxAstNodeFuncDef* func_def = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_FUNCDEF); OnyxAstNodeParam* params = parse_function_params(parser); func_def->params = params; @@ -716,7 +716,7 @@ static OnyxAstNode* parse_top_level_symbol(OnyxParser* parser) { } else if (parser->curr_token->type == TOKEN_TYPE_KEYWORD_FOREIGN) { parser_next_token(parser); - OnyxAstNodeForeign* foreign = (OnyxAstNodeForeign *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_FOREIGN); + OnyxAstNodeForeign* foreign = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_FOREIGN); foreign->mod_token = expect(parser, TOKEN_TYPE_LITERAL_STRING); foreign->name_token = expect(parser, TOKEN_TYPE_LITERAL_STRING); foreign->import = parse_top_level_symbol(parser); @@ -833,7 +833,7 @@ void onyx_parser_free(OnyxParser* parser) { } OnyxAstNodeFile* onyx_parse(OnyxParser *parser) { - OnyxAstNodeFile* program = (OnyxAstNodeFile *) onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_PROGRAM); + OnyxAstNodeFile* program = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_PROGRAM); OnyxAstNode** prev_stmt = &program->contents; OnyxAstNode* curr_stmt = NULL; diff --git a/src/onyxutils.c b/src/onyxutils.c index f5f90a92..c98dd67f 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -5,6 +5,9 @@ bh_scratch global_scratch; bh_allocator global_scratch_allocator; +bh_managed_heap global_heap; +bh_allocator global_heap_allocator; + #define print_indent { if (indent > 0) bh_printf("\n"); for (int i = 0; i < indent; i++) bh_printf(" "); } void onyx_ast_print(OnyxAstNode* node, i32 indent) { -- 2.25.1