1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-22 19:44:10 +02:00
guile/module/language
Andy Wingo 5d25fdae37 Rewrite effects analysis to be precise for fields.
* module/language/cps/effects-analysis.scm: Rewrite so that instead of
  the depends/causes effects, there is just &type-check, &allocation,
  &read, and &write.  The object kind is a separate part of the
  bitfield, and the field in the object (if appropriate) is another
  field.  Effects are still a fixnum.  This enables precise effects for
  vectors and structs on all architectures.

  This kind of effects analysis was not possible in Tree-IL because
  Tree-IL relied on logior-ing effects of subexpressions, whereas with
  CPS we have no sub-expressions and we do flow analysis instead.

  (effect-clobbers?): Replace effects-commute? with this inherently
  directional and precise predicate.

* module/language/cps/cse.scm (compute-always-available-expressions):
  (compute-equivalent-subexpressions): Adapt to effects analysis
  change.
* module/language/cps/dce.scm (compute-live-code): Likewise.
2014-05-08 10:39:49 +02:00
..
brainfuck Fix brainfuck comment 2013-12-02 19:03:50 +01:00
bytecode Rename "RTL" to "bytecode" 2013-12-02 21:31:47 +01:00
cps Rewrite effects analysis to be precise for fields. 2014-05-08 10:39:49 +02:00
ecmascript Adapt ecmascript compiler to tree-il prompt changes, again. 2013-08-11 17:18:09 -04:00
elisp Fix order of evaluation in elisp lexer 2013-11-01 18:23:51 +01:00
scheme Merge remote-tracking branch 'origin/stable-2.0' 2013-08-11 22:46:22 -04:00
tree-il Root higher-order CPS term is always $kfun $cont 2014-04-11 14:01:27 +02:00
value Add 'for-humans?' flag to <language> specifications. 2013-01-27 10:16:40 -05:00
bytecode.scm Rename "RTL" to "bytecode" 2013-12-02 21:31:47 +01:00
cps.scm Optimize make-global-cont-folder 2014-04-14 13:53:35 +02:00
tree-il.scm Less copying in tree-il pre-order / post-order. 2014-03-31 18:20:55 +02:00