From 63df59e7ab921baff00e47e915b4df1c441b2381 Mon Sep 17 00:00:00 2001 From: dos-reis Date: Tue, 29 Nov 2011 19:19:54 +0000 Subject: * 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. --- src/interp/g-opt.boot | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/interp/g-opt.boot') 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 == -- cgit v1.2.3