aboutsummaryrefslogtreecommitdiff
path: root/src/interp/functor.boot
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2008-10-06 11:03:50 +0000
committerdos-reis <gdr@axiomatics.org>2008-10-06 11:03:50 +0000
commit159814d5cc62f3367369a7309fdf32efd21dbb13 (patch)
tree7323044fe02e27b1a0c189a67cbe27d9bdfd9c91 /src/interp/functor.boot
parentb54e2a3ac1d94c545db197bb27705cded2f692f5 (diff)
downloadopen-axiom-159814d5cc62f3367369a7309fdf32efd21dbb13.tar.gz
* interp/functor.boot (DescendCode): Update capsule directory only
for non-default implementations. * interp/c-util.boot ($capsuleDirectory): New. (clearCapsuleDirectory): Likewise. (getCapsuleDirectoryEntry): Likewise. (updateCapsuleDirectory): Likewise. (foldSpadcall): Likewise. (foldExportedFunctionReferences): Likewise. * interp/define.boot (compFunctorBody): Use it.
Diffstat (limited to 'src/interp/functor.boot')
-rw-r--r--src/interp/functor.boot12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/interp/functor.boot b/src/interp/functor.boot
index af887d1a..a3e122c6 100644
--- a/src/interp/functor.boot
+++ b/src/interp/functor.boot
@@ -639,6 +639,9 @@ DescendCode(code,flag,viewAssoc,EnvToPass) ==
dom
body:= ['CONS,implem,dom]
u:= SetFunctionSlots(sig,body,flag,'original)
+ -- ??? We do not resolve default definitions, yet.
+ if not $insideCategoryPackageIfTrue then
+ updateCapsuleDirectory(rest u, flag)
ConstantCreator u =>
if not (flag=true) then u:= ['COND,[ProcessCond(flag,viewAssoc),u]]
$ConstantAssignments:= [u,:$ConstantAssignments]
@@ -657,9 +660,10 @@ DescendCode(code,flag,viewAssoc,EnvToPass) ==
code
ConstantCreator u ==
- null u => nil
- u is [q,.,.,u'] and (q in '(setShellEntry SETELT QSETREFV)) => ConstantCreator u'
- u is ['CONS,:.] => nil
+ null u => false
+ u is [q,.,.,u'] and (q in '(setShellEntry SETELT QSETREFV)) =>
+ ConstantCreator u'
+ u is ['CONS,:.] => false
true
ProcessCond(cond,viewassoc) ==
@@ -683,7 +687,7 @@ SetFunctionSlots(sig,body,flag,mode) == --mode is either "original" or "adding"
--+
catNames := ['$]
for u in $catvecList for v in catNames repeat
- null body => return NIL
+ null body => return nil
for catImplem in LookUpSigSlots(sig,u.1) repeat
if catImplem is [q,.,index] and (q='ELT or q='CONST)
then