Commit Graph

66 Commits

Author SHA1 Message Date
fb92b6d364 nac3core: supports range iterator 2021-10-23 23:53:36 +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
9850cbe313 nac3core/codegen: optimize for every function
This speeds up compilation and reduces memory usage.
2021-10-17 12:56:11 +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
105d605e6d nac3core: fix clippy warnings 2021-09-22 18:04:06 +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
891056631f nac3core: use Arc to reduce copy 2021-09-22 18:04:06 +08:00
1b5ac3cd25 nac3core: do not alloc call if it is monomorphic 2021-09-22 18:04:06 +08:00
013e7cfc2a codegen: support pass statement. Closes #10 2021-09-22 15:17:13 +08:00
4fe643f45b allows function ending with a number 2021-09-22 14:45:42 +08:00
df6c9c8a35 fix #11 2021-09-21 11:29:51 +08:00
dd1be541b8 nac3core: allow class to have no __init__, function/method name with module path added to ensure uniqueness 2021-09-20 23:36:19 +08:00
35a94a8fc0 nac3core: fix broken test 2021-09-20 01:58:07 +08:00
4939ff4dbd simple implementation of classes 2021-09-19 22:54:06 +08:00
2b74895b71 nac3standalone, nac3core: can use top level composer to compile and run mandelbrot 2021-09-19 16:19:49 +08:00
f5353419ac codegen: minimized lock holding time
The previous way of holding the lock would prohibit multithread code
generation for llvm
2021-09-16 21:36:42 +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
55335fc05d nac3core: top level simple type var handled 2021-09-08 02:27:12 +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
2223c86d9b nac3standalone: compile multiple functions 2021-08-27 16:25:59 +08:00
8c1c7fcfc3 nac3core: fixed broken tests 2021-08-27 13:04:51 +08:00
bf4e0009c0 codegen: do not generate cont_bb if unreachable 2021-08-27 11:46:12 +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
173102fc56 codegen/expr: function codegen and refactoring 2021-08-25 15:29:58 +08:00
32773c14e0 move top level related things to a separate module 2021-08-24 17:19:17 +08:00
fb5b4697a9 fix rebase conflict and some test failure with unifier's error message 2021-08-23 10:34:11 +08:00
40b062ce0f change the parse type annotation parameter type, refactoring top level 2021-08-23 02:54:45 +08:00
c4d6b3691a codegen/expr: fixed warnings 2021-08-21 15:10:50 +08:00
e47d063efc codegen: store to list element 2021-08-19 17:14:38 +08:00
0e2da0d180 codegen: gep related fixes
we can now compile simple programs that uses tuples and lists
2021-08-19 16:54:15 +08:00
3279f7a776 codegen for simple function call, and various fixes 2021-08-19 15:30:15 +08:00
d1215bf5ac nac3core/codegen/expr: fixed typo 2021-08-19 11:45:33 +08:00
6e424a6a3e fixed codegen test 2021-08-19 11:32:22 +08:00
d30918bea0 worker thread panic handling 2021-08-13 16:20:14 +08:00
e2adf82229 threadpool for parallel code generation 2021-08-13 14:48:46 +08:00
cb01c79603 removed Arc from TypeEnum 2021-08-13 13:33:59 +08:00
1db8378f60 formatting 2021-08-12 16:36:23 +08:00