From 4469c5a3d489b0005660cdc7f20d55333da5de03 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sat, 6 Feb 2021 15:51:45 -0600 Subject: [PATCH] added basic cycle detection and breaking --- bin/onyx | Bin 349328 -> 349360 bytes include/onyxastnodes.h | 2 ++ onyx.exe | Bin 403456 -> 403456 bytes src/onyx.c | 27 +++++++++++++++++++-------- src/onyxsymres.c | 3 ++- 5 files changed, 23 insertions(+), 9 deletions(-) diff --git a/bin/onyx b/bin/onyx index 10cc0352c67538e649e262870fb6183babbabdaa..afcd5eb80909097c837d22c919b829b8d6b0577e 100755 GIT binary patch delta 49395 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 diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index fa5c63f5..29c2ef97 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -1017,6 +1017,8 @@ struct Context { // NOTE: This is defined in onyxwasm.h struct OnyxWasmModule* wasm_module; + + b32 cycle_detected : 1; }; extern Context context; diff --git a/onyx.exe b/onyx.exe index 0aeaafc3bbbdd876ac735649eabaf827c2d2134e..9b264008afb2259deafa043e919f8eecd8ad68e4 100644 GIT binary patch delta 14995 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 m+~Imu<((qgPmK#Qy_3_F(G( delta 15047 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 == 3) { if (ent->expr && ent->expr->token) printf("%s | %s (%d) | %s:%i:%i\n", @@ -294,10 +293,12 @@ static b32 process_entity(Entity* ent) { // already been initialized. static b32 builtins_initialized = 0; - switch (ent->state) { + EntityState before_state = ent->state; + switch (before_state) { case Entity_State_Parse_Builtin: process_load_entity(ent); ent->state = Entity_State_Finalized; + break; case Entity_State_Introduce_Symbols: // Currently, introducing symbols is handled in the symbol resolution @@ -322,12 +323,9 @@ static b32 process_entity(Entity* ent) { case Entity_State_Check_Types: check_entity(ent); break; case Entity_State_Code_Gen: emit_entity(ent); break; - - default: - changed = 0; } - return changed; + return ent->state != before_state; } // Just having fun with some visual output - brendanfh 2020/12/14 @@ -373,9 +371,22 @@ static i32 onyx_compile() { b32 changed = process_entity(ent); + // NOTE: VERY VERY dumb cycle breaking. Basically, remember the first entity that did + // not change (i.e. did not make any progress). Then everytime an entity doesn't change, + // check if it is the same entity. If it is, it means all other entities that were processed + // between the two occurences didn't make any progress either, and there must be a cycle. + // - brendanfh 2021/02/06 + static Entity* first_no_change = NULL; + if (!changed) { + if (!first_no_change) first_no_change = ent; + else if (first_no_change == ent) context.cycle_detected = 1; + } else { + first_no_change = NULL; + } + if (onyx_has_errors()) return ONYX_COMPILER_PROGRESS_ERROR; - if (changed && ent->state != Entity_State_Finalized) + if (ent->state != Entity_State_Finalized) entity_heap_insert_existing(&context.entities, ent); } diff --git a/src/onyxsymres.c b/src/onyxsymres.c index 933f112d..d4f9a428 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -1023,7 +1023,8 @@ void symres_entity(Entity* ent) { } report_unresolved_symbols = (context.entities.type_count[Entity_Type_Static_If] == 0 && - context.entities.type_count[Entity_Type_Use_Package] == 0); + context.entities.type_count[Entity_Type_Use_Package] == 0) + || context.cycle_detected; SymresStatus ss = Symres_Success; EntityState next_state = Entity_State_Check_Types; -- 2.25.1