280 Commits

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