[Vm-dev] VM Maker: VMMaker.oscog.seperateMarking-WoC.3250.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Aug 9 21:43:57 UTC 2022


Tom Braun uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog.seperateMarking-WoC.3250.mcz

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

Name: VMMaker.oscog.seperateMarking-WoC.3250
Author: WoC
Time: 9 August 2022, 11:43:29.170785 pm
UUID: 7538f8e5-09f4-4386-bc3e-183325a03dfe
Ancestors: VMMaker.oscog.seperateMarking-WoC.3249

being able to build a SpurStackVM

=============== Diff against VMMaker.oscog.seperateMarking-WoC.3249 ===============

Item was changed:
  ----- Method: SpurIncrementalCompactor class>>declareCVarsIn: (in category 'as yet unclassified') -----
  declareCVarsIn: aCCodeGenerator
  
- 	super declareCVarsIn: aCCodeGenerator.
  	aCCodeGenerator var: #segmentToFill type: #'SpurSegmentInfo *'.!

Item was changed:
  ----- Method: SpurIncrementalCompactor>>compact (in category 'api') -----
  compact
  
+ 	<inline: #never>
+ 
  	self incrementalCompact!

Item was added:
+ ----- Method: SpurIncrementalCompactor>>postSwizzleAction (in category 'api') -----
+ postSwizzleAction
+ 	"Since the compact abuses the swizzle field of segment, it needs to be reset after start-up."
+ 	
+ 	| segInfo |
+ 	<var: 'segInfo' type: #'SpurSegmentInfo *'>
+ 	0 to: manager numSegments - 1 do:
+ 		[:i|
+ 		 segInfo := self addressOf: (manager segmentManager segments at: i).
+ 		 segInfo swizzle: 0 ]!

Item was removed:
- ----- Method: SpurIncrementalCompactor>>restoreSwizzle (in category 'api') -----
- restoreSwizzle
- 	"Since the compact abuses the swizzle field of segment, it needs to be reset after start-up."
- 	
- 	| segInfo |
- 	<var: 'segInfo' type: #'SpurSegmentInfo *'>
- 	0 to: manager numSegments - 1 do:
- 		[:i|
- 		 segInfo := self addressOf: (manager segmentManager segments at: i).
- 		 segInfo swizzle: 0 ]!

Item was changed:
  ----- Method: SpurIncrementalGarbageCollector class>>classesForTranslation (in category 'as yet unclassified') -----
  classesForTranslation
  
+ 	^ { SpurGarbageCollector . self . SpurGenerationScavenger . SpurMarker . SpurIncrementalMarker . SpurCompactor . SpurIncrementalSweeper . SpurIncrementalCompactor . SpurIncrementalSweepAndCompact }!
- 	^ { SpurGarbageCollector . self . SpurGenerationScavenger . SpurMarker . SpurIncrementalMarker . SpurIncrementalSweeper . SpurIncrementalCompactor . SpurIncrementalSweepAndCompact }!

Item was changed:
  ----- Method: SpurIncrementalGarbageCollector>>incrementalCollect (in category 'as yet unclassified') -----
  incrementalCollect
  
  	phase = InMarkingPhase
  		ifTrue: [
  			marker incrementalMarkObjects
  				ifTrue: [
+ 					"manager allPastSpaceObjectsDo: [:obj | self assert: (manager isWhite: obj)]."
- 					manager allPastSpaceObjectsDo: [:obj | self assert: (manager isWhite: obj)].
  					
  					"when sweeping the mutator needs to allocate new objects black as we do not have any information about them.
  					We only know if they should get swept after the next marking -> keep them alive for this cycle"
  					self allocatorShouldAllocateBlack: true.
  					phase := InSweepingPhase.
  					
  					"marking is done and thus all forwarding references are resolved -> we can use the now free segments that were 
  					compacted during the last cycle"
  					compactor freePastSegmentsAndSetSegmentToFill.
  					
  					^ self]].
  		
  	phase = InSweepingPhase
  		ifTrue: [
  			compactor incrementalSweep
  				ifTrue: [
  					self allocatorShouldAllocateBlack: false.
  					manager allOldSpaceObjectsDo: [:ea | self assert: (manager isWhite: ea) ].
  					"self assert: manager allObjectsUnmarked."
  					phase := InCompactingPhase.
  					^ self]].
  		
  	phase = InCompactingPhase
  		ifTrue: [
  			compactor incrementalCompact
  				ifTrue: [phase := InMarkingPhase.
  					^ self]]!

Item was added:
+ ----- Method: SpurIncrementalMarker>>markObjects: (in category 'as yet unclassified') -----
+ markObjects: objectsShouldBeUnmarkedAndUnmarkedClassesShouldBeExpunged
+ 
+ 	self flag: #Todo. "is this sane?"
+ 	self incrementalMarkObjects!

Item was changed:
  ----- Method: SpurIncrementalMarker>>pushOnMarkingStackAndMakeGreyIfNecessary: (in category 'marking-stack') -----
  pushOnMarkingStackAndMakeGreyIfNecessary: objOop
  
+ 	(manager isImmediate: objOop)
+ 		ifTrue: [^ self].
+ 		
  	(manager isWhite: objOop)
  		ifTrue: [self pushOnMarkingStackAndMakeGrey: objOop]!

Item was added:
+ ----- Method: SpurIncrementalSweepAndCompact class>>declareCVarsIn: (in category 'as yet unclassified') -----
+ declareCVarsIn: aCCodeGenerator!

Item was added:
+ ----- Method: SpurIncrementalSweepAndCompact>>biasForSnapshot (in category 'as yet unclassified') -----
+ biasForSnapshot!

Item was added:
+ ----- Method: SpurIncrementalSweepAndCompact>>isMobile: (in category 'as yet unclassified') -----
+ isMobile: obj
+ 
+ 	<inline: true>
+ 	self flag: #Todo. "investigate this one here"
+ 	^ (manager isPinned: obj) not!

Item was added:
+ ----- Method: SpurIncrementalSweeper class>>declareCVarsIn: (in category 'as yet unclassified') -----
+ declareCVarsIn: aCCodeGenerator!

Item was removed:
- ----- Method: SpurIncrementalSweeper>>biasForGC (in category 'api') -----
- biasForGC!

Item was removed:
- ----- Method: SpurIncrementalSweeper>>biasForSnapshot (in category 'api') -----
- biasForSnapshot!

Item was changed:
  ----- Method: SpurIncrementalSweeperSimulator>>unmark: (in category 'api') -----
  unmark: objOop
  
+ 	super unmark: objOop
+ 	"^ GCEventLog 
- 	^ GCEventLog 
  		register: (GCWhitenEvent address: objOop) 
  		expecting: {
  			[:evt | evt = (GCUnmarkEvent address: objOop)].
  			[:evt | evt = (GCUngreyEvent address: objOop)]} 
+ 		doing: [super unmark: objOop]"!
- 		doing: [super unmark: objOop]!

Item was added:
+ ----- Method: SpurMarker>>markObjects: (in category 'as yet unclassified') -----
+ markObjects: objectsShouldBeUnmarkedAndUnmarkedClassesShouldBeExpunged
+ 
+ 	self shouldBeImplemented!



More information about the Vm-dev mailing list