aboutsummaryrefslogtreecommitdiff
path: root/src/interp/define.boot
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2010-07-18 03:59:54 +0000
committerdos-reis <gdr@axiomatics.org>2010-07-18 03:59:54 +0000
commit6f895d0aed70b3a0ff95f19a5f3e4472c65bfd0d (patch)
treeb805dc5dc54812fe61efb039f15087a9d9b6c5be /src/interp/define.boot
parent667ec69af3090bccd576e23e56a229168f8733b7 (diff)
downloadopen-axiom-6f895d0aed70b3a0ff95f19a5f3e4472c65bfd0d.tar.gz
More cleanups
Diffstat (limited to 'src/interp/define.boot')
-rw-r--r--src/interp/define.boot15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/interp/define.boot b/src/interp/define.boot
index ca7d8386..79b0c580 100644
--- a/src/interp/define.boot
+++ b/src/interp/define.boot
@@ -1348,8 +1348,17 @@ bootStrapError(functorForm,sourceFile) ==
''%b,MKQ namestring sourceFile,''%d,'"needs to be compiled"]]]]
registerInlinableDomain(x,e) ==
- macroExpand(x,e) is [ctor,:.] and constructor? ctor =>
- nominateForInlining ctor
+ x := macroExpand(x,e)
+ x is [ctor,:.] =>
+ constructor? ctor => nominateForInlining ctor
+ ctor = 'Record or ctor = 'Union =>
+ x.args is [['_:,:.],:.] =>
+ for [.,.,t] in x.args repeat
+ registerInlinableDomain(t,e)
+ for t in x.args repeat
+ registerInlinableDomain(t,e)
+ nil
+ nil
compAdd(['add,$addForm,capsule],m,e) ==
$bootStrapMode = true =>
@@ -1484,7 +1493,7 @@ doIt(item,$predl) ==
--$Representation bound by compDefineFunctor, used in compNoStacking
$Representation := getRepresentation $e
if $optimizeRep then
- nominateForInlining $Representation
+ registerInlinableDomain($Representation,$e)
code is ["%LET",:.] =>
item.op := "setShellEntry"
rhsCode := rhs'