From a01d4beb4295b3d25e83223526b1dcc0287c9742 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Wed, 20 Jan 2021 13:57:02 -0600 Subject: [PATCH] major code cleanup; removed old structures that didn't need to exist. Everything is now part of a global "Context" that everything has access to. --- bin/onyx | Bin 335800 -> 335760 bytes build.bat | 2 +- build.sh | 2 +- include/onyxastnodes.h | 39 +++++-- include/onyxdoc.h | 2 +- include/onyxerrors.h | 9 +- include/onyxparser.h | 3 +- include/onyxsempass.h | 38 ------- include/onyxutils.h | 5 +- include/onyxwasm.h | 2 +- onyx.exe | Bin 389120 -> 388608 bytes src/onyx.c | 223 ++++++++++++++++++----------------------- src/onyxastnodes.c | 7 +- src/onyxbuiltins.c | 12 +-- src/onyxchecker.c | 71 ++++++------- src/onyxdoc.c | 4 +- src/onyxerrors.c | 16 +-- src/onyxparser.c | 17 +--- src/onyxsempass.c | 23 ----- src/onyxsymres.c | 107 ++++++++++---------- src/onyxutils.c | 52 ++++------ 21 files changed, 272 insertions(+), 362 deletions(-) delete mode 100644 include/onyxsempass.h delete mode 100644 src/onyxsempass.c diff --git a/bin/onyx b/bin/onyx index 8ce0cff977b315bd38d9ebefd4dcb02963e4c12c..707c6d4bdeae3e61431bef9ca75efcb14ab89fb2 100755 GIT binary patch delta 113601 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

