diff options
author | dos-reis <gdr@axiomatics.org> | 2008-10-06 11:03:50 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2008-10-06 11:03:50 +0000 |
commit | 159814d5cc62f3367369a7309fdf32efd21dbb13 (patch) | |
tree | 7323044fe02e27b1a0c189a67cbe27d9bdfd9c91 /src/interp/functor.boot | |
parent | b54e2a3ac1d94c545db197bb27705cded2f692f5 (diff) | |
download | open-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.boot | 12 |
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 |