Skip to content

Conversation

@snakex64
Copy link
Collaborator

PR for task #37

@snakex64
Copy link
Collaborator Author

snakex64 commented Apr 18, 2024

Some examples showing different cases of path for nodes that allows merging exec paths, such as branch.
Note the last one shows a case that is technically not possible without "Goto", which has to be caught automatically by the system:
merging_allowed

@snakex64
Copy link
Collaborator Author

When merging back isn't allowed, such as "ForEach", it is much easier as any path that are hit by any multiple combination of execs will automatically be disallowed :
merging_denied

@snakex64
Copy link
Collaborator Author

Some path allow external execution to merge in, such as the "After Loop" of a "ForEach". It would represent something like :

if(...) {
    foreach(...) {
        some code
    }
    some code
}
some code

crossing

@snakex64
Copy link
Collaborator Author

snakex64 commented Apr 18, 2024

Dead ends also need to be taken into account. Some path do not allow having dead ends, such as "Branch". You cannot just "Stop" the execution inside a "If". You can, on the other hand, "Stop" execution inside a loop, which means simply continuing the next iteration. The following graph also shows are "Allowing" dead end takes priority over "Not allowing it"
dead_end

@snakex64
Copy link
Collaborator Author

Another complex merging option is when 2 path are merging back together at the exact same time as another path so happens to go there, it can lead to complex multi-path-merges. Both these examples are technically valid, though it might be easier to implement by forcing the user to add a useless node to remerge one branch at a time ?

merging_multiple

@snakex64 snakex64 changed the title Added basic code to link outputs to a specific exec path Switch execution to native assembly generation Jul 6, 2024
@snakex64 snakex64 merged commit 1cd950c into master Jul 6, 2024
@snakex64 snakex64 deleted the handle-exec-path-merging branch July 6, 2024 18:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants