24 Commits

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