[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