Commit Graph

56 Commits

Author SHA1 Message Date
13f06f3e29 core: Refactor VarMap to IndexMap
This is the only Map I can find that preserves insertion order while
also deduplicating elements by key.
2024-03-22 15:51:23 +08:00
77de24ef74 core: Use BTreeMap for type variable mapping
There have been multiple instances where I had the need to iterate over
type variables, only to discover that the traversal order is arbitrary.

This commit fixes that by adding SortedMapping, which utilizes BTreeMap
internally to guarantee a traversal order. All instances of VarMap are
now refactored to use this to ensure that type variables are iterated in
 the order of its variable ID, which should be monotonically incremented
 by the unifier.
2024-03-04 23:56:04 +08:00
12c0eed0a3 core: Fix compilation of tests 2024-01-17 09:49:49 +08:00
32746c37be core: Refactor to return errors by HashSet 2023-12-12 15:41:59 +08:00
bd3d67f3d6 artiq: Apply clippy pedantic changes 2023-12-11 15:16:23 +08:00
ab2360d7a0 core: Remove emit_llvm from CodeGenLLVMOptions
We instead output an LLVM bitcode file when the option is specified on
the command-line.
2023-09-22 17:16:29 +08:00
3e430b9b40 core: Fix missing changes for codegen tests
Apparently the changes were dropped after rebasing.
2023-09-22 17:16:21 +08:00
676d07657a core: Add target field to CodeGenLLVMOptions
For specifying the target machine options when optimizing and linking.

This field is currently unused but will be required in a future
commit.
2023-09-18 09:46:24 +08:00
3993a5cf3f core: Add LLVM options to WorkerRegistry 2023-09-12 10:57:05 +08:00
a022005183 nac3core: fix broken tests 2022-05-11 03:53:53 +08:00
1f5826d352 fix ternary if (#250)
Use store and load to handle if expression as the blocks might be changed when generating sub-expressions.

Reviewed-on: M-Labs/nac3#250
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2022-03-29 06:54:00 +08:00
26a4834254 fix warnings 2022-03-26 18:52:08 +08:00
63b0f29728 Fix broken tests 2022-03-05 00:27:51 +08:00
f97f93d92c applied rustfmt and clippy auto fix 2022-02-21 18:27:46 +08:00
d9cb506f6a nac3core: refactored for better error messages 2022-02-21 18:24:19 +08:00
352831b2ca nac3core: removed legacy location definition 2022-02-13 22:39:24 +08:00
b18626b149 Fix compilation and test failures 2022-02-12 22:50:32 +08:00
ae8f82ccb0 nac3core: fix broken tests 2022-01-14 16:28:37 +08:00
9b3b47ce50 fix broken tests 2021-12-28 01:38:16 +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
4b17511b4a Merge branch 'master' into KernelInvariant 2021-11-27 21:29:27 +08:00
4587088835 Constant Default Parameter Support (#98)
Add support for constant default parameter

Reviewed-on: M-Labs/nac3#98
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2021-11-23 07:32:09 +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
cc83bbc63a nac3core/codegen: fix broken test 2021-10-17 13:07:45 +08:00
279f47f633 nac3core/codegen: avoid sending unifiers
Previously, we have to copy types from one unification table to another,
and make the table sendable. This requires cloning (processing) the
whole table 3 times per function call which is not efficient and uses
more memory than required when the unification table is large.

We now use a concrete type table to only copy the type we need. This
reduces the overhead as we only need to process the unification table
for once (when we do the function codegen), and reduces memory usage by
a bit (but not noticeable when the unification table is small, i.e. the
types are simple).
2021-10-17 13:02:18 +08:00
1f5bea2448 nac3core/codegen: refactor according to #23 2021-10-16 22:17:36 +08:00
c4259d14d1 fixed some clippy warnings 2021-10-16 18:08:13 +08:00
11144301ca nac3artiq: added simple host value support 2021-10-06 16:07:42 +08:00
f0fdfe42cb nac3core: better impl of #24 2021-09-30 17:07:48 +08:00
d4ed76d76e nac3core: implementing #24 2021-09-26 22:17:09 +08:00
693ac7d336 nac3core/toplevel: added personality symbol config 2021-09-25 21:44:00 +08:00
7d48883583 fixed tests 2021-09-22 18:04:06 +08:00
084efe92af nac3core: use string interning 2021-09-22 18:04:06 +08:00
35a94a8fc0 nac3core: fix broken test 2021-09-20 01:58:07 +08:00
2b74895b71 nac3standalone, nac3core: can use top level composer to compile and run mandelbrot 2021-09-19 16:19:49 +08:00
2ac3f9a176 nac3core: separate top level compoer to a new file 2021-09-12 05:10:10 +08:00
1300b5ebdd nac3core: clean up and format 2021-09-08 19:45:36 +08:00
87f25e1c5d nac3core: remove mutex on dyn symbol resolve 2021-09-08 19:27:32 +08:00
54b4572c5f nac3core: allow interior mutability to dyn symbolresolver, add add_id_def to symbolresolver trait, remove primitive from top level def list 2021-09-06 19:23:04 +08:00
22a728833d nac3core: fixed broken test 2021-08-27 16:50:53 +08:00
8c1c7fcfc3 nac3core: fixed broken tests 2021-08-27 13:04:51 +08:00
a24e204824 type_inferencer: check defined identifiers during inference 2021-08-27 11:13:43 +08:00
1a21fb1072 fix codegen test about top level composer return type change 2021-08-25 18:00:01 +08:00
e2b11c3fee codegen: fixed deadlock and added call test 2021-08-25 17:44:01 +08:00
0608fd9659 fixed test and nac3standalone 2021-08-25 15:30:36 +08:00
32773c14e0 move top level related things to a separate module 2021-08-24 17:19:17 +08:00
3279f7a776 codegen for simple function call, and various fixes 2021-08-19 15:30:15 +08:00