-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 delta 114765 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 -#define ONYX_ERR_BUFFER_SIZE 256 - typedef struct OnyxError { OnyxFilePos pos; char *text; @@ -17,16 +15,15 @@ typedef struct OnyxErrors { bh_arena msg_arena; bh_allocator msg_alloc; - // NOTE: Pointer to a table mapping file paths to - // their file contents. Used for better error messages - bh_table(bh_file_contents)* file_contents; + // NOTE: Pointer to a array of all the loaded files. + bh_arr(bh_file_contents)* file_contents; bh_arr(OnyxError) errors; } OnyxErrors; extern OnyxErrors msgs; -void onyx_errors_init(bh_table(bh_file_contents)* files); +void onyx_errors_init(bh_arr(bh_file_contents)* files); void onyx_report_error(OnyxFilePos pos, char * format, ...); void onyx_errors_print(); b32 onyx_has_errors(); diff --git a/include/onyxparser.h b/include/onyxparser.h index 1b0bfc2e..072f91c5 100644 --- a/include/onyxparser.h +++ b/include/onyxparser.h @@ -29,7 +29,6 @@ typedef struct PolymorphicContext { typedef struct OnyxParser { bh_allocator allocator; - ProgramInfo *program; Package *package; Scope *file_scope; @@ -49,7 +48,7 @@ typedef struct OnyxParser { const char* onyx_ast_node_kind_string(AstKind kind); void* onyx_ast_node_new(bh_allocator alloc, i32 size, AstKind kind); -OnyxParser onyx_parser_create(bh_allocator alloc, OnyxTokenizer *tokenizer, ProgramInfo *program); +OnyxParser onyx_parser_create(bh_allocator alloc, OnyxTokenizer *tokenizer); void onyx_parser_free(OnyxParser* parser); ParseResults onyx_parse(OnyxParser *parser); diff --git a/include/onyxsempass.h b/include/onyxsempass.h deleted file mode 100644 index cf75178e..00000000 --- a/include/onyxsempass.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef ONYXSEMPASS_H -#define ONYXSEMPASS_H - -#include "bh.h" - -#include "onyxlex.h" -#include "onyxastnodes.h" -#include "onyxerrors.h" - -typedef struct SemState { - // NOTE: Adding node_allocator in case we need - // to make any more node in the tree - bh_allocator allocator, node_allocator; - - // NOTE: Used wherever - ProgramInfo* program; - - // NOTE: Used in symbol resolution phase - Package* curr_package; - Scope* global_scope; - Scope* curr_scope; - AstFunction* curr_function; - bh_arr(AstBlock *) block_stack; - - // NOTE: Used in type checking phase - Type* expected_return_type; - - u32 defer_allowed : 1; -} SemState; - -extern SemState semstate; - -AstType* symres_type(AstType* type); - -// TODO: This should be moved elsewhere. -void onyx_sempass_init(bh_allocator alloc, bh_allocator node_alloc); - -#endif diff --git a/include/onyxutils.h b/include/onyxutils.h index dd7492dd..1eeb305c 100644 --- a/include/onyxutils.h +++ b/include/onyxutils.h @@ -10,9 +10,8 @@ extern bh_allocator global_heap_allocator; const char* onyx_ast_node_kind_string(AstKind kind); -void program_info_init(ProgramInfo* prog, bh_allocator alloc); -Package* program_info_package_lookup(ProgramInfo* prog, char* package_name); -Package* program_info_package_lookup_or_create(ProgramInfo* prog, char* package_name, Scope* parent_scope, bh_allocator alloc); +Package* package_lookup(char* package_name); +Package* package_lookup_or_create(char* package_name, Scope* parent_scope, bh_allocator alloc); void scope_include(Scope* target, Scope* source, OnyxFilePos pos); b32 symbol_introduce(Scope* scope, OnyxToken* tkn, AstNode* symbol); diff --git a/include/onyxwasm.h b/include/onyxwasm.h index a86b140a..4e6dc719 100644 --- a/include/onyxwasm.h +++ b/include/onyxwasm.h @@ -546,7 +546,7 @@ typedef struct OnyxWasmModule { extern OnyxWasmModule global_wasm_module; OnyxWasmModule onyx_wasm_module_create(bh_allocator alloc); -void onyx_wasm_module_compile(OnyxWasmModule* module, ProgramInfo* program); +void onyx_wasm_module_compile(OnyxWasmModule* module); void onyx_wasm_module_free(OnyxWasmModule* module); void onyx_wasm_module_write_to_file(OnyxWasmModule* module, bh_file file); diff --git a/onyx.exe b/onyx.exe index 11157fc213d3e7a80db82822f838879e37c475d7..6673435ddbd185386f7f0ed05b4d79cd60b56121 100644 GIT binary patch delta 91683 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 z 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 Ki9g#V75^U!`2vLi diff --git a/src/onyx.c b/src/onyx.c index a2abd811..e0442773 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -5,7 +5,6 @@ #include "onyxlex.h" #include "onyxerrors.h" #include "onyxparser.h" -#include "onyxsempass.h" #include "onyxutils.h" #include "onyxwasm.h" #include "onyxdoc.h" @@ -24,6 +23,8 @@ +Context context; + static const char* docstring = "Onyx compiler version " VERSION "\n" "\n" @@ -39,26 +40,8 @@ static const char* docstring = "Onyx compiler version " VERSION "\n" "\t-o Specify the target file (default: out.wasm)\n" "\t--verbose Verbose output\n"; -typedef enum CompileAction { - ONYX_COMPILE_ACTION_COMPILE, - ONYX_COMPILE_ACTION_DOCUMENT, - ONYX_COMPILE_ACTION_PRINT_HELP, -} CompileAction; - -typedef struct OnyxCompileOptions { - bh_allocator allocator; - CompileAction action; - - u32 verbose_output : 2; - u32 fun_output : 1; - - bh_arr(const char *) included_folders; - bh_arr(const char *) files; - const char* target_file; -} OnyxCompileOptions; - -static OnyxCompileOptions compile_opts_parse(bh_allocator alloc, int argc, char *argv[]) { - OnyxCompileOptions options = { +static CompileOptions compile_opts_parse(bh_allocator alloc, int argc, char *argv[]) { + CompileOptions options = { .allocator = alloc, .action = ONYX_COMPILE_ACTION_PRINT_HELP, @@ -116,7 +99,7 @@ static OnyxCompileOptions compile_opts_parse(bh_allocator alloc, int argc, char return options; } -static void compile_opts_free(OnyxCompileOptions* opts) { +static void compile_opts_free(CompileOptions* opts) { bh_arr_free(opts->files); bh_arr_free(opts->included_folders); } @@ -133,18 +116,7 @@ typedef enum CompilerProgress { ONYX_COMPILER_PROGRESS_SUCCESS } CompilerProgress; -typedef struct CompilerState { - OnyxCompileOptions* options; - - bh_arena ast_arena, sp_arena; - bh_allocator token_alloc, ast_alloc, sp_alloc; - - bh_table(bh_file_contents) loaded_files; - - ProgramInfo prog_info; -} CompilerState; - -static char* lookup_included_file(CompilerState* cs, char* filename); +static char* lookup_included_file(char* filename); static AstInclude* create_load(bh_allocator alloc, char* filename) { AstInclude* include_node = onyx_ast_node_new(alloc, sizeof(AstInclude), Ast_Kind_Load_File); @@ -153,44 +125,44 @@ static AstInclude* create_load(bh_allocator alloc, char* filename) { return include_node; } -static void compiler_state_init(CompilerState* compiler_state, OnyxCompileOptions* opts) { - compiler_state->options = opts; +static void context_init(CompileOptions* opts) { + context.options = opts; - program_info_init(&compiler_state->prog_info, global_heap_allocator); + context.global_scope = scope_create(global_heap_allocator, NULL, (OnyxFilePos) { 0 }); + bh_table_init(global_heap_allocator, context.packages, 16); - bh_table_init(opts->allocator, compiler_state->loaded_files, 15); - onyx_errors_init(&compiler_state->loaded_files); + // NOTE: This will be initialized upon the first call to entity_heap_insert. + context.entities.entities = NULL; - compiler_state->token_alloc = opts->allocator; + onyx_errors_init(&context.loaded_files); - // NOTE: Create the arena where AST nodes will exist + // NOTE: Create the arena where tokens and AST nodes will exist // Prevents nodes from being scattered across memory due to fragmentation - bh_arena_init(&compiler_state->ast_arena, opts->allocator, 16 * 1024 * 1024); // 16MB - compiler_state->ast_alloc = bh_arena_allocator(&compiler_state->ast_arena); - - bh_arena_init(&compiler_state->sp_arena, opts->allocator, 16 * 1024); - compiler_state->sp_alloc = bh_arena_allocator(&compiler_state->sp_arena); + bh_arena_init(&context.token_arena, global_heap_allocator, 16 * 1024 * 1024); // 16MB + context.token_alloc = bh_arena_allocator(&context.token_arena); - onyx_sempass_init(compiler_state->sp_alloc, compiler_state->ast_alloc); + bh_arena_init(&context.ast_arena, global_heap_allocator, 16 * 1024 * 1024); // 16MB + context.ast_alloc = bh_arena_allocator(&context.ast_arena); // HACK - global_wasm_module = onyx_wasm_module_create(compiler_state->options->allocator); + // MOVE TO CONTEXT + global_wasm_module = onyx_wasm_module_create(context.options->allocator); // NOTE: Add builtin entities to pipeline. - entity_heap_insert(&compiler_state->prog_info.entities, ((Entity) { + entity_heap_insert(&context.entities, ((Entity) { .state = Entity_State_Parse_Builtin, .type = Entity_Type_Load_File, .package = NULL, - .include = create_load(compiler_state->sp_alloc, "core/builtin"), + .include = create_load(context.ast_alloc, "core/builtin"), })); - entity_heap_insert(&compiler_state->prog_info.entities, ((Entity) { + entity_heap_insert(&context.entities, ((Entity) { .state = Entity_State_Resolve_Symbols, .type = Entity_Type_Global_Header, .global = &builtin_stack_top })); - entity_heap_insert(&compiler_state->prog_info.entities, ((Entity) { + entity_heap_insert(&context.entities, ((Entity) { .state = Entity_State_Resolve_Symbols, .type = Entity_Type_Global, .global = &builtin_stack_top @@ -198,27 +170,26 @@ static void compiler_state_init(CompilerState* compiler_state, OnyxCompileOption // NOTE: Add all files passed by command line to the queue bh_arr_each(const char *, filename, opts->files) { - entity_heap_insert(&compiler_state->prog_info.entities, ((Entity) { + entity_heap_insert(&context.entities, ((Entity) { .state = Entity_State_Parse, .type = Entity_Type_Load_File, .package = NULL, - .include = create_load(compiler_state->sp_alloc, (char *) *filename), + .include = create_load(context.ast_alloc, (char *) *filename), })); } } -static void compiler_state_free(CompilerState* cs) { - bh_arena_free(&cs->ast_arena); - bh_arena_free(&cs->sp_arena); - bh_table_free(cs->loaded_files); +static void context_free() { + bh_arena_free(&context.ast_arena); + bh_arr_free(context.loaded_files); - compile_opts_free(cs->options); + compile_opts_free(context.options); } // NOTE: This should not be called until immediately before using the return value. // This function can return a static variable which will change if this is called // another time. -brendanfh 2020/10/09 -static char* lookup_included_file(CompilerState* cs, char* filename) { +static char* lookup_included_file(char* filename) { static char path[256]; fori (i, 0, 256) path[i] = 0; @@ -239,7 +210,7 @@ static char* lookup_included_file(CompilerState* cs, char* filename) { fori (i, 0, 128) if (fn[i] == '/') fn[i] = DIR_SEPARATOR; - bh_arr_each(const char *, folder, cs->options->included_folders) { + bh_arr_each(const char *, folder, context.options->included_folders) { if ((*folder)[strlen(*folder) - 1] != DIR_SEPARATOR) bh_snprintf(path, 256, "%s%c%s", *folder, DIR_SEPARATOR, fn); else @@ -253,15 +224,16 @@ static char* lookup_included_file(CompilerState* cs, char* filename) { #undef DIR_SEPARATOR } -static ParseResults parse_source_file(CompilerState* compiler_state, bh_file_contents* file_contents) { - OnyxTokenizer tokenizer = onyx_tokenizer_create(compiler_state->token_alloc, file_contents); +static ParseResults parse_source_file(bh_file_contents* file_contents) { + // :Remove passing the allocators as parameters + OnyxTokenizer tokenizer = onyx_tokenizer_create(context.token_alloc, file_contents); onyx_lex_tokens(&tokenizer); - OnyxParser parser = onyx_parser_create(compiler_state->ast_alloc, &tokenizer, &compiler_state->prog_info); + OnyxParser parser = onyx_parser_create(context.ast_alloc, &tokenizer); return onyx_parse(&parser); } -static void merge_parse_results(CompilerState* compiler_state, ParseResults* results) { +static void merge_parse_results(ParseResults* results) { Entity ent; bh_arr_each(NodeToProcess, n, results->nodes_to_process) { AstNode* node = n->node; @@ -276,7 +248,7 @@ static void merge_parse_results(CompilerState* compiler_state, ParseResults* res ent.state = Entity_State_Parse; ent.type = Entity_Type_Load_File; ent.include = (AstInclude *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); break; } @@ -284,7 +256,7 @@ static void merge_parse_results(CompilerState* compiler_state, ParseResults* res ent.state = Entity_State_Parse; ent.type = Entity_Type_Load_Path; ent.include = (AstInclude *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); break; } @@ -292,16 +264,16 @@ static void merge_parse_results(CompilerState* compiler_state, ParseResults* res if ((node->flags & Ast_Flag_Foreign) != 0) { ent.type = Entity_Type_Foreign_Function_Header; ent.function = (AstFunction *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); } else { ent.type = Entity_Type_Function_Header; ent.function = (AstFunction *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); ent.type = Entity_Type_Function; ent.function = (AstFunction *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); } break; } @@ -309,7 +281,7 @@ static void merge_parse_results(CompilerState* compiler_state, ParseResults* res case Ast_Kind_Overloaded_Function: { ent.type = Entity_Type_Overloaded_Function; ent.overloaded_function = (AstOverloadedFunction *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); break; } @@ -317,16 +289,16 @@ static void merge_parse_results(CompilerState* compiler_state, ParseResults* res if ((node->flags & Ast_Flag_Foreign) != 0) { ent.type = Entity_Type_Foreign_Global_Header; ent.global = (AstGlobal *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); } else { ent.type = Entity_Type_Global_Header; ent.global = (AstGlobal *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); ent.type = Entity_Type_Global; ent.global = (AstGlobal *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); } break; } @@ -334,21 +306,21 @@ static void merge_parse_results(CompilerState* compiler_state, ParseResults* res case Ast_Kind_StrLit: { ent.type = Entity_Type_String_Literal; ent.strlit = (AstStrLit *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); break; } case Ast_Kind_File_Contents: { ent.type = Entity_Type_File_Contents; ent.file_contents = (AstFileContents *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); break; } case Ast_Kind_Struct_Type: { ent.type = Entity_Type_Struct_Member_Default; ent.type_alias = (AstType *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); // fallthrough } @@ -356,64 +328,70 @@ static void merge_parse_results(CompilerState* compiler_state, ParseResults* res case Ast_Kind_Type_Alias: { ent.type = Entity_Type_Type_Alias; ent.type_alias = (AstType *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); break; } case Ast_Kind_Enum_Type: { ent.type = Entity_Type_Enum; ent.enum_type = (AstEnumType *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); break; } case Ast_Kind_Use_Package: { ent.type = Entity_Type_Use_Package; ent.use_package = (AstUsePackage *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); break; } case Ast_Kind_Use: { ent.type = Entity_Type_Use; ent.use = (AstUse *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); break; } case Ast_Kind_Memres: { ent.type = Entity_Type_Memory_Reservation_Type; ent.mem_res = (AstMemRes *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); ent.type = Entity_Type_Memory_Reservation; ent.mem_res = (AstMemRes *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); break; } case Ast_Kind_Polymorphic_Proc: { ent.type = Entity_Type_Polymorphic_Proc; ent.poly_proc = (AstPolyProc *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); break; } default: { ent.type = Entity_Type_Expression; ent.expr = (AstTyped *) node; - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); break; } } } } -static CompilerProgress process_source_file(CompilerState* compiler_state, char* filename) { - if (bh_table_has(bh_file_contents, compiler_state->loaded_files, filename)) return ONYX_COMPILER_PROGRESS_SUCCESS; +static CompilerProgress process_source_file(char* filename) { + bh_arr_each(bh_file_contents, fc, context.loaded_files) { + // CLEANUP: Add duplicate resolutions, such as + // ./foo and ./test/../foo + // should be the same thing. + if (!strcmp(fc->filename, filename)) { + return ONYX_COMPILER_PROGRESS_SUCCESS; + } + } bh_file file; - bh_file_error err = bh_file_open(&file, filename); if (err != BH_FILE_ERROR_NONE) { // bh_printf_err("Failed to open file %s\n", filename); @@ -421,7 +399,7 @@ static CompilerProgress process_source_file(CompilerState* compiler_state, char* return ONYX_COMPILER_PROGRESS_FAILED_READ; } - bh_file_contents fc = bh_file_read_contents(compiler_state->token_alloc, &file); + bh_file_contents fc = bh_file_read_contents(context.token_alloc, &file); bh_file_close(&file); // POTENTIAL BUG: If there are too many files and too many collisions in the table, @@ -435,15 +413,14 @@ static CompilerProgress process_source_file(CompilerState* compiler_state, char* // NOTE: Need to reget the value out of the table so token references work - bh_table_put(bh_file_contents, compiler_state->loaded_files, (char *) filename, fc); - fc = bh_table_get(bh_file_contents, compiler_state->loaded_files, (char *) filename); + bh_arr_push(context.loaded_files, fc); - if (compiler_state->options->verbose_output == 2) { + if (context.options->verbose_output == 2) { bh_printf("Processing source file: %s (%d bytes)\n", file.filename, fc.length); } - ParseResults results = parse_source_file(compiler_state, &fc); - merge_parse_results(compiler_state, &results); + ParseResults results = parse_source_file(&fc); + merge_parse_results(&results); if (onyx_has_errors()) { return ONYX_COMPILER_PROGRESS_FAILED_PARSE; @@ -452,27 +429,27 @@ static CompilerProgress process_source_file(CompilerState* compiler_state, char* } } -static b32 process_load_entity(CompilerState* compiler_state, Entity* ent) { +static b32 process_load_entity(Entity* ent) { assert(ent->type == Entity_Type_Load_File || ent->type == Entity_Type_Load_Path); AstInclude* include = ent->include; if (include->kind == Ast_Kind_Load_File) { - char* filename = lookup_included_file(compiler_state, include->name); + char* filename = lookup_included_file(include->name); char* formatted_name = bh_strdup(global_heap_allocator, filename); - process_source_file(compiler_state, formatted_name); + process_source_file(formatted_name); } else if (include->kind == Ast_Kind_Load_Path) { - bh_arr_push(compiler_state->options->included_folders, include->name); + bh_arr_push(context.options->included_folders, include->name); } return 1; } -static b32 process_entity(CompilerState* compiler_state, Entity* ent) { +static b32 process_entity(Entity* ent) { i32 changed = 1; - if (compiler_state->options->verbose_output == 3) { + if (context.options->verbose_output == 3) { if (ent->expr && ent->expr->token) printf("%s | %s | %s:%i:%i\n", entity_state_strings[ent->state], @@ -484,17 +461,16 @@ static b32 process_entity(CompilerState* compiler_state, Entity* ent) { switch (ent->state) { case Entity_State_Parse_Builtin: - process_load_entity(compiler_state, ent); + process_load_entity(ent); ent->state = Entity_State_Finalized; if (onyx_has_errors()) return 0; - initialize_builtins(compiler_state->ast_alloc, &compiler_state->prog_info); - semstate.program = &compiler_state->prog_info; + initialize_builtins(context.ast_alloc); break; case Entity_State_Parse: - process_load_entity(compiler_state, ent); + process_load_entity(ent); ent->state = Entity_State_Finalized; break; @@ -510,8 +486,8 @@ static b32 process_entity(CompilerState* compiler_state, Entity* ent) { } // Just having fun with some visual output - brendanfh 2020/12/14 -static void output_dummy_progress_bar(CompilerState* compiler_state) { - EntityHeap* eh = &compiler_state->prog_info.entities; +static void output_dummy_progress_bar() { + EntityHeap* eh = &context.entities; printf("\e[2;1H"); for (i32 i = 0; i < Entity_State_Count - 1; i++) { @@ -523,19 +499,19 @@ static void output_dummy_progress_bar(CompilerState* compiler_state) { } } -static i32 onyx_compile(CompilerState* compiler_state) { +static i32 onyx_compile() { u64 start_time = bh_time_curr(); - if (compiler_state->options->fun_output) + if (context.options->fun_output) printf("\e[2J"); - while (!bh_arr_is_empty(compiler_state->prog_info.entities.entities)) { - Entity ent = entity_heap_top(&compiler_state->prog_info.entities); - entity_heap_remove_top(&compiler_state->prog_info.entities); + while (!bh_arr_is_empty(context.entities.entities)) { + Entity ent = entity_heap_top(&context.entities); + entity_heap_remove_top(&context.entities); if (ent.state == Entity_State_Finalized) continue; - if (compiler_state->options->fun_output) { - output_dummy_progress_bar(compiler_state); + if (context.options->fun_output) { + output_dummy_progress_bar(); // Slowing things down for the effect #if defined(_BH_WINDOWS) @@ -550,7 +526,7 @@ static i32 onyx_compile(CompilerState* compiler_state) { } } - b32 changed = process_entity(compiler_state, &ent); + b32 changed = process_entity(&ent); if (onyx_has_errors()) return ONYX_COMPILER_PROGRESS_ERROR; @@ -559,23 +535,23 @@ static i32 onyx_compile(CompilerState* compiler_state) { // gonna keep this how it is for now. - brendanfh 2020/12/15 // if (changed && ent.state != Entity_State_Finalized) - entity_heap_insert(&compiler_state->prog_info.entities, ent); + entity_heap_insert(&context.entities, ent); } // NOTE: Output to file bh_file output_file; - if (bh_file_create(&output_file, compiler_state->options->target_file) != BH_FILE_ERROR_NONE) { + if (bh_file_create(&output_file, context.options->target_file) != BH_FILE_ERROR_NONE) { return ONYX_COMPILER_PROGRESS_FAILED_OUTPUT; } - if (compiler_state->options->verbose_output) + if (context.options->verbose_output) bh_printf("Outputting to WASM file: %s\n", output_file.filename); onyx_wasm_module_write_to_file(&global_wasm_module, output_file); u64 duration = bh_time_duration(start_time); - if (compiler_state->options->verbose_output > 0) { + if (context.options->verbose_output > 0) { // TODO: Replace these with bh_printf when padded formatting is added. printf("\nStatistics:\n"); printf(" Time taken: %lf seconds\n", (double) duration / 1000); @@ -595,13 +571,10 @@ int main(int argc, char *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 = { 0 }; - compiler_state_init(&compile_state, &compile_opts); + CompileOptions compile_opts = compile_opts_parse(global_heap_allocator, argc, argv); + context_init(&compile_opts); CompilerProgress compiler_progress = ONYX_COMPILER_PROGRESS_FAILED_READ; - switch (compile_opts.action) { case ONYX_COMPILE_ACTION_PRINT_HELP: // NOTE: This could probably be made better @@ -609,7 +582,7 @@ int main(int argc, char *argv[]) { return 1; case ONYX_COMPILE_ACTION_COMPILE: - compiler_progress = onyx_compile(&compile_state); + compiler_progress = onyx_compile(); break; case ONYX_COMPILE_ACTION_DOCUMENT: @@ -638,7 +611,7 @@ int main(int argc, char *argv[]) { break; } - compiler_state_free(&compile_state); + context_free(); bh_scratch_free(&global_scratch); bh_managed_heap_free(&global_heap); diff --git a/src/onyxastnodes.c b/src/onyxastnodes.c index f560b339..ef1c3e06 100644 --- a/src/onyxastnodes.c +++ b/src/onyxastnodes.c @@ -1,5 +1,4 @@ #include "onyxastnodes.h" -#include "onyxsempass.h" #include "onyxparser.h" #include "onyxutils.h" @@ -288,7 +287,7 @@ void promote_numlit_to_larger(AstNumLit* num) { // NOTE: Returns 1 if the conversion was successful. b32 convert_numlit_to_type(AstNumLit* num, Type* type) { if (num->type == NULL) - num->type = type_build_from_ast(semstate.allocator, num->type_node); + num->type = type_build_from_ast(context.ast_alloc, num->type_node); assert(num->type); if (types_are_compatible(num->type, type)) return 1; @@ -453,7 +452,7 @@ b32 type_check_or_auto_cast(AstTyped** pnode, Type* type) { if (!type_check_or_auto_cast(&compound->exprs[i], type->Compound.types[i])) return 0; } - compound->type = type_build_compound_type(semstate.node_allocator, compound); + compound->type = type_build_compound_type(context.ast_alloc, compound); return 1; } @@ -477,7 +476,7 @@ Type* resolve_expression_type(AstTyped* node) { } if (node->type == NULL) - node->type = type_build_from_ast(semstate.allocator, node->type_node); + node->type = type_build_from_ast(context.ast_alloc, node->type_node); if (node->kind == Ast_Kind_NumLit && node->type->kind == Type_Kind_Basic) { if (node->type->Basic.kind == Basic_Kind_Int_Unsized) { diff --git a/src/onyxbuiltins.c b/src/onyxbuiltins.c index 60bb9726..a978e86c 100644 --- a/src/onyxbuiltins.c +++ b/src/onyxbuiltins.c @@ -324,20 +324,16 @@ static IntrinsicMap builtin_intrinsics[] = { bh_arr(AstTyped *) operator_overloads[Binary_Op_Count] = { 0 }; -void initialize_builtins(bh_allocator a, ProgramInfo* prog) { +void initialize_builtins(bh_allocator a) { // HACK builtin_package_token.text = bh_strdup(global_heap_allocator, builtin_package_token.text); BuiltinSymbol* bsym = (BuiltinSymbol *) &builtin_symbols[0]; while (bsym->sym != NULL) { if (bsym->package == NULL) - symbol_builtin_introduce(prog->global_scope, bsym->sym, bsym->node); + symbol_builtin_introduce(context.global_scope, bsym->sym, bsym->node); else { - Package* p = program_info_package_lookup_or_create( - prog, - bsym->package, - prog->global_scope, - a); + Package* p = package_lookup_or_create(bsym->package, context.global_scope, a); assert(p); symbol_builtin_introduce(p->scope, bsym->sym, bsym->node); @@ -345,7 +341,7 @@ void initialize_builtins(bh_allocator a, ProgramInfo* prog) { bsym++; } - Package* p = program_info_package_lookup_or_create(prog, "builtin", prog->global_scope, a); + Package* p = package_lookup_or_create("builtin", context.global_scope, a); builtin_string_type = (AstType *) symbol_raw_resolve(p->scope, "str"); if (builtin_string_type == NULL) { diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 4c1d0123..6a06008a 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -1,5 +1,4 @@ #define BH_DEBUG -#include "onyxsempass.h" #include "onyxparser.h" #include "onyxutils.h" @@ -85,26 +84,29 @@ static inline void fill_in_type(AstTyped* node) { fill_in_poly_call_args(node->type_node); if (node->type == NULL) - node->type = type_build_from_ast(semstate.allocator, node->type_node); + node->type = type_build_from_ast(context.ast_alloc, node->type_node); } +// HACK: This should be baked into a structure, not a global variable. +static Type* expected_return_type = NULL; + CheckStatus check_return(AstReturn* retnode) { if (retnode->expr) { CHECK(expression, &retnode->expr); - if (!type_check_or_auto_cast(&retnode->expr, semstate.expected_return_type)) { + if (!type_check_or_auto_cast(&retnode->expr, expected_return_type)) { onyx_report_error(retnode->token->pos, "Expected to return a value of type '%s', returning value of type '%s'.", - type_get_name(semstate.expected_return_type), + type_get_name(expected_return_type), node_get_type_name(retnode->expr)); return Check_Error; } } else { - if (semstate.expected_return_type->Basic.size > 0) { + if (expected_return_type->Basic.size > 0) { onyx_report_error(retnode->token->pos, "Returning from non-void function without value. Expected a value of type '%s'.", - type_get_name(semstate.expected_return_type)); + type_get_name(expected_return_type)); return Check_Error; } } @@ -168,7 +170,7 @@ CheckStatus check_for(AstFor* fornode) { else if (iter_type->kind == Type_Kind_Array) { can_iterate = 1; - if (fornode->by_pointer) fornode->var->type = type_make_pointer(semstate.node_allocator, iter_type->Array.elem); + if (fornode->by_pointer) fornode->var->type = type_make_pointer(context.ast_alloc, iter_type->Array.elem); else fornode->var->type = iter_type->Array.elem; fornode->loop_type = For_Loop_Array; @@ -673,7 +675,7 @@ CheckStatus check_binop_assignment(AstBinaryOp* binop, b32 assignment_is_ok) { lhs->exprs[i]->type = binop->right->type->Compound.types[i]; } - lhs->type = type_build_compound_type(semstate.node_allocator, lhs); + lhs->type = type_build_compound_type(context.ast_alloc, lhs); } else { binop->left->type = binop->right->type; @@ -696,7 +698,7 @@ CheckStatus check_binop_assignment(AstBinaryOp* binop, b32 assignment_is_ok) { else if (binop->operation == Binary_Op_Assign_Shr) operation = Binary_Op_Shr; else if (binop->operation == Binary_Op_Assign_Sar) operation = Binary_Op_Sar; - AstBinaryOp* new_right = make_binary_op(semstate.node_allocator, operation, binop->left, binop->right); + AstBinaryOp* new_right = make_binary_op(context.ast_alloc, operation, binop->left, binop->right); new_right->token = binop->token; CHECK(binaryop, &new_right, 0); @@ -761,7 +763,7 @@ CheckStatus check_binaryop_compare(AstBinaryOp** pbinop) { binop->type = &basic_types[Basic_Kind_Bool]; if (binop->flags & Ast_Flag_Comptime) { // NOTE: Not a binary op - *pbinop = (AstBinaryOp *) ast_reduce(semstate.node_allocator, (AstTyped *) binop); + *pbinop = (AstBinaryOp *) ast_reduce(context.ast_alloc, (AstTyped *) binop); } return Check_Success; @@ -779,7 +781,7 @@ CheckStatus check_binaryop_bool(AstBinaryOp** pbinop) { if (binop->flags & Ast_Flag_Comptime) { // NOTE: Not a binary op - *pbinop = (AstBinaryOp *) ast_reduce(semstate.node_allocator, (AstTyped *) binop); + *pbinop = (AstBinaryOp *) ast_reduce(context.ast_alloc, (AstTyped *) binop); } return Check_Success; } @@ -798,13 +800,13 @@ static AstCall* binaryop_try_operator_overload(AstBinaryOp* binop) { return NULL; } - AstCall* implicit_call = onyx_ast_node_new(semstate.node_allocator, sizeof(AstCall), Ast_Kind_Call); + AstCall* implicit_call = onyx_ast_node_new(context.ast_alloc, sizeof(AstCall), Ast_Kind_Call); implicit_call->token = binop->token; implicit_call->callee = overload; implicit_call->va_kind = VA_Kind_Not_VA; bh_arr_each(AstTyped *, arg, args.values) - *arg = (AstTyped *) make_argument(semstate.node_allocator, *arg); + *arg = (AstTyped *) make_argument(context.ast_alloc, *arg); implicit_call->args = args; return implicit_call; @@ -872,11 +874,11 @@ CheckStatus check_binaryop(AstBinaryOp** pbinop, b32 assignment_is_ok) { resolve_expression_type(binop->right); if (!type_is_integer(binop->right->type)) goto bad_binaryop; - AstNumLit* numlit = make_int_literal(semstate.node_allocator, type_size_of(binop->left->type->Pointer.elem)); + AstNumLit* numlit = make_int_literal(context.ast_alloc, type_size_of(binop->left->type->Pointer.elem)); numlit->token = binop->right->token; numlit->type = binop->right->type; - AstBinaryOp* binop_node = make_binary_op(semstate.node_allocator, Binary_Op_Multiply, binop->right, (AstTyped *) numlit); + AstBinaryOp* binop_node = make_binary_op(context.ast_alloc, Binary_Op_Multiply, binop->right, (AstTyped *) numlit); binop_node->token = binop->token; CHECK(binaryop, &binop_node, 0); @@ -961,7 +963,7 @@ CheckStatus check_binaryop(AstBinaryOp** pbinop, b32 assignment_is_ok) { if (binop->flags & Ast_Flag_Comptime) { // NOTE: Not a binary op - *pbinop = (AstBinaryOp *) ast_reduce(semstate.node_allocator, (AstTyped *) binop); + *pbinop = (AstBinaryOp *) ast_reduce(context.ast_alloc, (AstTyped *) binop); } return Check_Success; @@ -1012,7 +1014,7 @@ CheckStatus check_unaryop(AstUnaryOp** punop) { if (unaryop->expr->flags & Ast_Flag_Comptime) { unaryop->flags |= Ast_Flag_Comptime; // NOTE: Not a unary op - *punop = (AstUnaryOp *) ast_reduce(semstate.node_allocator, (AstTyped *) unaryop); + *punop = (AstUnaryOp *) ast_reduce(context.ast_alloc, (AstTyped *) unaryop); } return Check_Success; @@ -1092,7 +1094,7 @@ CheckStatus check_array_literal(AstArrayLiteral* al) { fill_in_type((AstTyped *) al); - al->type = type_make_array(semstate.allocator, al->type, bh_arr_length(al->values)); + al->type = type_make_array(context.ast_alloc, al->type, bh_arr_length(al->values)); if (al->type == NULL || al->type->kind != Type_Kind_Array) { onyx_report_error(al->token->pos, "Expected array type for array literal. This is a compiler bug."); return Check_Error; @@ -1163,7 +1165,7 @@ CheckStatus check_compound(AstCompound* compound) { CHECK(expression, expr); } - compound->type = type_build_compound_type(semstate.node_allocator, compound); + compound->type = type_build_compound_type(context.ast_alloc, compound); return Check_Success; } @@ -1182,7 +1184,7 @@ CheckStatus check_address_of(AstAddressOf* aof) { aof->expr->flags |= Ast_Flag_Address_Taken; - aof->type = type_make_pointer(semstate.allocator, aof->expr->type); + aof->type = type_make_pointer(context.ast_alloc, aof->expr->type); return Check_Success; } @@ -1230,7 +1232,7 @@ CheckStatus check_array_access(AstArrayAccess* aa) { } aa->kind = Ast_Kind_Slice; - aa->type = type_make_slice(semstate.node_allocator, of); + aa->type = type_make_slice(context.ast_alloc, of); aa->elem_size = type_size_of(of); return Check_Success; @@ -1258,7 +1260,7 @@ CheckStatus check_array_access(AstArrayAccess* aa) { type_lookup_member(aa->addr->type, "data", &smem); - AstFieldAccess* fa = make_field_access(semstate.node_allocator, aa->addr, "data"); + AstFieldAccess* fa = make_field_access(context.ast_alloc, aa->addr, "data"); fa->type = smem.type; fa->offset = smem.offset; fa->idx = smem.idx; @@ -1307,7 +1309,7 @@ CheckStatus check_field_access(AstFieldAccess** pfield) { // CLEANUP: Duplicating the string here isn't the best for effiency, // but it fixes a lot of bugs, so here we are. // - brendanfh 2020/12/08 - field->field = bh_strdup(semstate.allocator, field->token->text); + field->field = bh_strdup(context.ast_alloc, field->token->text); token_toggle_end(field->token); } @@ -1330,7 +1332,7 @@ CheckStatus check_field_access(AstFieldAccess** pfield) { CheckStatus check_size_of(AstSizeOf* so) { fill_in_array_count(so->so_ast_type); - so->so_type = type_build_from_ast(semstate.allocator, so->so_ast_type); + so->so_type = type_build_from_ast(context.ast_alloc, so->so_ast_type); if (so->so_type == NULL) { onyx_report_error(so->token->pos, "Error with type used here."); return Check_Error; @@ -1343,7 +1345,7 @@ CheckStatus check_size_of(AstSizeOf* so) { CheckStatus check_align_of(AstAlignOf* ao) { fill_in_array_count(ao->ao_ast_type); - ao->ao_type = type_build_from_ast(semstate.allocator, ao->ao_ast_type); + ao->ao_type = type_build_from_ast(context.ast_alloc, ao->ao_ast_type); if (ao->ao_type == NULL) { onyx_report_error(ao->token->pos, "Error with type used here."); return Check_Error; @@ -1357,13 +1359,6 @@ CheckStatus check_expression(AstTyped** pexpr) { AstTyped* expr = *pexpr; if (expr->kind > Ast_Kind_Type_Start && expr->kind < Ast_Kind_Type_End) { return Check_Success; - // if (expr->token) { - // onyx_report_error(expr->token->pos, "Type used as part of an expression."); - // } - // else { - // onyx_report_error((OnyxFilePos) { 0 }, "Type used as part of an expression somewhere in the program."); - // } - // return Check_Error; } fill_in_type(expr); @@ -1533,7 +1528,7 @@ CheckStatus check_block(AstBlock* block) { } CheckStatus check_function(AstFunction* func) { - semstate.expected_return_type = func->type->Function.return_type; + expected_return_type = func->type->Function.return_type; if (func->body) { CheckStatus status = check_block(func->body); if (status != Check_Success && func->generated_from) @@ -1566,7 +1561,7 @@ CheckStatus check_overloaded_function(AstOverloadedFunction* func) { CheckStatus check_struct(AstStructType* s_node) { // NOTE: fills in the stcache - type_build_from_ast(semstate.allocator, (AstType *) s_node); + type_build_from_ast(context.ast_alloc, (AstType *) s_node); if (s_node->stcache == NULL) return Check_Error; bh_arr_each(StructMember *, smem, s_node->stcache->Struct.memarr) { @@ -1607,7 +1602,7 @@ CheckStatus check_function_header(AstFunction* func) { if (param->vararg_kind == VA_Kind_Untyped) { // HACK if (builtin_vararg_type_type == NULL) - builtin_vararg_type_type = type_build_from_ast(semstate.node_allocator, builtin_vararg_type); + builtin_vararg_type_type = type_build_from_ast(context.ast_alloc, builtin_vararg_type); local->type = builtin_vararg_type_type; } @@ -1669,7 +1664,7 @@ CheckStatus check_function_header(AstFunction* func) { if (func->return_type != NULL) CHECK(type, func->return_type); - func->type = type_build_function_type(semstate.node_allocator, func); + func->type = type_build_function_type(context.ast_alloc, func); if ((func->flags & Ast_Flag_Exported) != 0) { if ((func->flags & Ast_Flag_Foreign) != 0) { @@ -1773,10 +1768,6 @@ void check_entity(Entity* ent) { cs = check_overloaded_function(ent->overloaded_function); break; - case Entity_Type_Foreign_Global_Header: - semstate.program->foreign_global_count++; - // fallthrough - case Entity_Type_Global: cs = check_global(ent->global); break; diff --git a/src/onyxdoc.c b/src/onyxdoc.c index fbe7515d..cbb5893d 100644 --- a/src/onyxdoc.c +++ b/src/onyxdoc.c @@ -128,7 +128,7 @@ static DocPackage doc_package_create(Package* p, bh_allocator a) { return dp; } -OnyxDocumentation onyx_docs_generate(ProgramInfo* prog) { +OnyxDocumentation onyx_docs_generate() { OnyxDocumentation doc; bh_arena_init(&doc.doc_arena, global_heap_allocator, 16 * 1024); @@ -137,7 +137,7 @@ OnyxDocumentation onyx_docs_generate(ProgramInfo* prog) { doc.package_docs = NULL; bh_arr_new(global_heap_allocator, doc.package_docs, 16); - bh_table_each_start(Package *, prog->packages); + bh_table_each_start(Package *, context.packages); DocPackage dp = doc_package_create(value, a); bh_arr_push(doc.package_docs, dp); bh_table_each_end; diff --git a/src/onyxerrors.c b/src/onyxerrors.c index 682f37c9..81f009de 100644 --- a/src/onyxerrors.c +++ b/src/onyxerrors.c @@ -1,12 +1,9 @@ - #include "onyxerrors.h" #include "onyxutils.h" -#define MAX_MSGS 100 - OnyxErrors errors; -void onyx_errors_init(bh_table(bh_file_contents)* files) { +void onyx_errors_init(bh_arr(bh_file_contents)* files) { errors.file_contents = files; bh_arena_init(&errors.msg_arena, global_heap_allocator, 16 * 1024); @@ -59,8 +56,15 @@ void onyx_errors_print() { bh_arr_each(OnyxError, err, errors.errors) { if (err->pos.filename) { - bh_file_contents* fc = &bh_table_get(bh_file_contents, *errors.file_contents, (char *) err->pos.filename); - print_detailed_message(err, fc); + bh_file_contents file_contents = { 0 }; + bh_arr_each(bh_file_contents, fc, *errors.file_contents) { + if (!strcmp(fc->filename, err->pos.filename)) { + file_contents = *fc; + break; + } + } + + print_detailed_message(err, &file_contents); } else { bh_printf("(%l,%l) %s\n", err->pos.line, err->pos.column, err->text); diff --git a/src/onyxparser.c b/src/onyxparser.c index a896c54d..5f6e1016 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -2358,11 +2358,7 @@ static AstPackage* parse_package_name(OnyxParser* parser) { AstPackage* package_node = make_node(AstPackage, Ast_Kind_Package); if (parser->curr->type != Token_Type_Keyword_Package) { - Package *package = program_info_package_lookup_or_create( - parser->program, - "main", - parser->program->global_scope, - parser->allocator); + Package *package = package_lookup_or_create("main", context.global_scope, parser->allocator); package_node->token = NULL; package_node->package = package; @@ -2386,11 +2382,7 @@ static AstPackage* parse_package_name(OnyxParser* parser) { strncat(package_name, symbol->text, 1023); token_toggle_end(symbol); - Package *newpackage = program_info_package_lookup_or_create( - parser->program, - package_name, - parser->program->global_scope, - parser->allocator); + Package *newpackage = package_lookup_or_create(package_name, context.global_scope, parser->allocator); if (package != NULL) { AstPackage* pnode = make_node(AstPackage, Ast_Kind_Package); @@ -2427,14 +2419,13 @@ void* onyx_ast_node_new(bh_allocator alloc, i32 size, AstKind kind) { return node; } -OnyxParser onyx_parser_create(bh_allocator alloc, OnyxTokenizer *tokenizer, ProgramInfo* program) { +OnyxParser onyx_parser_create(bh_allocator alloc, OnyxTokenizer *tokenizer) { OnyxParser parser; parser.allocator = alloc; parser.tokenizer = tokenizer; parser.curr = tokenizer->tokens; parser.prev = NULL; - parser.program = program; parser.hit_unexpected_token = 0; parser.block_stack = NULL; @@ -2461,7 +2452,7 @@ void onyx_parser_free(OnyxParser* parser) { ParseResults onyx_parse(OnyxParser *parser) { // NOTE: Skip comments at the beginning of the file - if (parser->curr->type == Token_Type_Comment) + while (parser->curr->type == Token_Type_Comment) consume_token(parser); parser->package = parse_package_name(parser)->package; diff --git a/src/onyxsempass.c b/src/onyxsempass.c deleted file mode 100644 index 3de8b26c..00000000 --- a/src/onyxsempass.c +++ /dev/null @@ -1,23 +0,0 @@ -// TODO: This file has become useless. It should be removed soon. - -#define BH_DEBUG -#include "onyxsempass.h" -#include "onyxutils.h" - -SemState semstate; - -void onyx_sempass_init(bh_allocator alloc, bh_allocator node_alloc) { - semstate = (SemState) { - .allocator = alloc, - .node_allocator = node_alloc, - - .global_scope = NULL, - .curr_scope = NULL, - - .block_stack = NULL, - - .defer_allowed = 1, - }; - - bh_arr_new(global_heap_allocator, semstate.block_stack, 4); -} diff --git a/src/onyxsymres.c b/src/onyxsymres.c index 24d16ee9..4024070c 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -1,12 +1,14 @@ #define BH_DEBUG -#include "onyxsempass.h" #include "onyxparser.h" #include "onyxutils.h" #include "onyxastnodes.h" #include "onyxerrors.h" -static void scope_enter(Scope* new_scope); -static void scope_leave(); +// Variables used during the symbol resolution phase. +static Scope* curr_scope = NULL; +static Package* curr_package = NULL; +static AstFunction* curr_function = NULL; +bh_arr(AstBlock *) block_stack = NULL; AstType* symres_type(AstType* type); static void symres_local(AstLocal** local, b32 add_to_block_locals); @@ -37,11 +39,11 @@ static void symres_memres(AstMemRes** memres); static void symres_struct_defaults(AstType* st); static void scope_enter(Scope* new_scope) { - semstate.curr_scope = new_scope; + curr_scope = new_scope; } static void scope_leave() { - semstate.curr_scope = semstate.curr_scope->parent; + curr_scope = curr_scope->parent; } AstType* symres_type(AstType* type) { @@ -53,7 +55,7 @@ AstType* symres_type(AstType* type) { } if (type->kind == Ast_Kind_Symbol) { - return (AstType *) symbol_resolve(semstate.curr_scope, ((AstNode *) type)->token); + return (AstType *) symbol_resolve(curr_scope, ((AstNode *) type)->token); } if (type->kind == Ast_Kind_Field_Access) { @@ -183,11 +185,11 @@ AstType* symres_type(AstType* type) { if (type->kind == Ast_Kind_Poly_Struct_Type) { AstPolyStructType* pst_node = (AstPolyStructType *) type; - pst_node->scope = scope_create(semstate.node_allocator, semstate.curr_scope, pst_node->token->pos); + pst_node->scope = scope_create(context.ast_alloc, curr_scope, pst_node->token->pos); bh_arr_each(AstPolyStructParam, param, pst_node->poly_params) { param->type_node = symres_type(param->type_node); - param->type = type_build_from_ast(semstate.node_allocator, param->type_node); + param->type = type_build_from_ast(context.ast_alloc, param->type_node); } return type; @@ -228,12 +230,12 @@ static void symres_local(AstLocal** local, b32 add_to_block_locals) { // of unique WASM locals and stack space needed. // - brendanfh 2020/12/16 if (add_to_block_locals) - bh_arr_push(bh_arr_last(semstate.block_stack)->allocate_exprs, (AstTyped *) *local); + bh_arr_push(bh_arr_last(block_stack)->allocate_exprs, (AstTyped *) *local); - bh_arr_push(semstate.curr_function->allocate_exprs, (AstTyped *) *local); + bh_arr_push(curr_function->allocate_exprs, (AstTyped *) *local); if ((*local)->token != NULL) - symbol_introduce(semstate.curr_scope, (*local)->token, (AstNode *) *local); + symbol_introduce(curr_scope, (*local)->token, (AstNode *) *local); } static void symres_arguments(Arguments* args) { @@ -306,7 +308,7 @@ static void symres_pipe(AstBinaryOp** pipe) { if ((*pipe)->left == NULL) return; bh_arr_insertn(call_node->args.values, 0, 1); - call_node->args.values[0] = (AstTyped *) make_argument(semstate.node_allocator, (*pipe)->left); + call_node->args.values[0] = (AstTyped *) make_argument(context.ast_alloc, (*pipe)->left); call_node->next = (*pipe)->next; // NOTE: Not a BinaryOp node @@ -346,9 +348,9 @@ static void symres_array_literal(AstArrayLiteral* al) { bh_arr_each(AstTyped *, expr, al->values) symres_expression(expr); - if (bh_arr_length(semstate.block_stack) > 0) { - bh_arr_push(bh_arr_last(semstate.block_stack)->allocate_exprs, (AstTyped *) al); - bh_arr_push(semstate.curr_function->allocate_exprs, (AstTyped *) al); + if (bh_arr_length(block_stack) > 0) { + bh_arr_push(bh_arr_last(block_stack)->allocate_exprs, (AstTyped *) al); + bh_arr_push(curr_function->allocate_exprs, (AstTyped *) al); } } @@ -360,7 +362,7 @@ static void symres_expression(AstTyped** expr) { switch ((*expr)->kind) { case Ast_Kind_Symbol: - *expr = (AstTyped *) symbol_resolve(semstate.curr_scope, ((AstNode *) *expr)->token); + *expr = (AstTyped *) symbol_resolve(curr_scope, ((AstNode *) *expr)->token); break; case Ast_Kind_Binary_Op: @@ -390,7 +392,7 @@ static void symres_expression(AstTyped** expr) { // NOTE: This is a weird place to put this so maybe put it somewhere else eventually // - brendanfh 2020/09/04 - builtin_range_type_type = type_build_from_ast(semstate.node_allocator, builtin_range_type); + builtin_range_type_type = type_build_from_ast(context.ast_alloc, builtin_range_type); break; case Ast_Kind_Function: @@ -435,7 +437,7 @@ static void symres_return(AstReturn* ret) { static void symres_if(AstIfWhile* ifnode) { if (ifnode->assignment != NULL) { - ifnode->scope = scope_create(semstate.node_allocator, semstate.curr_scope, ifnode->token->pos); + ifnode->scope = scope_create(context.ast_alloc, curr_scope, ifnode->token->pos); scope_enter(ifnode->scope); symres_local(&ifnode->local, 0); @@ -453,7 +455,7 @@ static void symres_if(AstIfWhile* ifnode) { static void symres_while(AstIfWhile* whilenode) { if (whilenode->assignment != NULL) { - whilenode->scope = scope_create(semstate.node_allocator, semstate.curr_scope, whilenode->token->pos); + whilenode->scope = scope_create(context.ast_alloc, curr_scope, whilenode->token->pos); scope_enter(whilenode->scope); symres_local(&whilenode->local, 0); @@ -470,7 +472,7 @@ static void symres_while(AstIfWhile* whilenode) { } static void symres_for(AstFor* fornode) { - fornode->scope = scope_create(semstate.node_allocator, semstate.curr_scope, fornode->token->pos); + fornode->scope = scope_create(context.ast_alloc, curr_scope, fornode->token->pos); scope_enter(fornode->scope); symres_expression(&fornode->iter); @@ -484,10 +486,10 @@ static void symres_for(AstFor* fornode) { static void symres_switch(AstSwitch* switchnode) { if (switchnode->assignment != NULL) { - switchnode->scope = scope_create(semstate.node_allocator, semstate.curr_scope, switchnode->token->pos); + switchnode->scope = scope_create(context.ast_alloc, curr_scope, switchnode->token->pos); scope_enter(switchnode->scope); - symbol_introduce(semstate.curr_scope, switchnode->local->token, (AstNode *) switchnode->local); + symbol_introduce(curr_scope, switchnode->local->token, (AstNode *) switchnode->local); symres_statement((AstNode **) &switchnode->assignment); } @@ -515,7 +517,7 @@ static void symres_use(AstUse* use) { AstEnumType* et = (AstEnumType *) use->expr; bh_arr_each(AstEnumValue *, ev, et->values) - symbol_introduce(semstate.curr_scope, (*ev)->token, (AstNode *) *ev); + symbol_introduce(curr_scope, (*ev)->token, (AstNode *) *ev); return; } @@ -530,7 +532,7 @@ static void symres_use(AstUse* use) { effective_type->kind == Ast_Kind_Poly_Call_Type) { if (use->expr->type == NULL) - use->expr->type = type_build_from_ast(semstate.node_allocator, use->expr->type_node); + use->expr->type = type_build_from_ast(context.ast_alloc, use->expr->type_node); if (use->expr->type == NULL) goto cannot_use; Type* st = use->expr->type; @@ -538,8 +540,8 @@ static void symres_use(AstUse* use) { st = st->Pointer.elem; bh_table_each_start(StructMember, st->Struct.members); - AstFieldAccess* fa = make_field_access(semstate.node_allocator, use->expr, value.name); - symbol_raw_introduce(semstate.curr_scope, value.name, use->token->pos, (AstNode *) fa); + AstFieldAccess* fa = make_field_access(context.ast_alloc, use->expr, value.name); + symbol_raw_introduce(curr_scope, value.name, use->token->pos, (AstNode *) fa); bh_table_each_end; return; @@ -570,7 +572,7 @@ static void symres_directive_solidify(AstDirectiveSolidify** psolid) { if (onyx_has_errors()) return; if (node_is_type((AstNode *) sln->value)) { - sln->type = type_build_from_ast(semstate.node_allocator, sln->ast_type); + sln->type = type_build_from_ast(context.ast_alloc, sln->ast_type); sln->kind = PSK_Type; } else { sln->kind = PSK_Value; @@ -622,10 +624,10 @@ static void symres_statement_chain(AstNode** walker) { static void symres_block(AstBlock* block) { if (block->scope == NULL) - block->scope = scope_create(semstate.node_allocator, semstate.curr_scope, block->token->pos); + block->scope = scope_create(context.ast_alloc, curr_scope, block->token->pos); scope_enter(block->scope); - bh_arr_push(semstate.block_stack, block); + bh_arr_push(block_stack, block); if (block->binding_scope != NULL) scope_include(block->scope, block->binding_scope, block->token->pos); @@ -633,13 +635,13 @@ static void symres_block(AstBlock* block) { if (block->body) symres_statement_chain(&block->body); - bh_arr_pop(semstate.block_stack); + bh_arr_pop(block_stack); scope_leave(); } void symres_function_header(AstFunction* func) { if (func->scope == NULL) - func->scope = scope_create(semstate.node_allocator, semstate.curr_scope, func->token->pos); + func->scope = scope_create(context.ast_alloc, curr_scope, func->token->pos); func->flags |= Ast_Flag_Comptime; @@ -697,11 +699,11 @@ void symres_function_header(AstFunction* func) { param->local->type_node = symres_type(param->local->type_node); } - symbol_introduce(semstate.curr_scope, param->local->token, (AstNode *) param->local); + symbol_introduce(curr_scope, param->local->token, (AstNode *) param->local); if (param->local->flags & Ast_Flag_Param_Use) { if (param->local->type_node != NULL && param->local->type == NULL) { - param->local->type = type_build_from_ast(semstate.allocator, param->local->type_node); + param->local->type = type_build_from_ast(context.ast_alloc, param->local->type_node); } if (type_is_struct(param->local->type)) { @@ -713,8 +715,8 @@ void symres_function_header(AstFunction* func) { } bh_table_each_start(StructMember, st->Struct.members); - AstFieldAccess* fa = make_field_access(semstate.node_allocator, (AstTyped *) param->local, value.name); - symbol_raw_introduce(semstate.curr_scope, value.name, param->local->token->pos, (AstNode *) fa); + AstFieldAccess* fa = make_field_access(context.ast_alloc, (AstTyped *) param->local, value.name); + symbol_raw_introduce(curr_scope, value.name, param->local->token->pos, (AstNode *) fa); bh_table_each_end; } else if (param->local->type != NULL) { @@ -733,7 +735,7 @@ void symres_function_header(AstFunction* func) { void symres_function(AstFunction* func) { scope_enter(func->scope); - semstate.curr_function = func; + curr_function = func; symres_block(func->body); scope_leave(); @@ -751,7 +753,7 @@ static void symres_overloaded_function(AstOverloadedFunction* ofunc) { static void symres_use_package(AstUsePackage* package) { token_toggle_end(package->package->token); - Package* p = program_info_package_lookup(semstate.program, package->package->token->text); + Package* p = package_lookup(package->package->token->text); token_toggle_end(package->package->token); if (p == NULL) { @@ -759,14 +761,14 @@ static void symres_use_package(AstUsePackage* package) { return; } - if (p->scope == semstate.curr_scope) return; + if (p->scope == curr_scope) return; if (package->alias != NULL) { - AstPackage *pac_node = onyx_ast_node_new(semstate.node_allocator, sizeof(AstPackage), Ast_Kind_Package); + AstPackage *pac_node = onyx_ast_node_new(context.ast_alloc, sizeof(AstPackage), Ast_Kind_Package); pac_node->package = p; pac_node->token = package->alias; - symbol_introduce(semstate.curr_scope, package->alias, (AstNode *) pac_node); + symbol_introduce(curr_scope, package->alias, (AstNode *) pac_node); } if (package->only != NULL) { @@ -778,7 +780,7 @@ static void symres_use_package(AstUsePackage* package) { return; } - symbol_introduce(semstate.curr_scope, (*alias)->alias, thing); + symbol_introduce(curr_scope, (*alias)->alias, thing); } } @@ -787,20 +789,20 @@ static void symres_use_package(AstUsePackage* package) { if (package->token != NULL) pos = package->token->pos; - scope_include(semstate.curr_scope, p->scope, pos); + scope_include(curr_scope, p->scope, pos); } } static void symres_enum(AstEnumType* enum_node) { if (enum_node->backing->kind == Ast_Kind_Symbol) { - enum_node->backing = (AstType *) symbol_resolve(semstate.curr_scope, enum_node->backing->token); + enum_node->backing = (AstType *) symbol_resolve(curr_scope, enum_node->backing->token); } if (enum_node->backing == NULL) return; - enum_node->backing_type = type_build_from_ast(semstate.allocator, enum_node->backing); - enum_node->scope = scope_create(semstate.node_allocator, NULL, enum_node->token->pos); + enum_node->backing_type = type_build_from_ast(context.ast_alloc, enum_node->backing); + enum_node->scope = scope_create(context.ast_alloc, NULL, enum_node->token->pos); - type_build_from_ast(semstate.node_allocator, (AstType *) enum_node); + type_build_from_ast(context.ast_alloc, (AstType *) enum_node); u64 next_assign_value = (enum_node->flags & Ast_Flag_Enum_Is_Flags) ? 1 : 0; bh_arr_each(AstEnumValue *, value, enum_node->values) { @@ -822,7 +824,7 @@ static void symres_enum(AstEnumType* enum_node) { (*value)->value->type = enum_node->etcache; } else { - AstNumLit* num = make_int_literal(semstate.node_allocator, next_assign_value); + AstNumLit* num = make_int_literal(context.ast_alloc, next_assign_value); num->type = enum_node->etcache; (*value)->value = num; @@ -860,7 +862,7 @@ static void symres_struct_defaults(AstType* t) { } static void symres_polyproc(AstPolyProc* pp) { - pp->poly_scope = semstate.curr_scope; + pp->poly_scope = curr_scope; bh_arr_each(AstPolyParam, param, pp->poly_params) { if (param->kind != PPK_Baked_Value) continue; @@ -883,11 +885,14 @@ static void symres_polyproc(AstPolyProc* pp) { } void symres_entity(Entity* ent) { - if (ent->package) semstate.curr_package = ent->package; + if (block_stack == NULL) + bh_arr_new(global_heap_allocator, block_stack, 16); + + if (ent->package) curr_package = ent->package; Scope* old_scope = NULL; if (ent->scope) { - old_scope = semstate.curr_scope; + old_scope = curr_scope; scope_enter(ent->scope); } @@ -922,6 +927,6 @@ void symres_entity(Entity* ent) { ent->state = next_state; if (ent->scope) { - semstate.curr_scope = old_scope; + curr_scope = old_scope; } } diff --git a/src/onyxutils.c b/src/onyxutils.c index c6cccd4e..8dd71292 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -6,7 +6,6 @@ #include "onyxerrors.h" #include "onyxparser.h" #include "onyxastnodes.h" -#include "onyxsempass.h" bh_scratch global_scratch; bh_allocator global_scratch_allocator; @@ -17,26 +16,17 @@ bh_allocator global_heap_allocator; // // Program info and packages // -void program_info_init(ProgramInfo* prog, bh_allocator alloc) { - prog->global_scope = scope_create(alloc, NULL, (OnyxFilePos) { 0 }); - - bh_table_init(alloc, prog->packages, 16); - - // NOTE: This will be initialized upon the first call to entity_heap_insert. - prog->entities.entities = NULL; -} - -Package* program_info_package_lookup(ProgramInfo* prog, char* package_name) { - if (bh_table_has(Package *, prog->packages, package_name)) { - return bh_table_get(Package *, prog->packages, package_name); +Package* package_lookup(char* package_name) { + if (bh_table_has(Package *, context.packages, package_name)) { + return bh_table_get(Package *, context.packages, package_name); } else { return NULL; } } -Package* program_info_package_lookup_or_create(ProgramInfo* prog, char* package_name, Scope* parent_scope, bh_allocator alloc) { - if (bh_table_has(Package *, prog->packages, package_name)) { - return bh_table_get(Package *, prog->packages, package_name); +Package* package_lookup_or_create(char* package_name, Scope* parent_scope, bh_allocator alloc) { + if (bh_table_has(Package *, context.packages, package_name)) { + return bh_table_get(Package *, context.packages, package_name); } else { Package* package = bh_alloc_item(alloc, Package); @@ -48,7 +38,7 @@ Package* program_info_package_lookup_or_create(ProgramInfo* prog, char* package_ package->scope = scope_create(alloc, parent_scope, (OnyxFilePos) { 0 }); package->private_scope = scope_create(alloc, package->scope, (OnyxFilePos) { 0 }); - bh_table_put(Package *, prog->packages, pac_name, package); + bh_table_put(Package *, context.packages, pac_name, package); return package; } @@ -171,7 +161,7 @@ static void insert_poly_slns_into_scope(Scope* scope, bh_arr(AstPolySolution) sl switch (sln->kind) { case PSK_Type: - node = onyx_ast_node_new(semstate.node_allocator, sizeof(AstTypeRawAlias), Ast_Kind_Type_Raw_Alias); + node = onyx_ast_node_new(context.ast_alloc, sizeof(AstTypeRawAlias), Ast_Kind_Type_Raw_Alias); ((AstTypeRawAlias *) node)->token = sln->poly_sym->token; ((AstTypeRawAlias *) node)->to = sln->type; break; @@ -263,8 +253,8 @@ static b32 add_solidified_function_entities(AstSolidifiedFunction solidified_fun .scope = solidified_func.poly_scope, }; - entity_heap_insert(&semstate.program->entities, func_header_entity); - entity_heap_insert(&semstate.program->entities, func_entity); + entity_heap_insert(&context.entities, func_header_entity); + entity_heap_insert(&context.entities, func_entity); return 1; } @@ -285,15 +275,15 @@ static AstSolidifiedFunction generate_solidified_function( OnyxFilePos poly_scope_pos = { 0 }; if (tkn) poly_scope_pos = tkn->pos; - solidified_func.poly_scope = scope_create(semstate.node_allocator, pp->poly_scope, poly_scope_pos); + solidified_func.poly_scope = scope_create(context.ast_alloc, pp->poly_scope, poly_scope_pos); insert_poly_slns_into_scope(solidified_func.poly_scope, slns); if (header_only) { - solidified_func.func = (AstFunction *) clone_function_header(semstate.node_allocator, pp->base_func); + solidified_func.func = (AstFunction *) clone_function_header(context.ast_alloc, pp->base_func); solidified_func.func->flags |= Ast_Flag_Incomplete_Body; } else { - solidified_func.func = (AstFunction *) ast_clone(semstate.node_allocator, pp->base_func); + solidified_func.func = (AstFunction *) ast_clone(context.ast_alloc, pp->base_func); } solidified_func.func->flags |= Ast_Flag_From_Polymorphism; @@ -317,7 +307,7 @@ static AstSolidifiedFunction generate_solidified_function( static void ensure_solidified_function_has_body(AstPolyProc* pp, AstSolidifiedFunction solidified_func) { if (solidified_func.func->flags & Ast_Flag_Incomplete_Body) { - clone_function_body(semstate.node_allocator, solidified_func.func, pp->base_func); + clone_function_body(context.ast_alloc, solidified_func.func, pp->base_func); // HACK: I'm asserting that this function should return without an error, because // the only case where it can return an error is if there was a problem with the @@ -404,7 +394,7 @@ static PolySolveResult solve_poly_type(AstNode* target, AstType* type_expr, Type bh_arr_push(elem_queue, ((PolySolveElem) { .type_expr = (AstType*) ((AstArrayType *) elem.type_expr)->count_expr, .kind = PSK_Value, - .value = (AstTyped *) make_int_literal(semstate.node_allocator, elem.actual->Array.count) + .value = (AstTyped *) make_int_literal(context.ast_alloc, elem.actual->Array.count) })); bh_arr_push(elem_queue, ((PolySolveElem) { @@ -612,7 +602,7 @@ static void solve_for_polymorphic_param_value(PolySolveResult* resolved, AstPoly return; } - Type* resolved_type = type_build_from_ast(semstate.node_allocator, (AstType *) value); + Type* resolved_type = type_build_from_ast(context.ast_alloc, (AstType *) value); *resolved = ((PolySolveResult) { PSK_Type, .actual = resolved_type }); } else { @@ -622,7 +612,7 @@ static void solve_for_polymorphic_param_value(PolySolveResult* resolved, AstPoly } if (param->type == NULL) - param->type = type_build_from_ast(semstate.node_allocator, param->type_expr); + param->type = type_build_from_ast(context.ast_alloc, param->type_expr); if (!type_check_or_auto_cast(&value, param->type)) { *err_msg = bh_aprintf(global_scratch_allocator, @@ -802,7 +792,7 @@ AstNode* polymorphic_proc_try_solidify(AstPolyProc* pp, bh_arr(AstPolySolution) // HACK: Some of these initializations assume that the entity for this polyproc has // made it through the symbol resolution phase. // - brendanfh 2020/12/25 - AstPolyProc* new_pp = onyx_ast_node_new(semstate.node_allocator, sizeof(AstPolyProc), Ast_Kind_Polymorphic_Proc); + AstPolyProc* new_pp = onyx_ast_node_new(context.ast_alloc, sizeof(AstPolyProc), Ast_Kind_Polymorphic_Proc); new_pp->token = pp->token; // TODO: Change this to be the solidify->token new_pp->base_func = pp->base_func; new_pp->poly_scope = new_pp->poly_scope; @@ -964,7 +954,7 @@ AstStructType* polymorphic_struct_lookup(AstPolyStructType* ps_type, bh_arr(AstP scope_clear(ps_type->scope); insert_poly_slns_into_scope(ps_type->scope, slns); - AstStructType* concrete_struct = (AstStructType *) ast_clone(semstate.node_allocator, ps_type->base_struct); + AstStructType* concrete_struct = (AstStructType *) ast_clone(context.ast_alloc, ps_type->base_struct); bh_table_put(AstStructType *, ps_type->concrete_structs, unique_key, concrete_struct); Entity struct_entity = { @@ -990,7 +980,7 @@ AstStructType* polymorphic_struct_lookup(AstPolyStructType* ps_type, bh_arr(AstP return NULL; } - Type* cs_type = type_build_from_ast(semstate.node_allocator, (AstType *) concrete_struct); + Type* cs_type = type_build_from_ast(context.ast_alloc, (AstType *) concrete_struct); cs_type->Struct.poly_sln = NULL; bh_arr_new(global_heap_allocator, cs_type->Struct.poly_sln, bh_arr_length(slns)); @@ -1074,7 +1064,7 @@ static AstNode* lookup_default_value_by_idx(AstNode* provider, i32 idx) { AstTyped* default_value = func->params[idx].default_value; if (default_value == NULL) return NULL; - AstArgument* arg = make_argument(semstate.node_allocator, default_value); + AstArgument* arg = make_argument(context.ast_alloc, default_value); return (AstNode *) arg; } -- 2.25.1