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]]!
vm-dev@lists.squeakfoundation.org