[Vm-dev] VM Maker: VMMaker.oscog-eem.468.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Oct 19 01:05:49 UTC 2013


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.468.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.468
Author: eem
Time: 18 October 2013, 6:02:37.436 pm
UUID: c604e6e0-398e-423c-b37d-478eca3fedf3
Ancestors: VMMaker.oscog-eem.467

Remove an unused recursive method (stackValue:ofObjStack:put:).

In Slang, prevent inlining of recursive methods.

=============== Diff against VMMaker.oscog-eem.467 ===============

Item was removed:
- ----- Method: SpurMemoryManager>>stackValue:ofObjStack:put: (in category 'obj stacks') -----
- stackValue: offset ofObjStack: objStackPage put: aValue
- 	| topx nextPage |
- 	self assert: offset >= 0.
- 	topx := self fetchPointer: ObjStackTopx ofObject: objStackPage.
- 	offset < topx ifTrue:
- 		[^self storePointer: ObjStackTopx + offset ofObjStack: objStackPage withValue: aValue].
- 	nextPage := self fetchPointer: ObjStackNextx ofObject: objStackPage.
- 	nextPage = 0 ifTrue:
- 		[self error: 'no such element on obj stack'].
- 	^self stackValue: offset - topx ofObjStack: nextPage put: aValue!

Item was changed:
  ----- Method: TMethod>>inlineableFunctionCall:in: (in category 'inlining') -----
  inlineableFunctionCall: aNode in: aCodeGen
  	"Answer true 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."
  
  	| m |
  	self maybeBreakFor: aNode in: aCodeGen.
  	^aNode isSend
  	and: [(m := aCodeGen methodNamed: aNode selector) notNil  "nil if builtin or external function"
+ 	and: [m ~~ self
  	and: [m isFunctional
  	and: [(aCodeGen mayInline: m selector)
+ 	and: [aNode args allSatisfy: [ :a | self isSubstitutableNode: a intoMethod: m in: aCodeGen]]]]]]!
- 	and: [aNode args allSatisfy: [ :a | self isSubstitutableNode: a intoMethod: m in: aCodeGen]]]]]!

Item was changed:
  ----- Method: TMethod>>inlineableSend:in: (in category 'inlining') -----
  inlineableSend: aNode in: aCodeGen
  	"Answer true if the given send node is a call to a method that can be inlined."
  
  	| m |
  	self maybeBreakFor: aNode in: aCodeGen.
  	aNode isSend ifFalse: [ ^false ].
  	m := aCodeGen methodNamed: aNode selector.  "nil if builtin or external function"
+ 	^m ~= nil and: [m ~~ self and: [m isComplete and: [aCodeGen mayInline: m selector]]]!
- 	^(m ~= nil) and: [m isComplete and: [aCodeGen mayInline: m selector]]!



More information about the Vm-dev mailing list