aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog10
-rw-r--r--src/interp/define.boot12
-rw-r--r--src/interp/nruncomp.boot16
3 files changed, 21 insertions, 17 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 79f4b4d7..08b99530 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,15 @@
2011-11-26 Gabriel Dos Reis <gdr@cs.tamu.edu>
+ * interp/define.boot (assignCapsuleFunctionSlot): Do not call
+ NRTisExported?. Determine operation kind locally. Do not store
+ implement slot on the used entity list.
+ * interp/nruncomp.boot (genDeltaEntry): Likewise.
+ (deltaTran): Simplify.
+ (NRTisExported?): Remove.
+ (vectorLocation): Adjust.
+
+2011-11-26 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
* algebra/indexedp.spad.pamphlet: Avoid direct use or RPLACD.
* algebra/poly.spad.pamphlet: Likewise.
* interp/define.boot (spadCompileOrSetq): Tidy replacement info.
diff --git a/src/interp/define.boot b/src/interp/define.boot
index 8204957c..600195a1 100644
--- a/src/interp/define.boot
+++ b/src/interp/define.boot
@@ -1697,16 +1697,16 @@ orderByDependency(vl,dl) ==
++ Subroutine of compDefineCapsuleFunction.
assignCapsuleFunctionSlot(db,op,sig) ==
- opSig := [op,sig]
- [.,.,implementation] := NRTisExported? opSig or return nil
- --if opSig is not exported, it is local and need not be assigned
+ kind := or/[u.mapKind for u in categoryExports $domainShell
+ | symbolEq?(op,u.mapOperation) and sig = u.mapSignature]
+ kind = nil => nil -- op is local and need not be assigned
if $insideCategoryPackageIfTrue then
sig := substitute('$,second dbConstructorForm db,sig)
sig := [getLocalIndex(db,x) for x in sig]
- opModemapPair := [op,['_$,:sig],["T",implementation]]
- n := dbEntitySlot(db,opModemapPair) => n --already there
+ desc := [op,'$,:sig,kind]
+ n := dbEntitySlot(db,desc) => n --already there
n := dbEntityCount db + $NRTbase
- dbUsedEntities(db) := [[opModemapPair],:dbUsedEntities db]
+ dbUsedEntities(db) := [[desc],:dbUsedEntities db]
dbEntityCount(db) := dbEntityCount db + 1
n
diff --git a/src/interp/nruncomp.boot b/src/interp/nruncomp.boot
index e4caf564..60b24c7c 100644
--- a/src/interp/nruncomp.boot
+++ b/src/interp/nruncomp.boot
@@ -87,9 +87,7 @@ NRTaddDeltaCode db ==
deltaTran(db,item,compItem) ==
--NOTE: all items but signatures are wrapped with %domain forms
item is ["%domain",lhs,:.] => NRTencode(db,lhs,compItem)
- [op,:modemap] := item
- [dcSig,[.,[kind,:.]]] := modemap
- [dc,:sig] := dcSig
+ [op,dc,:sig,kind] := item
-- NOTE: sig is already in encoded form since it comes from dbUsedEntities;
-- so we need only encode dc. -- gdr 2008-11-28.
dcCode :=
@@ -208,8 +206,6 @@ genDeltaEntry(op,mm,e) ==
odc := dc
if cons? dc then
dc := substitute("$$","$",dc)
- opModemapPair :=
- [op,[dc,:[getLocalIndex(db,x) for x in nsig]],["T",cform]] -- force pred to T
if NRTassocIndex(db,dc) = nil and (dc is [.,:.] or
ident? dc and symbolMember?(dc,$functorLocalParameters)) then
-- This modemap's domain of computation did not contributte an
@@ -220,9 +216,10 @@ genDeltaEntry(op,mm,e) ==
entry.rest := compOrCroak(odc,$EmptyMode,e).expr
u :=
[kind,'$,index] where index() ==
- n := dbEntitySlot(db,opModemapPair) => n
+ desc := [op,dc,:[getLocalIndex(db,x) for x in nsig],kind]
+ n := dbEntitySlot(db,desc) => n
n := dbEntityCount db + $NRTbase
- dbUsedEntities(db) := [[opModemapPair],:dbUsedEntities db]
+ dbUsedEntities(db) := [[desc],:dbUsedEntities db]
dbEntityCount(db) := dbEntityCount db + 1
n
impl := optDeltaEntry(op,nsig,odc,kind) => impl
@@ -291,9 +288,6 @@ NRTaddInner(db,x) ==
x
-NRTisExported? opSig ==
- or/[u for u in categoryExports $domainShell | u.0 = opSig]
-
consSig(db,sig,dc) == [consDomainName(db,sigpart,dc) for sigpart in sig]
consDomainName(db,x,dc) ==
@@ -649,7 +643,7 @@ deepChaseInferences(pred,$e) ==
vectorLocation(db,op,sig) ==
u := or/[i for i in 1.. for [u,:.] in dbUsedEntities db
- | u is [=op,['$,: xsig],:.] and sig = NRTsubstDelta(db,xsig) ]
+ | u is [=op,'$,:xsig,.] and sig = NRTsubstDelta(db,xsig) ]
u => dbEntityCount db - u + $NRTbase
nil -- this signals that calls should be forwarded