[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