Spaces:
Running
Running
File size: 761 Bytes
8f3f8db |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
inlining
inlineCodeOrNilForStatement: aNode in: aCodeGen
"If the given statement node can be inlined, answer the statements that replace it. Otherwise, answer nil."
| stmts |
aNode isReturn ifTrue: [
(self inlineableSend: aNode expression in: aCodeGen) ifTrue: [
stmts := self inlineSend: aNode expression
directReturn: true exitVar: nil in: aCodeGen.
^stmts
].
].
aNode isAssignment ifTrue: [
(self inlineableSend: aNode expression in: aCodeGen) ifTrue: [
^self inlineSend: aNode expression
directReturn: false exitVar: aNode variable name in: aCodeGen
].
].
aNode isSend ifTrue: [
(self inlineableSend: aNode in: aCodeGen) ifTrue: [
^self inlineSend: aNode
directReturn: false exitVar: nil in: aCodeGen
].
].
^nil |