[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