[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