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!
vm-dev@lists.squeakfoundation.org