diff options
Diffstat (limited to 'src/interp/g-opt.boot')
-rw-r--r-- | src/interp/g-opt.boot | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/interp/g-opt.boot b/src/interp/g-opt.boot index 24665e11..003f3d0a 100644 --- a/src/interp/g-opt.boot +++ b/src/interp/g-opt.boot @@ -97,7 +97,7 @@ changeVariableDefinitionToStore(form,vars) == abstractionOperator? form.op => changeVariableDefinitionToStore(form.absBody,[:form.absParms,:vars]) vars - form is ['SEQ,:stmts,['EXIT,val]] => + form is ['%seq,:stmts,['EXIT,val]] => for s in stmts repeat vars := changeVariableDefinitionToStore(s,vars) changeVariableDefinitionToStore(val,vars) @@ -109,7 +109,7 @@ changeVariableDefinitionToStore(form,vars) == jumpToToplevel? x == atomic? x => false op := x.op - op is 'SEQ => CONTAINED('%leave,x.args) -- FIXME: what about GO? + op is '%seq => CONTAINED('%leave,x.args) -- FIXME: what about GO? op in '(EXIT %leave) => true or/[jumpToToplevel? x' for x' in x] @@ -135,7 +135,7 @@ groupVariableDefinitions form == [form.absKind,form.absParms,groupVariableDefinitions form.absBody] form is ['%loop,:iters,body,val] => [form.op,:iters,groupVariableDefinitions body,val] - form isnt ['SEQ,:stmts,['EXIT,val]] => form + form isnt ['%seq,:stmts,['EXIT,val]] => form defs := nil for x in stmts while nonExitingSingleAssignment? x repeat defs := [x.args,:defs] @@ -143,7 +143,7 @@ groupVariableDefinitions form == stmts := drop(#defs,stmts) expr := stmts = nil => val - ['SEQ,:stmts,['EXIT,val]] + ['%seq,:stmts,['EXIT,val]] ['%bind,reverse! defs,expr] optimizeFunctionDef(def) == @@ -212,7 +212,7 @@ subrname u == nil changeLeaveToExit(s,g) == - s isnt [.,:.] or s.op in '(QUOTE SEQ REPEAT COLLECT %collect %loop) => nil + s isnt [.,:.] or s.op in '(QUOTE %seq REPEAT COLLECT %collect %loop) => nil s is ['%leave, =g,:u] => (s.first := "EXIT"; s.rest := u) changeLeaveToExit(first s,g) changeLeaveToExit(rest s,g) @@ -250,7 +250,7 @@ removeNeedlessLeave x == optLabelled (x is ['%labelled,g,a]) == a isnt [.,:.] => a removeNeedlessLeave a - if a is ["SEQ",:s,['%leave,=g,u]] then + if a is ['%seq,:s,['%leave,=g,u]] then changeLeaveToExit(s,g) a.rest := [:s,["EXIT",u]] a := simplifyVMForm a @@ -258,7 +258,7 @@ optLabelled (x is ['%labelled,g,a]) == resetTo(x,a) else changeLeaveToGo(a,g) - x.first := "SEQ" + x.first := '%seq x.rest := [["EXIT",a],second g,["EXIT",second g]] x @@ -410,8 +410,8 @@ replaceableTemporary?(g,x) == x is ['GO,=g] => true or/[jumpTarget?(g,x') for x' in x] -optSEQ ["SEQ",:l] == - tryToRemoveSEQ SEQToCOND getRidOfTemps splicePROGN l where +optSeq ['%seq,:l] == + tryToRemoveSeq seqToCOND getRidOfTemps splicePROGN l where splicePROGN l == atomic? l => l l is [["PROGN",:stmts],:l'] => [:stmts,:l'] @@ -421,17 +421,17 @@ optSEQ ["SEQ",:l] == l is [["%LET",g,x],:r] and replaceableTemporary?(g,r) => getRidOfTemps substitute(x,g,r) first l is "/throwAway" => getRidOfTemps rest l - --this gets rid of unwanted labels generated by declarations in SEQs + --this gets rid of unwanted labels generated by declarations in %seq [first l,:getRidOfTemps rest l] - SEQToCOND l == + seqToCOND l == transform:= [[a,b] for x in l while (x is ['%when,[a,["EXIT",b]]])] before:= take(#transform,l) aft:= after(l,before) - null before => ["SEQ",:aft] + null before => ['%seq,:aft] null aft => ['%when,:transform,'(%otherwise (conderr))] - optCond ['%when,:transform,['%otherwise,optSEQ ["SEQ",:aft]]] - tryToRemoveSEQ l == - l is ["SEQ",[op,a]] and op in '(EXIT RETURN %leave %return) => a + optCond ['%when,:transform,['%otherwise,optSeq ['%seq,:aft]]] + tryToRemoveSeq l == + l is ['%seq,[op,a]] and op in '(EXIT RETURN %leave %return) => a l optSuchthat [.,:u] == ["SUCHTHAT",:u] @@ -828,7 +828,7 @@ optIquo(x is ['%iquo,a,b]) == --% for x in '((%call optCall) _ - (SEQ optSEQ)_ + (%seq optSeq)_ (%bind optBind)_ (%try optTry)_ (%not optNot)_ |