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
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
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
4939ff4dbd
simple implementation of classes
2021-09-19 22:54:06 +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
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
2223c86d9b
nac3standalone: compile multiple functions
2021-08-27 16:25:59 +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
3279f7a776
codegen for simple function call, and various fixes
2021-08-19 15:30:15 +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
77943a8117
added primitive codegen test
2021-08-12 13:56:06 +08:00
e112354d25
codegen refactored
2021-08-11 14:37:26 +08:00
d8c713ce3d
assignment statement
2021-08-09 15:39:50 +08:00
29286210b5
implementing codegen
2021-08-05 14:56:09 +08:00