aboutsummaryrefslogtreecommitdiff
path: root/src/interp/define.boot
diff options
context:
space:
mode:
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'