[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