diff options
Diffstat (limited to 'src/interp/define.boot')
-rw-r--r-- | src/interp/define.boot | 15 |
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' |