Commit Graph

10 Commits

Author SHA1 Message Date
d9cb506f6a nac3core: refactored for better error messages 2022-02-21 18:24:19 +08:00
7ea5a5f84d nac3core: codegen refactoring
- No longer check if the statement will return. Instead, we check if
  the current basic block is terminated, which is simpler and handles
  exception/break/continue better.
- Use invoke statement when unwind is needed.
- Moved codegen for a block of statements into a separate function.
2022-02-12 22:13:59 +08:00
fa04768a77 redo "nac3core: fix #84"
This reverts commit 86005da8e1.
2021-12-27 22:56:26 +08:00
86005da8e1 Revert "nac3core: fix #84"
This reverts commit 0902d8adf4.
2021-12-26 08:35:27 +08:00
0902d8adf4 nac3core: fix #84 2021-12-23 15:26:48 +08:00
ba08deada6 nac3core: refactor codegen 2021-11-20 19:50:25 +08:00
bf7e2c295a integrate nac3parser 2021-11-03 17:11:00 +08:00
083eacc268 with parallel/sequential support
Behavior of parallel and sequential:
Each function call (indirectly, can be inside a sequential block) within a parallel
block will update the end variable to the maximum now_mu in the block.
Each function call directly inside a parallel block will reset the timeline after
execution. A parallel block within a sequential block (or not within any block) will
set the timeline to the max now_mu within the block (and the outer max now_mu will also
be updated).

Implementation: We track the start and end separately.
- If there is a start variable, it indicates that we are directly inside a
parallel block and we have to reset the timeline after every function call.
- If there is a end variable, it indicates that we are (indirectly) inside a
parallel block, and we should update the max end value.

Note: requires testing, it is difficult to inspect the output IR
2021-10-31 23:54:37 +08:00
fb92b6d364 nac3core: supports range iterator 2021-10-23 23:53:36 +08:00
1f5bea2448 nac3core/codegen: refactor according to #23 2021-10-16 22:17:36 +08:00