aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog2
-rw-r--r--src/interp/buildom.boot13
-rw-r--r--src/interp/i-coerce.boot4
-rw-r--r--src/interp/i-funsel.boot2
-rw-r--r--src/interp/i-resolv.boot2
-rw-r--r--src/interp/i-util.boot2
-rw-r--r--src/interp/posit.boot2
-rw-r--r--src/interp/wi2.boot2
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) ==