diff options
Diffstat (limited to 'src/interp')
-rw-r--r-- | src/interp/define.boot | 12 | ||||
-rw-r--r-- | src/interp/nruncomp.boot | 16 |
2 files changed, 11 insertions, 17 deletions
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 |