[Vm-dev] VM Maker: VMMaker.oscog-eem.650.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Mar 19 19:44:07 UTC 2014
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.650.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.650
Author: eem
Time: 19 March 2014, 12:41:51.339 pm
UUID: 600ed9be-7bc7-4ad0-9675-2ac9d3774b36
Ancestors: VMMaker.oscog-eem.649
Fix nilling of weak fields in old space. The old space GC must
follow forwarders just as the scavenger does.
=============== Diff against VMMaker.oscog-eem.649 ===============
Item was changed:
----- Method: SpurMemoryManager>>nilUnmarkedWeaklingSlotsIn: (in category 'weakness and ephemerality') -----
nilUnmarkedWeaklingSlotsIn: aWeakling
"Nil the unmarked slots in aWeakling and
answer if any unmarked slots were found."
| anyUnmarked |
anyUnmarked := false.
(self numStrongSlotsOf: aWeakling ephemeronInactiveIf: nil) to: (self numSlotsOf: aWeakling) - 1 do:
+ [:i| | referent |
+ referent := self fetchPointer: i ofObject: aWeakling.
+ ((self isNonImmediate: referent)
+ and: [self isForwarded: referent]) ifTrue:
+ [referent := self fixFollowedField: i ofObject: aWeakling withInitialValue: referent].
+ ((self isImmediate: referent) or: [self isMarked: referent]) ifFalse:
- [:i| | oop |
- oop := self fetchPointer: i ofObject: aWeakling.
- ((self isImmediate: oop) or: [self isMarked: oop]) ifFalse:
[self storePointerUnchecked: i ofObject: aWeakling withValue: nilObj.
anyUnmarked := true]].
^anyUnmarked!
More information about the Vm-dev
mailing list