Skip to content

Commit e5fd005

Browse files
committed
Mutant pharo-project#594, Reverting [ Replace #ifTrue: receiver with true ] on method [ markAndShouldScan: ] KILLED by 1/10 test cases.
1 parent 510a181 commit e5fd005

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

smalltalksrc/VMMaker/SpurMemoryManager.class.st

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8159,32 +8159,36 @@ SpurMemoryManager >> markAllUnscannedEphemerons [
81598159
81608160
{ #category : #'gc - global' }
81618161
SpurMemoryManager >> markAndShouldScan: objOop [
8162-
81638162
"Helper for markAndTrace:.
81648163
Mark the argument, and answer if its fields should be scanned now.
81658164
Immediate objects don't need to be marked.
81668165
Already marked objects have already been processed.
81678166
Pure bits objects don't need scanning, although their class does.
81688167
Weak objects should be pushed on the weakling stack.
81698168
Anything else need scanning."
8170-
8171-
<inline: true>
81728169
| format |
8173-
true ifTrue: [ ^ false ].
8170+
<inline: true>
8171+
(self isImmediate: objOop) ifTrue:
8172+
[^false].
8173+
"if markAndTrace: is to follow and eliminate forwarding pointers
8174+
in its scan it cannot be handed an r-value which is forwarded."
81748175
self assert: (self isForwarded: objOop) not.
8175-
(self isMarked: objOop) ifTrue: [ ^ false ].
8176+
(self isMarked: objOop) ifTrue:
8177+
[^false].
81768178
self setIsMarkedOf: objOop to: true.
81778179
format := self formatOf: objOop.
8178-
(self isPureBitsFormat: format) ifTrue: [ "Avoid tracing classes of non-objects on the heap, e.g. IRC caches, Sista counters.""avoid pushing non-pointer objects on the markStack."
8179-
(self classIndexOf: objOop) > self lastClassIndexPun ifTrue: [
8180-
self markAndTraceClassOf: objOop ].
8181-
^ false ].
8182-
format = self weakArrayFormat ifTrue: [ "push weaklings on the weakling stack to scan later"
8183-
self push: objOop onObjStack: weaklingStack.
8184-
^ false ].
8185-
(format = self ephemeronFormat and: [
8186-
self activeAndDeferredScan: objOop ]) ifTrue: [ ^ false ].
8187-
^ true
8180+
(self isPureBitsFormat: format) ifTrue: "avoid pushing non-pointer objects on the markStack."
8181+
["Avoid tracing classes of non-objects on the heap, e.g. IRC caches, Sista counters."
8182+
(self classIndexOf: objOop) > self lastClassIndexPun ifTrue:
8183+
[self markAndTraceClassOf: objOop].
8184+
^false].
8185+
format = self weakArrayFormat ifTrue: "push weaklings on the weakling stack to scan later"
8186+
[self push: objOop onObjStack: weaklingStack.
8187+
^false].
8188+
(format = self ephemeronFormat
8189+
and: [self activeAndDeferredScan: objOop]) ifTrue:
8190+
[^false].
8191+
^true
81888192
]
81898193
81908194
{ #category : #'gc - global' }

0 commit comments

Comments
 (0)