From 76d85a10f6cda93eba29dad5372e8160af7289c8 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 27 Feb 2019 22:26:35 +0100 Subject: Use multiple threads to parse --- doc/IMPLEMENTATION.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 doc/IMPLEMENTATION.md (limited to 'doc/IMPLEMENTATION.md') diff --git a/doc/IMPLEMENTATION.md b/doc/IMPLEMENTATION.md new file mode 100644 index 0000000..9a0fb4a --- /dev/null +++ b/doc/IMPLEMENTATION.md @@ -0,0 +1,13 @@ +1. In the first stage the parser parses multiple files at the same time using multiple threads. +2. In the second stage the ast is handled using multiple threads. In this stage, variables, parameters +and types are defined and resolved and if a type is defined after there is a reference to it, +then the compiler first resolves that type. There are flags set to make sure there aren't recursive dependencies. +3. In the third stage the resolved ast is used to create SSA form (static single assignment form). If optimization is +enabled then then some inlining for ast is done by copying ast from functions to the places they are called from +before the SSA is created. +4. In the fourth stage the SSA form is used to create the bytecode. If optimization is enabled then the SSA form +is optimized before creating the bytecode. +5. If optimization is enabled then the bytecode is optimized. + +Currently implemented: +None \ No newline at end of file -- cgit v1.2.3