Ulf Norell
|
a2b762c066
|
Jump some hoops to please Dialyzer
|
2019-05-07 13:58:19 +02:00 |
|
Ulf Norell
|
519850e1fd
|
Get rid of catchall todos
|
2019-05-07 13:42:13 +02:00 |
|
Ulf Norell
|
63332c5cd1
|
Update aebytecode commit
|
2019-05-07 13:18:48 +02:00 |
|
Ulf Norell
|
bd33990786
|
We now have block hash at height in FATE
|
2019-05-07 13:18:42 +02:00 |
|
Ulf Norell
|
8233c780e4
|
Tag for literals in fcode to make code cleaner
|
2019-05-07 13:18:40 +02:00 |
|
Ulf Norell
|
182f30133b
|
Clearer distinction between applied and unapplied top-level things (def/builtin) in fcode
|
2019-05-07 13:18:02 +02:00 |
|
Ulf Norell
|
2ef94b03ec
|
Compile remote calls
|
2019-05-07 13:17:58 +02:00 |
|
Ulf Norell
|
49b00715c5
|
Compile events
But no FATE support for events yet
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
b43e8d9f68
|
Compile statements
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
fac136bded
|
Compiler side of state updates
No support in FATE yet though
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
db48be1805
|
Fix variable binding bug in fcode compiler
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
16f00701d7
|
Missing case in fcode pretty printer
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
110466b08c
|
Handle unapplied builtins and top-level functions
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
4c872c4690
|
Optimize single variable closure envs
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
26b7c5bf12
|
Compile lambdas and higher-order functions
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
ff0f2b57d2
|
Change map_get/set to operators in fcode
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
c06e032199
|
Fix name resolution bug
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
4371bf7db4
|
Improve inlining of PUSH
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
2291f8d4c1
|
Compile bytes(N)
Compile to FATE strings for now
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
1f40d2a321
|
Compile builtins
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
6f17477c72
|
Distinguish local vars and top-level names already in fcode
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
1d39464190
|
Add compile-time evaluation for more operators
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
b5330882ba
|
Fixed left-over reference to STR_EQ
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
ef120a7194
|
Simplify JUMPIF on true/false
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
4a8fb5ba05
|
Compile maps
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
cd454fb538
|
Compile all the operators
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
8559ab0628
|
fix minor bugs
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
0307a82433
|
Case on constructor optimization
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
389a5c4e62
|
some constant propagation optimizations
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
4c2288274d
|
no-op fcode optimization pass
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
081a4d28b6
|
use STORE ?a instead of PUSH during optimizations
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
690d55eefe
|
pretty printing for function calls
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
97db2b9800
|
variables are now lists of names in fcode
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
e13e81d1ca
|
fix breakage after unary operators
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
8a5c64ad45
|
Compile function calls
(to fully saturated top-level functions only)
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
a4bbe2bc2f
|
Unary operators
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
88139fe99c
|
Get rid of unit in AST
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
272c247b4d
|
compile address literals
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
c419b105bf
|
Minor refactoring of op instruction handling
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
3c6e06e99a
|
Compile character literals
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
b7153b1d75
|
string literals and pattern matching on the same
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
0ce144db13
|
Use the fact that SWITCH and JUMPIF can use args and vars
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
960ffb383f
|
Optimize matching on single constructors datatypes
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
6806554d77
|
Remove incorrect push for tuple switches
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
9ac5a36265
|
Compile variants
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
ed60cd8ddc
|
Use SETELEMENT instruction
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
f896b84221
|
Compile record update
|
2019-05-07 13:16:39 +02:00 |
|
Ulf Norell
|
5c77237316
|
compile records (patterns and construction)
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
53f88c4c06
|
allow leaving out fields from record patterns
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
bdc5e17ab7
|
Use op_view in more places
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
d333b5f11f
|
Compile list patterns
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
6042294f96
|
Compile pattern matching on integer literals
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
25f80da827
|
Remove unused argument
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
96bff0c32f
|
Fix dialyzer things
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
ff58ec0cba
|
Remove 'if' from fcode
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
46c538b7bf
|
Tag instructions in annotated scode
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
758f836bf6
|
Remove optimization for if-then-else
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
b3131504b0
|
Handle switch_body in optimizations
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
ee7bc126fc
|
Another renaming bug
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
cca83a5dfa
|
Fix renaming bug
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
f73a0934d4
|
Pretty printer for fcode
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
771e4aa967
|
Fix various bugs in pattern match compilation
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
e597a3780a
|
compile list literals
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
42c7fde413
|
Shortcut let x = y in ...
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
961af8ba93
|
Simplify variables bindings in environment
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
66413ae7fe
|
Compile case trees all the way to Fate assembly
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
3a095cde7e
|
Add missing case in renaming
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
e2c48e1069
|
wip: rewrite case tree compiler to handle catch-alls
still with debug printing, and can't compile it yet
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
ab13222d29
|
Pattern matching on booleans
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
59845dec54
|
Limit the number of iterations for the optimization loop
Should finish in one iteration, but we shouldn't loop if there are bugs
or corner cases where it doesn't.
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
4814cfbf96
|
Keep better track of liveness annotations when swapping instructions
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
d05130a569
|
Get rid of unnecessary STORE instructions
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
4b6191aa25
|
Reannotate and repeat optimization pass once it done
Could try hard to keep annotations more precise, but would be more error prone
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
41387ce0b1
|
Compile nested pattern matching to case trees
(Only tuple and variable patterns so far)
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
ac25a8fc55
|
Improve instruction analysis and generalize some optimizations
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
788840f0fa
|
Compile tuple construction
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
3ec156a4b4
|
Refactor optimization rules
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
185487afda
|
Nicer debug printing
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
e224aadff7
|
Use RETURNR when possible
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
47a48812b8
|
Fix minor bug
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
68ee18fe70
|
Liveness analysis for local variables
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
200f80cc89
|
Compile shallow matching on tuples
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
d37ef8cec2
|
Basic tuple patterns
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
216fbc6144
|
Fix and improve broken bytecode optimisations
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
33bb8a37d0
|
Compile let to FATE
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
bc8b2d1c81
|
Start on new intermediate code for FATE
|
2019-05-07 13:16:38 +02:00 |
|
Ulf Norell
|
d2dbb98b7f
|
Update to changes in icode format
|
2019-05-07 13:16:38 +02:00 |
|