Tom Braun uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog.seperateMarking-WoC.3306.mcz
==================== Summary ====================
Name: VMMaker.oscog.seperateMarking-WoC.3306 Author: WoC Time: 13 January 2023, 11:51:31.762314 pm UUID: a08da09c-f639-428b-8c8e-6c1459ec92d2 Ancestors: VMMaker.oscog.seperateMarking-WoC.3305
protect bridge from beeing overwritten during compaction
=============== Diff against VMMaker.oscog.seperateMarking-WoC.3305 ===============
Item was changed: ----- Method: SpurIncrementalCompactingSweeper>>occupyRestOfFreeCompactedIntoSegment (in category 'incremental compact') ----- occupyRestOfFreeCompactedIntoSegment
+ "do not overwrite the bridge" + (self oop: currentCopyToPointer isGreaterThanOrEqualTo: segmentToFill segLimit - manager bridgeSize) + ifTrue: [^ self]. + manager initFreeChunkWithBytes: segmentToFill segSize - manager bridgeSize + segmentToFill segStart - currentCopyToPointer at: currentCopyToPointer. "avoid confusing spur, especially for leak checks" manager set: (manager objectStartingAt: currentCopyToPointer) classIndexTo: manager wordSizeClassIndexPun formatTo: manager wordIndexableFormat!
Item was changed: ----- Method: SpurIncrementalCompactingSweeper>>setFreeChunkOfCompactedIntoSegment (in category 'incremental compact') ----- setFreeChunkOfCompactedIntoSegment
shouldCompact ifFalse: [^ self]. + "do not overwrite the bridge" + (self oop: currentCopyToPointer isGreaterThanOrEqualTo: segmentToFill segLimit - manager bridgeSize) + ifTrue: [^ self].
self assert: segmentToFill notNil. + self assert: (self oop: currentCopyToPointer isLessThan: segmentToFill segLimit - manager bridgeSize). - self assert: (self oop: currentCopyToPointer isLessThan: (segmentToFill segLimit - manager bridgeSize)).
coInterpreter cr; print: 'after compaction freeing from: '; printHex: currentCopyToPointer; + print: ' to: '; printHex: segmentToFill segStart + segmentToFill segSize - manager bridgeSize + segmentToFill segStart - currentCopyToPointer ; - print: ' to: '; printHex: segmentToFill segSize - manager bridgeSize + segmentToFill segStart - currentCopyToPointer ; tab; flush.
manager addFreeChunkWithBytes: segmentToFill segSize - manager bridgeSize + segmentToFill segStart - currentCopyToPointer at: currentCopyToPointer. "we have compacted into segmentToFill. It is now not empty anymore and we need to look for a new one" segmentToFill := nil !
vm-dev@lists.squeakfoundation.org