summaryrefslogtreecommitdiff
path: root/module/language/ecmascript/function.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-02-21 19:25:35 +0100
committerAndy Wingo <wingo@pobox.com>2009-02-21 20:28:29 +0100
commit594d9d4c482d91ccfbc474ec193baadde6ab11f7 (patch)
tree8bb3150b9029055b2dc01cdf39391fe741bc8e1d /module/language/ecmascript/function.scm
parent81d677eb121834945bf0f9ebec28480e6e945cd0 (diff)
downloadguile-594d9d4c482d91ccfbc474ec193baadde6ab11f7.tar.gz
be smarter about allocating local variables, reusing slots if possible
* module/language/Makefile.am: OK, we can compile compile-ghil.scm now, thankfully. * module/language/ecmascript/compile-ghil.scm (ormatch): New macro, a wrapper around pmatch to avoid some of the more egregious non-tail recursiveness. (comp): Use ormatch. * module/language/ghil.scm (unparse-ghil): The body of bind and mv-bind is a single expression, not a list of expressions. * module/language/ghil/compile-glil.scm (codegen): Be more clever when allocating "local" variables -- if a variable goes out of scope, its index can be re-used later. * module/language/glil.scm (parse-glil, unparse-ghil): The "rest" of a mv-bind is a flag, not a list. The "ra" of an mv-call is a label, not a GLIL expression. * module/language/objcode/spec.scm (collapse-locals, decompile-value): When decompiling a value, process the bindings list differently. Comments in the code. * module/language/scheme/compile-ghil.scm (define-scheme-translator): Fix the generated error procedure. (let): Re-indent. (letrec): Re-indent. * module/system/base/syntax.scm (record-case): If the body of a clause is null, fill it with the unspecified value.
Diffstat (limited to 'module/language/ecmascript/function.scm')
0 files changed, 0 insertions, 0 deletions