diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/interp/i-spec1.boot | 8 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 0156f61d..679b2528 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2009-06-27 Gabriel Dos Reis <gdr@cs.tamu.edu> + + * interp/i-spec1.boot (checkForFreeVariables): Emit + getSimpleArrayEntry instead of ELT. + 2009-06-23 Gabriel Dos Reis <gdr@cs.tamu.edu> * interp/bootlex.lisp (spad): Don't bind $noSubsumption. diff --git a/src/interp/i-spec1.boot b/src/interp/i-spec1.boot index a23aaffb..46416212 100644 --- a/src/interp/i-spec1.boot +++ b/src/interp/i-spec1.boot @@ -799,10 +799,10 @@ checkForFreeVariables(v,locals) == v="$$$" => v -- Placeholder for mini-vector MEMQ(v,$boundVariables) => v p := POSITION(v,$freeVariables) => - ["ELT","envArg",positionInVec(p,#($freeVariables))] + ["getSimpleArrayEntry","envArg",positionInVec(p,#($freeVariables))] (locals = "ALL") or MEMQ(v,locals) => $freeVariables := [v,:$freeVariables] - ["ELT","envArg",positionInVec(0,#($freeVariables))] + ["getSimpleArrayEntry","envArg",positionInVec(0,#($freeVariables))] v LISTP v => CDR(LASTTAIL v) => -- Must be a better way to check for a genuine list? @@ -835,9 +835,9 @@ checkForFreeVariables(v,locals) == -- if we are in a lambda within another lambda. newvar := p := POSITION(var,$freeVariables) => - ["ELT","envArg",positionInVec(p,#($freeVariables))] + ["getSimpleArrayEntry","envArg",positionInVec(p,#($freeVariables))] $freeVariables := [var,:$freeVariables] - ["ELT","envArg",positionInVec(0,#($freeVariables))] + ["getSimpleArrayEntry","envArg",positionInVec(0,#($freeVariables))] ["SETF",newvar,checkForFreeVariables(form,locals)] error "Non-simple variable bindings are not currently supported" op = "PROG" => |