Tom Braun uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog.seperateMarking-WoC.3307.mcz
==================== Summary ====================
Name: VMMaker.oscog.seperateMarking-WoC.3307 Author: WoC Time: 13 January 2023, 11:54:30.540799 pm UUID: 6e8d75d9-7bc1-4831-9411-3ef7529c3978 Ancestors: VMMaker.oscog.seperateMarking-WoC.3306
reset the compacted info of partially compacted segments correctly
=============== Diff against VMMaker.oscog.seperateMarking-WoC.3306 ===============
Item was changed: ----- Method: SpurIncrementalCompactingSweeper>>assertNoSegmentBeingCompacted (in category 'as yet unclassified') ----- assertNoSegmentBeingCompacted "Assertion only - no segment is being claimed at this point. All being compacted bits get cleared during sweeping when setting the occupation of the segments" | segInfo | <var: 'segInfo' type: #'SpurSegmentInfo *'> 0 to: manager numSegments - 1 do: [:i| segInfo := manager segInfoAt: i. + self deny: ((self isSegmentBeingCompacted: segInfo) or: [self isSegmentBeingPartiallyCompacted: segInfo]). + ((self isSegmentBeingCompacted: segInfo) or: [self isSegmentBeingPartiallyCompacted: segInfo]) - self deny: (self isSegmentBeingCompacted: segInfo). - (self isSegmentBeingCompacted: segInfo) ifTrue: [self cCode: 'raise(SIGINT)']].!
Item was changed: ----- Method: SpurIncrementalCompactingSweeper>>freePastSegmentsAndSetSegmentToFill (in category 'api') ----- freePastSegmentsAndSetSegmentToFill "The first segment being claimed met becomes the segmentToFill. The others are just freed." <var: 'segInfo' type: #'SpurSegmentInfo *'> 0 to: manager numSegments - 1 do: [:i| | segInfo | segInfo := manager segInfoAt: i. (self wasSegmentsCompactionAborted: segInfo) ifTrue: [ | freeUntil chunkBytes | freeUntil := manager startOfObject: (self getEndOfCompaction: segInfo). chunkBytes := freeUntil - segInfo segStart. "maybe we could not even move one object out of the segment. Make sure we do not produce an invalid free chunk" chunkBytes > 0 ifTrue: [coInterpreter cr; print: 'partially freeing segment from: '; printHex: segInfo segStart; print: ' to: '; printHex: freeUntil ;tab; flush. manager addFreeChunkWithBytes: chunkBytes + at: segInfo segStart]. + + self unmarkSegmentAsBeingCompacted: segInfo]. - at: segInfo segStart]]. (self isSegmentBeingCompacted: segInfo) ifTrue: [ | freeChunk chunkBytes | self assert: (manager segmentManager allObjectsAreForwardedInSegment: segInfo includingFreeSpace: false). self assert: (manager noElementOfFreeSpaceIsInSegment: segInfo). coInterpreter cr; print: 'freeing segment from: '; printHex: segInfo segStart; print: ' to: '; printHex: segInfo segStart + segInfo segSize ;tab; flush. chunkBytes := segInfo segSize - manager bridgeSize. freeChunk := manager addFreeChunkWithBytes: chunkBytes at: segInfo segStart. self unmarkSegmentAsBeingCompacted: segInfo. segmentToFill ifNil: [manager detachFreeObject: freeChunk. segmentToFill := segInfo. self assertSegmentToFillIsInSegmentsArray]]]!
Item was changed: ----- Method: VMClass class>>openSpurMultiWindowBrowser (in category 'utilities') ----- openSpurMultiWindowBrowser "Answer a new multi-window browser on the Spur classes, the Cog StackInterpreter classes, and the support classes" "self openSpurMultiWindowBrowser" | b | b := Browser open. + #( SpurIncrementalGarbageCollector SpurMemoryManager + CCodeGenerator TMethod StackInterpreter + Spur32BitMemoryManager Spur64BitMemoryManager - #( SpurMemoryManager Spur32BitMemoryManager Spur64BitMemoryManager SpurGenerationScavenger SpurSegmentManager Spur32BitMMLESimulator SpurGenerationScavengerSimulator SpurMarker SpurAllAtOnceMarker SpurIncrementalMarker SpurCompactor SpurPlanningCompactor SpurHybridCompactor SpurIncrementalCompactor SpurIncrementalSweepAndCompact + InterpreterPrimitives StackInterpreterPrimitives + VMStructType VMMaker ) - InterpreterPrimitives StackInterpreter StackInterpreterPrimitives - VMStructType VMMaker CCodeGenerator TMethod) do: [:className| (Smalltalk classNamed: className) ifNotNil: [:class| b selectCategoryForClass: class; selectClass: class]] separatedBy: [b multiWindowState addNewWindow]. b multiWindowState selectWindowIndex: 1!
vm-dev@lists.squeakfoundation.org