[Vm-dev] VM Maker: VMMaker.oscog-eem.2532.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Mar 20 18:40:31 UTC 2019
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2532.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2532
Author: eem
Time: 20 March 2019, 11:40:14.864463 am
UUID: 64858b69-2d39-4659-b448-3276ed91bb82
Ancestors: VMMaker.oscog-eem.2531
Allow <inline: #always> to override requirement for inlined function to be functional. This allows Slang usersa who "know what they're doing" (an oxymoron if ever I saw one) to insist on inlining something non-functional.
=============== Diff against VMMaker.oscog-eem.2531 ===============
Item was changed:
----- Method: TMethod>>inlineableFunctionCall:in: (in category 'inlining') -----
inlineableFunctionCall: aNode in: aCodeGen
"Answer if the given send node is a call to a 'functional' method--a method whose body is a single return statement of some expression and whose actual parameters can all be directly substituted."
aCodeGen maybeBreakForTestToInline: aNode in: self.
aNode isSend ifFalse:
[^false].
^(aCodeGen methodNamed: aNode selector)
ifNil:
[aNode asTransformedConstantPerform
ifNil: [self isInlineableConditional: aNode in: aCodeGen]
ifNotNil: [:n| self inlineableFunctionCall: n in: aCodeGen]]
ifNotNil:
[:m|
(m ~~ self
+ and: [((m isFunctionalIn: aCodeGen) or: [m mustBeInlined and: [m isComplete]])
- and: [(m isFunctionalIn: aCodeGen)
and: [m mayBeInlined
and: [(aCodeGen mayInline: m selector)
and: [aNode args allSatisfy: [:a| self isSubstitutableNode: a intoMethod: m in: aCodeGen]]]]])
or: [m checkForRequiredInlinability]]!
Item was added:
+ ----- Method: TMethod>>mustBeInlined (in category 'accessing') -----
+ mustBeInlined
+ ^inline == #always!
More information about the Vm-dev
mailing list