1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-18 17:50:29 +02:00
guile/module/language/tree-il
Andy Wingo 02ebea537f peval: simpler and more precise treatment of mutability
* module/language/tree-il/optimize.scm (peval): The old approach of
  optimistically producing constants and then de-constifying them at
  their uses was not only cumbersome but incorrect: it both failed to
  preserve identity in some cases and failed to retain immutable
  constant values.  Instead, now we only produce constants if they
  really are constant and immutable.  The constant folder has to have a
  few more algebraic cases to be as effective as it was, to destructure
  (car (cons _ _)) appropriately.  On the plus side, now constructors
  and deconstructors can handle impure cases more generally.

* test-suite/tests/tree-il.test ("partial evaluation"): Add constructor
  and destructuring tests.  Adapt other tests to new expectations.
2011-09-25 02:54:45 +02:00
..
analyze.scm Use (ice-9 match) instead of `record-case' where it improves readability. 2011-09-06 00:18:36 +02:00
compile-glil.scm fix invalid transformation of (values x) -> x, (+ x) -> x, etc 2011-06-17 19:42:55 +02:00
fix-letrec.scm fix-letrec tweaks 2011-03-09 22:38:11 +01:00
inline.scm Add a partial evaluator for use in the compiler. 2011-09-09 00:05:34 +02:00
optimize.scm peval: simpler and more precise treatment of mutability 2011-09-25 02:54:45 +02:00
primitives.scm prevent propagation for memory-dependent operations like `car' 2011-09-23 18:02:05 +02:00
spec.scm remove `version' field from <language> 2010-05-02 11:19:13 +02:00