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

commits at source.squeak.org commits at source.squeak.org
Wed Dec 11 00:11:54 UTC 2013


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

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

Name: VMMaker.oscog-eem.554
Author: eem
Time: 10 December 2013, 4:08:46.92 pm
UUID: a666e7e4-245e-4e8a-9536-3aefd4509f47
Ancestors: VMMaker.oscog-eem.553

Get the Spur obj enumeration asserts right.  There should be
no free or bridge objs in new space.

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

Item was changed:
  ----- Method: SpurMemoryManager>>allExistingNewSpaceObjectsDo: (in category 'object enumeration') -----
  allExistingNewSpaceObjectsDo: aBlock
  	<inline: true>
  	| prevObj prevPrevObj objOop limit |
  	prevPrevObj := prevObj := nil.
  	"After a scavenge eden is empty, futureSpace is empty, and all newSpace objects are
  	  in pastSpace.  Objects are allocated in eden.  So enumerate only eden and pastSpace."
  	objOop := self objectStartingAt: scavenger eden start.
  	limit := freeStart.
  	[self oop: objOop isLessThan: limit] whileTrue:
+ 		[self assert: (self isEnumerableObjectNoAssert: objOop).
+ 		 aBlock value: objOop.
- 		[(self isEnumerableObject: objOop) ifTrue:
- 			[aBlock value: objOop].
  		 prevPrevObj := prevObj.
  		 prevObj := objOop.
  		 objOop := self objectAfter: objOop limit: freeStart].
  	objOop := self objectStartingAt: scavenger pastSpace start.
  	limit := pastSpaceStart.
  	[self oop: objOop isLessThan: limit] whileTrue:
+ 		[self assert: (self isEnumerableObjectNoAssert: objOop).
+ 		 aBlock value: objOop.
- 		[(self isFreeObject: objOop) ifFalse:
- 			[aBlock value: objOop].
  		 prevPrevObj := prevObj.
  		 prevObj := objOop.
  		 objOop := self objectAfter: objOop limit: limit].
  	self touch: prevPrevObj.
  	self touch: prevObj!

Item was changed:
  ----- Method: SpurMemoryManager>>allNewSpaceObjectsDo: (in category 'object enumeration') -----
  allNewSpaceObjectsDo: aBlock
  	"Enumerate all new space objects, excluding free objects."
  	<inline: true>
  	self allNewSpaceEntitiesDo:
  		[:objOop|
+ 		 self assert: (self isEnumerableObjectNoAssert: objOop).
+ 		 aBlock value: objOop]!
- 		 (self isEnumerableObject: objOop) ifTrue:
- 			[aBlock value: objOop]]!

Item was added:
+ ----- Method: SpurMemoryManager>>isEnumerableObjectNoAssert: (in category 'object enumeration') -----
+ isEnumerableObjectNoAssert: objOop
+ 	"Answer if objOop should be included in an allObjects...Do: enumeration.
+ 	 Non-objects should be excluded; these are bridges and free chunks."
+ 	^(self classIndexOf: objOop) >= self isForwardedObjectClassIndexPun!



More information about the Vm-dev mailing list