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

commits at source.squeak.org commits at source.squeak.org
Wed Dec 11 23:49:56 UTC 2013


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

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

Name: VMMaker.oscog-eem.559
Author: eem
Time: 11 December 2013, 3:46:34.386 pm
UUID: 91b925f5-c776-4549-82a7-d10b0853e0f7
Ancestors: VMMaker.oscog-eem.558

Fix snafu in markAndTraceObjStack:andContents: that spun marking
first free page.

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

Item was changed:
  ----- Method: SpurMemoryManager>>markAndTraceObjStack:andContents: (in category 'obj stacks') -----
  markAndTraceObjStack: stackOrNil andContents: markAndTraceContents
  	"An obj stack is a stack of objects stored in a hidden root slot, such
  	 as the markStack or the ephemeronQueue.  It is a linked list of
  	 segments, with the hot end at the head of the list.  It is a word object.
  	 The stack pointer is in ObjStackTopx and 0 means empty."
  	<inline: false>
  	| index field |
  	stackOrNil = nilObj ifTrue:
  		[^self].
  	self setIsMarkedOf: stackOrNil to: true.
  	self assert: (self numSlotsOfAny: stackOrNil) = ObjStackPageSlots.
  	field := self fetchPointer: ObjStackNextx ofObject: stackOrNil.
  	field ~= 0 ifTrue:
  		[self markAndTraceObjStack: field andContents: markAndTraceContents].
  	field := stackOrNil.
+ 	[field := self fetchPointer: ObjStackFreex ofObject: field.
- 	[field := self fetchPointer: ObjStackFreex ofObject: stackOrNil.
  	 field ~= 0] whileTrue:
  		[self setIsMarkedOf: field to: true].
  	markAndTraceContents ifFalse:
  		[^self].
  	"There are four fixed slots in an obj stack, and a Topx of 0 indicates empty, so
  	  if there were 6 slots in an oop stack, full would be 2, and the last 0-rel index is 5."
  	index := (self fetchPointer: ObjStackTopx ofObject: stackOrNil) + ObjStackNextx.
  	[index >= ObjStackFixedSlots] whileTrue:
  		[field := self fetchPointer: index ofObject: stackOrNil.
  		 (self isImmediate: field) ifFalse:
  			[self markAndTrace: field].
  		 index := index - 1]!



More information about the Vm-dev mailing list