[Vm-dev] VM Maker: VMMaker.oscog-eem.487.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Nov 1 00:47:05 UTC 2013
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.487.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.487
Author: eem
Time: 31 October 2013, 5:43:42.615 pm
UUID: 6160c3a0-aef1-4e52-bbe7-052d13dbe0aa
Ancestors: VMMaker.oscog-eem.486
objStack:from:do: must be marked <inline: true> to gen code.
=============== Diff against VMMaker.oscog-eem.486 ===============
Item was changed:
----- Method: SpurMemoryManager>>objStack:from:do: (in category 'obj stacks') -----
objStack: objStack from: start do: aBlock
"Evaluate aBlock with all elements from start (0-relative) in objStack.
Answer the size of the stack *before* the enumeration commences.
This evaluates in top-of-stack-to-bottom order. N.B. this is also stable
if aBlock causes new elements to be added to the objStack, but
unstable if aBlock causes elements to be removed."
+ <inline: true>
| size objStackPage numToEnumerate |
size := self fetchPointer: ObjStackTopx ofObject: objStack.
objStackPage := self fetchPointer: ObjStackNextx ofObject: objStack.
[objStackPage ~= 0] whileTrue:
[size := size + ObjStackLimit.
self assert: (self fetchPointer: ObjStackTopx ofObject: objStackPage) = ObjStackLimit.
objStackPage := self fetchPointer: ObjStackNextx ofObject: objStackPage].
numToEnumerate := size - start.
objStackPage := objStack.
[numToEnumerate > 0] whileTrue:
[| numOnThisPage numToEnumerateOnThisPage topIndex |
numOnThisPage := self fetchPointer: ObjStackTopx ofObject: objStackPage.
numToEnumerateOnThisPage := numToEnumerate min: numOnThisPage.
topIndex := numOnThisPage + ObjStackFixedSlots - 1.
topIndex
to: topIndex - numToEnumerateOnThisPage + 1
by: -1
do: [:i| aBlock value: (self fetchPointer: i ofObject: objStackPage)].
numToEnumerate := numToEnumerate - numToEnumerateOnThisPage.
objStackPage := self fetchPointer: ObjStackNextx ofObject: objStackPage].
^size!
More information about the Vm-dev
mailing list