[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