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

commits at source.squeak.org commits at source.squeak.org
Thu Apr 14 04:56:36 UTC 2016


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

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

Name: VMMaker.oscog-eem.1801
Author: eem
Time: 13 April 2016, 9:54:46.330833 pm
UUID: 223ff8af-cbc0-49ff-9692-0e5154d3f954
Ancestors: VMMaker.oscog-nice.1800

Fix assert and dequeueMourner for case where mournQueue is nil.

=============== Diff against VMMaker.oscog-nice.1800 ===============

Item was changed:
  ----- Method: SpurMemoryManager>>dequeueMourner (in category 'weakness and ephemerality') -----
  dequeueMourner
  	"Answer the top mourner (ephemeron or weak array) from the queue or
  	 nil if the queue is empty. We don't care about order; ephemerons are
  	 fired in an arbitrary order based on where they are in the heap."
+ 	^mournQueue ~= nilObj ifTrue:
+ 		[self popObjStack: mournQueue]!
- 	^self popObjStack: mournQueue!

Item was changed:
  ----- Method: SpurMemoryManager>>queueMourner: (in category 'weakness and ephemerality') -----
  queueMourner: anEphemeronOrWeakArray
  	"Add the ephemeron to the queue and make it non-ephemeral, to avoid subsequent firing.
  	 Alas this means that other ephemerons on the same object not identified in this sccavenge
  	 or GC will not fire until later.  But that's life."
  	self assert: ((self isNonImmediate: anEphemeronOrWeakArray)
  				and: [(self formatOf: anEphemeronOrWeakArray) = self ephemeronFormat
  				   or: [(self formatOf: anEphemeronOrWeakArray) = self weakArrayFormat]]).
+ 	self deny: (mournQueue ~= nilObj
+ 				and: [self is: anEphemeronOrWeakArray onObjStack: mournQueue]).
- 	self deny: (self is: anEphemeronOrWeakArray onObjStack: mournQueue).
  	self ensureRoomOnObjStackAt: MournQueueRootIndex.
  	self push: anEphemeronOrWeakArray onObjStack: mournQueue.
  	(self formatOf: anEphemeronOrWeakArray) = self ephemeronFormat ifTrue:
  		[self setFormatOf: anEphemeronOrWeakArray to: self nonIndexablePointerFormat]!



More information about the Vm-dev mailing list