270 Commits

Author SHA1 Message Date
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