Skip to content

Commit d795dda

Browse files
committed
Mutant pharo-project#565, Installing [ Replace #ifTrue: receiver with true ] on method [ markWeaklingsAndMarkAndFireEphemerons ]
1 parent b977608 commit d795dda

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

smalltalksrc/VMMaker/SpurMemoryManager.class.st

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8456,30 +8456,34 @@ SpurMemoryManager >> markStack: anOop [
84568456
84578457
{ #category : #'gc - global' }
84588458
SpurMemoryManager >> markWeaklingsAndMarkAndFireEphemerons [
8459+
84598460
"After the initial scan-mark is complete ephemerons can be processed.
84608461
Weaklings have accumulated on the weaklingStack, but more may be
84618462
uncovered during ephemeron processing. So trace the strong slots
84628463
of the weaklings, and as ephemerons are processed ensure any newly
84638464
reached weaklings are also traced."
8464-
| numTracedWeaklings |
8465+
84658466
<inline: false>
8467+
| numTracedWeaklings |
84668468
numTracedWeaklings := 0.
8467-
[coInterpreter markAndTraceUntracedReachableStackPages.
8468-
coInterpreter markAndTraceMachineCodeOfMarkedMethods.
8469-
"Make sure all reached weaklings have their strong slots traced before firing ephemerons..."
8470-
[numTracedWeaklings := self markAndTraceWeaklingsFrom: numTracedWeaklings.
8471-
(self sizeOfObjStack: weaklingStack) > numTracedWeaklings] whileTrue.
8472-
self noUnscannedEphemerons ifTrue:
8473-
[coInterpreter
8469+
[
8470+
coInterpreter markAndTraceUntracedReachableStackPages.
8471+
coInterpreter markAndTraceMachineCodeOfMarkedMethods.
8472+
"Make sure all reached weaklings have their strong slots traced before firing ephemerons..."
8473+
[
8474+
numTracedWeaklings := self markAndTraceWeaklingsFrom:
8475+
numTracedWeaklings.
8476+
(self sizeOfObjStack: weaklingStack) > numTracedWeaklings ] whileTrue.
8477+
true ifTrue: [
8478+
coInterpreter
84748479
markAndTraceUntracedReachableStackPages;
8475-
markAndTraceMachineCodeOfMarkedMethods;
8480+
markAndTraceMachineCodeOfMarkedMethods;
84768481
freeUntracedStackPages;
84778482
freeUnmarkedMachineCode.
8478-
^self].
8479-
self markInactiveEphemerons ifFalse:
8480-
[self fireAllUnscannedEphemerons].
8481-
self markAllUnscannedEphemerons]
8482-
repeat
8483+
^ self ].
8484+
self markInactiveEphemerons ifFalse: [
8485+
self fireAllUnscannedEphemerons ].
8486+
self markAllUnscannedEphemerons ] repeat
84838487
]
84848488
84858489
{ #category : #'header format' }

0 commit comments

Comments
 (0)