Andy Wingo
19113f1ca7
allow case-lambda expressions with no clauses
...
* module/ice-9/psyntax-pp.scm:
* module/ice-9/psyntax.scm (case-lambda, case-lambda*): Allow 0
clauses.
* module/language/scheme/decompile-tree-il.scm (do-decompile):
(choose-output-names):
* module/language/tree-il.scm (unparse-tree-il):
(tree-il-fold, post-order!, pre-order!):
* module/language/tree-il/effects.scm (make-effects-analyzer):
* module/language/tree-il/cse.scm (cse):
* module/language/tree-il/debug.scm (verify-tree-il):
* module/language/tree-il/peval.scm (peval): Allow for lambda-body to be
#f.
* libguile/memoize.c (memoize):
* module/language/tree-il/canonicalize.scm (canonicalize!): Give a body
to empty case-lambda before evaluating it or compiling it,
respectively.
* test-suite/tests/optargs.test ("case-lambda", "case-lambda*"): Add
tests.
2013-03-09 11:16:31 +01:00
Andy Wingo
37081d5d4b
fix bugs in effects analysis of "effect+exception-free-primitives"
...
* module/language/tree-il/effects.scm (make-effects-analyzer): Be more
precise regarding the effects of the so-called
effect+exception-free-primitives: now we check their arities.
* test-suite/tests/cse.test ("cse"): Add a test that we don't
elide (cons 1 2 3) in effect context.
2012-07-05 20:34:28 +02:00
Andy Wingo
83bd53abb6
better effects analysis for calls to lexically bound procedures
...
* module/language/tree-il/effects.scm (make-effects-analyzer): The
analyzer will take an optional second argument, a lookup procedure of
type sym -> exp. This can let the analyzer dig into calls to
lexically bound procedures.
2012-05-15 17:22:05 +02:00
Andy Wingo
036c366dc2
more inlining in effects.scm
...
* module/language/tree-il/effects.scm (define-effects)
(&no-effects, &all-effects-but-bailout):
(cause, &depends-on, &causes, depends-on-effects?)
(causes-effects?, effects-commute?): Add ham-fisted inlining.
2012-04-23 21:52:24 +02:00
Andy Wingo
da9b2b71f7
add effects
...
* module/language/tree-il/effects.scm: New module, for effects
analysis.
* module/Makefile.am: Adapt.
2012-04-23 21:52:23 +02:00