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

commits at source.squeak.org commits at source.squeak.org
Fri Jan 13 22:54:57 UTC 2023


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!



More information about the Vm-dev mailing list