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

commits at source.squeak.org commits at source.squeak.org
Fri Jan 13 22:51:56 UTC 2023


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
  	!



More information about the Vm-dev mailing list