aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2011-11-24 14:21:24 +0000
committerdos-reis <gdr@axiomatics.org>2011-11-24 14:21:24 +0000
commitfdffee8492600045e35fc54c3379e559c66f8d19 (patch)
tree422ee9df3db7c53655ab6bab8fe94b474a3c9a4f /src
parent09eb84d27b5f7e381a887ea1a8eb3000a93a6017 (diff)
downloadopen-axiom-fdffee8492600045e35fc54c3379e559c66f8d19.tar.gz
* interp/nruncomp.boot (changeDirectoryInSlot1,sigloc): Add first
parameter as a DB. Adjust caller. (NRTsubstDelta): Tidy.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog6
-rw-r--r--src/interp/nruncomp.boot26
2 files changed, 20 insertions, 12 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 9b0cc8cc..acb9f170 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2011-11-24 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * interp/nruncomp.boot (changeDirectoryInSlot1,sigloc): Add first
+ parameter as a DB. Adjust caller.
+ (NRTsubstDelta): Tidy.
+
2011-11-23 Gabriel Dos Reis <gdr@cs.tamu.edu>
* interp/functor.boot (findOperatorImplementations): Rename from
diff --git a/src/interp/nruncomp.boot b/src/interp/nruncomp.boot
index 319c5f23..b1724d82 100644
--- a/src/interp/nruncomp.boot
+++ b/src/interp/nruncomp.boot
@@ -619,14 +619,14 @@ changeDirectoryInSlot1 db == --called by buildFunctor
-- if called inside buildFunctor, $NRTdeltaLength gives different locs
-- otherwise called from compFunctorBody (all lookups are forwarded):
-- $NRTdeltaList = nil ===> all slot numbers become nil
- $lisplibOperationAlist := [sigloc entry for entry in categoryExports $domainShell] where
- sigloc [opsig,pred,fnsel] ==
+ $lisplibOperationAlist := [sigloc(db,entry) for entry in categoryExports $domainShell] where
+ sigloc(db,[opsig,pred,fnsel]) ==
if pred isnt 'T then
pred := simpBool pred
$NRTslot1PredicateList := insert(pred,$NRTslot1PredicateList)
- fnsel is [op,a,:.] and (op is 'ELT or op is 'CONST) =>
+ fnsel is [op,a,:.] and op in '(ELT CONST) =>
if $insideCategoryPackageIfTrue then
- opsig := substitute('$,second($functorForm),opsig)
+ opsig := substitute('$,first dbParameters db,opsig)
[opsig,pred,[op,a,vectorLocation(first opsig,second opsig)]]
[opsig,pred,fnsel]
sortedOplist := listSort(function GLESSEQP,
@@ -662,19 +662,21 @@ vectorLocation(op,sig) ==
u => $NRTdeltaLength - u + $NRTbase
nil -- this signals that calls should be forwarded
-NRTsubstDelta(initSig) ==
- sig := [replaceSlotTypes s for s in initSig] where
- replaceSlotTypes(t) ==
+NRTsubstDelta sig ==
+ [replaceSlotTypes t for t in sig] where
+ replaceSlotTypes t ==
t isnt [.,:.] =>
not integer? t => t
- t = 0 => '$
- t = 2 => '_$_$
+ t = 0 => "$"
+ t = 2 => "$$"
t = 5 => $NRTaddForm
- u:= $NRTdeltaList.($NRTdeltaLength+5-t)
+ u := $NRTdeltaList.($NRTdeltaLength+5-t)
first u = "%domain" => second u
error "bad $NRTdeltaList entry"
- first t in '(Mapping Union Record _:) =>
- [first t,:[replaceSlotTypes(x) for x in rest t]]
+ t is [":",x,t'] => [t.op,x,replaceSlotTypes t']
+ first t in '(Enumeration EnumerationCategory) => t
+ ident? first t and builtinConstructor? first t =>
+ [t.op,:[replaceSlotTypes(x) for x in t.args]]
t
-----------------------------SLOT1 DATABASE------------------------------------