diff options
-rw-r--r-- | src/ChangeLog | 2 | ||||
-rw-r--r-- | src/interp/buildom.boot | 13 | ||||
-rw-r--r-- | src/interp/i-coerce.boot | 4 | ||||
-rw-r--r-- | src/interp/i-funsel.boot | 2 | ||||
-rw-r--r-- | src/interp/i-resolv.boot | 2 | ||||
-rw-r--r-- | src/interp/i-util.boot | 2 | ||||
-rw-r--r-- | src/interp/posit.boot | 2 | ||||
-rw-r--r-- | src/interp/wi2.boot | 2 |
8 files changed, 15 insertions, 14 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index f2c96f40..e02952eb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,7 +1,7 @@ 2010-06-04 Gabriel Dos Reis <gdr@cs.tamu.edu> * interp/buildom.boot (UnionEqual): Don't COERCE to FUNCTION. Use - eval. + eval. Use middle end opcodes instead of EQCAR. (coerceUn2E): Likewise. 2010-06-03 Gabriel Dos Reis <gdr@cs.tamu.edu> diff --git a/src/interp/buildom.boot b/src/interp/buildom.boot index c242faf2..20078c36 100644 --- a/src/interp/buildom.boot +++ b/src/interp/buildom.boot @@ -186,7 +186,7 @@ UnionEqual(x, y, dom) == typeFun := eval ['%lam,'(_#1),p] FUNCALL(typeFun,x) and FUNCALL(typeFun,y) => string? b => same := (x = y) - if p is ["EQCAR", :.] then (x := rest x; y := rest y) + if p is ['%ieq,['%head,.],:.] then (x := rest x; y := rest y) same := SPADCALL(x, y, findEqualFun(evalDomain b)) same @@ -199,7 +199,7 @@ coerceUn2E(x,source) == for b in stripUnionTags branches for p in predlist repeat typeFun := eval ['%lam,'(_#1),p] if FUNCALL(typeFun,x) then return - if p is ["EQCAR", :.] then x := rest x + if p is ['%ieq,['%head,.],:.] then x := rest x -- string? b => return x -- to catch "failed" etc. string? b => byGeorge := x -- to catch "failed" etc. byGeorge := coerceVal2E(x,b) @@ -390,11 +390,12 @@ mkUnionFunList(op,form is ["Union",:listOfEntries],e) == ["case",[$Boolean,g,t],typeFun]] for p in predList for t in listOfEntries])] where upFun() == - p is ["EQCAR",x,n] => ["XLAM",["#1"],["%makepair",n,"#1"]] + p is ['%ieq,['%head,x],n] => + ["XLAM",["#1"],["%makepair",n,"#1"]] ["XLAM",["#1"],"#1"] cdownFun() == gg:=gensym() - if p is ["EQCAR",x,n] then + if p is ['%ieq,['%head,x],n] then ref:=["%tail",gg] q:= ['%ieq,['%head,gg],n] else @@ -403,11 +404,11 @@ mkUnionFunList(op,form is ["Union",:listOfEntries],e) == ["XLAM",["#1"],["PROG2",["%LET",gg,"#1"],ref, ["check-union",q,t,gg]]] downFun() == - p is ["EQCAR",x,.] => + p is ['%ieq,['%head,x],.] => ["XLAM",["#1"],["%tail","#1"]] ["XLAM",["#1"],"#1"] typeFun() == - p is ["EQCAR",x,n] => + p is ['%ieq,['%head,x],n] => ["XLAM",["#1"],['%ieq,['%head,x],n]] ["XLAM",["#1"],p] cList:= substitute(dollarIfRepHack op,g,cList) diff --git a/src/interp/i-coerce.boot b/src/interp/i-coerce.boot index 6a1821d8..1ede612a 100644 --- a/src/interp/i-coerce.boot +++ b/src/interp/i-coerce.boot @@ -980,7 +980,7 @@ coerceUnion2Branch(object) == predicate := pred targetType := typ null targetType => keyedSystemError("S2IC0013",NIL) - predicate is ['EQCAR,.,p] => objNewWrap(rest val',targetType) + predicate is ['%ieq,['%head,.],p] => objNewWrap(rest val',targetType) objNew(objVal object,targetType) coerceBranch2Union(object,union) == @@ -991,7 +991,7 @@ coerceBranch2Union(object,union) == p := position(objMode object,doms) p = -1 => keyedSystemError("S2IC0014",[objMode object,union]) val := objVal object - predList.p is ['EQCAR,.,tag] => + predList.p is ['%ieq,['%head,.],tag] => objNewWrap([removeQuote tag,:unwrap val],union) objNew(val,union) diff --git a/src/interp/i-funsel.boot b/src/interp/i-funsel.boot index b46ef322..0c3acb0a 100644 --- a/src/interp/i-funsel.boot +++ b/src/interp/i-funsel.boot @@ -124,7 +124,7 @@ selectMms(op,args,$declaredMode) == identType := 'Variable for x in types1 while not $declaredMode repeat - not EQCAR(x,identType) => $declaredMode:= x + x isnt [=identType,:.] => $declaredMode:= x types2 := [altTypeOf(x,y,$declaredMode) for x in types1 for y in args] mmS:= diff --git a/src/interp/i-resolv.boot b/src/interp/i-resolv.boot index afc8f07d..efc961e9 100644 --- a/src/interp/i-resolv.boot +++ b/src/interp/i-resolv.boot @@ -794,7 +794,7 @@ bubbleConstructor(TL) == compareTT(t1,t2) == -- 'T if type t1 is more nested than t2 -- otherwise 'T if t1 is lexicographically greater than t2 - EQCAR(t1,$QuotientField) or + t1 is [=$QuotientField,:.] or MEMQ(opOf t2,[$QuotientField, 'SimpleAlgebraicExtension]) => NIL CGREATERP(PRIN2CVEC opOf t1,PRIN2CVEC opOf t2) diff --git a/src/interp/i-util.boot b/src/interp/i-util.boot index 9a100a3e..820ba96b 100644 --- a/src/interp/i-util.boot +++ b/src/interp/i-util.boot @@ -145,7 +145,7 @@ isCapitalWord x == (y := PNAME x) and and/[upperCase? y.i for i in 0..MAXINDEX y] mkPredList listOfEntries == - [['EQCAR,"#1",i] for arg in listOfEntries for i in 0..] + [['%ieq,['%head,"#1"],i] for arg in listOfEntries for i in 0..] --% diff --git a/src/interp/posit.boot b/src/interp/posit.boot index fe155c7c..30fbd5f1 100644 --- a/src/interp/posit.boot +++ b/src/interp/posit.boot @@ -138,7 +138,7 @@ pfAbSynOp form == pfAbSynOp?(form, op) == hd := first form - EQ(hd, op) or EQCAR(hd, op) + EQ(hd, op) or hd is [=op,:.] pfLeaf? form == pfAbSynOp form in diff --git a/src/interp/wi2.boot b/src/interp/wi2.boot index c5a6ef21..3b14c17d 100644 --- a/src/interp/wi2.boot +++ b/src/interp/wi2.boot @@ -1113,7 +1113,7 @@ replaceNodeInStructureBy(node, x) == replaceNodeBy(node, x) == atom x => nil - for y in tails x | EQCAR(x,node) repeat x.first := $nodeCopy + for y in tails x | x is [=node,:.] repeat x.first := $nodeCopy nil chk(x,key) == fn(x,0,key) where fn(x,cnt,key) == |