[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:

==================== 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:
  	^(aCodeGen methodNamed: aNode selector)
  			[aNode asTransformedConstantPerform
  				ifNil: [self isInlineableConditional: aNode in: aCodeGen]
  				ifNotNil: [:n| self inlineableFunctionCall: n in: aCodeGen]]
  			 (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