![]() New `#%app/no-return` and `#%app/value` functions at the Chez Scheme level allow schemify to communicate that function calls will not return or will return a single value. The schmeify pass may have this information because a Racket-level primitive is declared that way (such as `error` or `raise-argument-error` for no-return, or most functions for single-valued) or because single-valuedness is inferred. There's currently no inference for no-return functions, because those are relatively rare. An `#%app/value` is used by schemify only for imported, non-inlined functions, since cp0 can already deal with local functions and primitives. There's a start here at adapting the "optimize.rktl" test suite for CS --- and that effort triggered these improvements plus some other low-hanging fruit. But a lot more is needed to adapt "optimize.rktl" and to make some additional optimizations happen. |
||
---|---|---|
.. | ||
chez.rkt | ||
deserialize.rkt | ||
language.rkt |