Skip to content

Commit

Permalink
Mutant pharo-project#563, Reverting [ Replace #ifFalse: with #ifTrue:…
Browse files Browse the repository at this point in the history
… ] on method [ markWeaklingsAndMarkAndFireEphemerons ] KILLED by 1/10 test cases.
  • Loading branch information
hogoww committed Dec 23, 2021
1 parent 9e9e3dc commit 9e3d27a
Showing 1 changed file with 14 additions and 18 deletions.
32 changes: 14 additions & 18 deletions smalltalksrc/VMMaker/SpurMemoryManager.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -8456,34 +8456,30 @@ SpurMemoryManager >> markStack: anOop [
{ #category : #'gc - global' }
SpurMemoryManager >> markWeaklingsAndMarkAndFireEphemerons [
"After the initial scan-mark is complete ephemerons can be processed.
Weaklings have accumulated on the weaklingStack, but more may be
uncovered during ephemeron processing. So trace the strong slots
of the weaklings, and as ephemerons are processed ensure any newly
reached weaklings are also traced."
<inline: false>
| numTracedWeaklings |
<inline: false>
numTracedWeaklings := 0.
[
coInterpreter markAndTraceUntracedReachableStackPages.
coInterpreter markAndTraceMachineCodeOfMarkedMethods.
"Make sure all reached weaklings have their strong slots traced before firing ephemerons..."
[
numTracedWeaklings := self markAndTraceWeaklingsFrom:
numTracedWeaklings.
(self sizeOfObjStack: weaklingStack) > numTracedWeaklings ] whileTrue.
self noUnscannedEphemerons ifTrue: [
coInterpreter
[coInterpreter markAndTraceUntracedReachableStackPages.
coInterpreter markAndTraceMachineCodeOfMarkedMethods.
"Make sure all reached weaklings have their strong slots traced before firing ephemerons..."
[numTracedWeaklings := self markAndTraceWeaklingsFrom: numTracedWeaklings.
(self sizeOfObjStack: weaklingStack) > numTracedWeaklings] whileTrue.
self noUnscannedEphemerons ifTrue:
[coInterpreter
markAndTraceUntracedReachableStackPages;
markAndTraceMachineCodeOfMarkedMethods;
markAndTraceMachineCodeOfMarkedMethods;
freeUntracedStackPages;
freeUnmarkedMachineCode.
^ self ].
self markInactiveEphemerons ifTrue: [
self fireAllUnscannedEphemerons ].
self markAllUnscannedEphemerons ] repeat
^self].
self markInactiveEphemerons ifFalse:
[self fireAllUnscannedEphemerons].
self markAllUnscannedEphemerons]
repeat
]
{ #category : #'header format' }
Expand Down

0 comments on commit 9e3d27a

Please sign in to comment.