aboutsummaryrefslogtreecommitdiffstats
path: root/csc/ir2.csc
AgeCommit message (Collapse)AuthorFilesLines
2022-07-20Perform argument conversion.Rose Hogenson1-2/+1
The point of argument conversion is to validate on each function call that the right number of arguments were passed, and to ensure that no function has more than 1 argument. This second condition makes CPS slightly simpler, and ensures that the arguments will all fit in locals. We take the strategy of allocating a vector for each function call. Ideally we would optimize away most of these allocations, but for now I just want it to work.
2022-07-03Add a diff library.Rose Hogenson1-47/+1
I was hesitant to add a diff library, but it was surprisingly easy. A straightforward application of dynamic programming.
2022-07-02Write closure conversion.Rose Hogenson1-25/+39
I desperately need a diffing library.
2022-07-01Add update conversion.Rose Hogenson1-55/+49
Now variables can't be updated after they're created, so they can be freely copied into closures.
2022-06-29Add pattern matching for record types.Rose Hogenson1-6/+34
I like scheme because it's possible to add any convenient language feature I can think of.
2022-06-28Improve CPS.Rose Hogenson1-100/+61
Goodbye soup. Thanks to "Compiling with Continuations" by Appel.
2022-06-26Finish CPS.Rose Hogenson1-10/+42
Wow we actually finished CPS. Next is closure conversion, then codegen, and then we should be able to run some end to end tests. Then we can look at garbage collection, and from there continue building features down the long road to self hosting.
2022-06-26More CPS.Rose Hogenson1-4/+40
I improved the abstraction in to-cps.
2022-06-25More CPS.Rose Hogenson1-0/+20
2022-06-25Continue work on continuation passing style.Rose Hogenson1-11/+97
2022-06-21More progress on CPS.Rose Hogenson1-67/+33
2022-06-21Start CPS :)Rose Hogenson1-0/+8
2022-03-31Improvements in macros and IR1.Rose Hogenson1-24/+10
We're omitting libraries for now, and I'll add them in later.
2022-01-24Implement lambda?Rose Hogenson1-0/+99