diff options
author | dos-reis <gdr@axiomatics.org> | 2011-11-29 19:19:54 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2011-11-29 19:19:54 +0000 |
commit | 63df59e7ab921baff00e47e915b4df1c441b2381 (patch) | |
tree | 8c9905242ddb37483821c772a381d17fb7f8dfdd /src/interp/g-opt.boot | |
parent | 53e9355c2e91561b71c89a0b79eb3f3d2645b02f (diff) | |
download | open-axiom-63df59e7ab921baff00e47e915b4df1c441b2381.tar.gz |
* boot/tokens.boot (absKind, absParms, absBody): New selectors.
* interp/compiler.boot (canReturn): Handle %lambda forms.
(compUnnamedMapping): Generate %lambda forms. Don't optimize them
yet.
* interp/g-opt.boot: %lambda forms are side-effect free.
* interp/lisp-backend.boot: Translate them.
Diffstat (limited to 'src/interp/g-opt.boot')
-rw-r--r-- | src/interp/g-opt.boot | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/interp/g-opt.boot b/src/interp/g-opt.boot index a859c67a..c92e326e 100644 --- a/src/interp/g-opt.boot +++ b/src/interp/g-opt.boot @@ -95,7 +95,7 @@ changeVariableDefinitionToStore(form,vars) == changeVariableDefinitionToStore(third form,vars') vars abstractionOperator? form.op => - changeVariableDefinitionToStore(third form,[:second form,:vars]) + changeVariableDefinitionToStore(form.absBody,[:form.absParms,:vars]) vars for x in form repeat vars := changeVariableDefinitionToStore(x,vars) @@ -180,8 +180,8 @@ simplifyVMForm x == atomic? x => x x.op is 'CLOSEDFN => x x.op isnt [.,:.] => - x is [op,vars,body] and abstractionOperator? op => - third(x) := simplifyVMForm body + symbol? x.op and abstractionOperator? x.op => + x.absBody := simplifyVMForm x.absBody x if x.op is 'IF then resetTo(x,optIF2COND x) @@ -455,7 +455,7 @@ $VMsideEffectFreeOperators == %bitveccopy %bitvecconc %bitveclength %bitvecref %bitveceq %bitveclt %before? %equal %sptreq %ident? %property %tref %writeString %writeNewline %writeLine - %void %retract %pullback) + %void %retract %pullback %lambda %closure) ++ List of simple VM operators $simpleVMoperators == |