racket/pkgs/compiler-lib/compiler
Matthew Flatt 6603fe3ad4 cs: improve single-value and no-return tracking
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.
2020-12-11 13:29:35 -07:00
..
commands cs & raco decompile: expose more fasl content 2020-11-21 07:26:08 -07:00
demodularizer Change else in match to _ 2020-08-25 09:37:02 -06:00
private cs: improve single-value and no-return tracking 2020-12-11 13:29:35 -07:00
bundle-dist.rkt Move to correct directories. 2016-05-27 17:20:35 -04:00
compiler-unit.rkt Move to correct directories. 2016-05-27 17:20:35 -04:00
decompile.rkt cs: improve single-value and no-return tracking 2020-12-11 13:29:35 -07:00
embed-sig.rkt Move to correct directories. 2016-05-27 17:20:35 -04:00
embed-unit.rkt Move to correct directories. 2016-05-27 17:20:35 -04:00
option-unit.rkt Move to correct directories. 2016-05-27 17:20:35 -04:00
sig.rkt Move to correct directories. 2016-05-27 17:20:35 -04:00