Skip to content

Commit

Permalink
Mutant pharo-project#595, Reverting [ Replace #ifTrue: receiver with …
Browse files Browse the repository at this point in the history
…true ] on method [ markAndShouldScan: ] KILLED by 1/10 test cases.
  • Loading branch information
hogoww committed Dec 23, 2021
1 parent 524a619 commit 8f3b482
Showing 1 changed file with 17 additions and 15 deletions.
32 changes: 17 additions & 15 deletions smalltalksrc/VMMaker/SpurMemoryManager.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -8159,34 +8159,36 @@ SpurMemoryManager >> markAllUnscannedEphemerons [
{ #category : #'gc - global' }
SpurMemoryManager >> markAndShouldScan: objOop [
"Helper for markAndTrace:.
Mark the argument, and answer if its fields should be scanned now.
Immediate objects don't need to be marked.
Already marked objects have already been processed.
Pure bits objects don't need scanning, although their class does.
Weak objects should be pushed on the weakling stack.
Anything else need scanning."
<inline: true>
| format |
(self isImmediate: objOop) ifTrue: [ ^ false ].
<inline: true>
(self isImmediate: objOop) ifTrue:
[^false].
"if markAndTrace: is to follow and eliminate forwarding pointers
in its scan it cannot be handed an r-value which is forwarded."
self assert: (self isForwarded: objOop) not.
true ifTrue: [ ^ false ].
(self isMarked: objOop) ifTrue:
[^false].
self setIsMarkedOf: objOop to: true.
format := self formatOf: objOop.
(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."
(self classIndexOf: objOop) > self lastClassIndexPun ifTrue: [
self markAndTraceClassOf: objOop ].
^ false ].
format = self weakArrayFormat ifTrue: [ "push weaklings on the weakling stack to scan later"
self push: objOop onObjStack: weaklingStack.
^ false ].
(format = self ephemeronFormat and: [
self activeAndDeferredScan: objOop ]) ifTrue: [ ^ false ].
^ true
(self isPureBitsFormat: format) ifTrue: "avoid pushing non-pointer objects on the markStack."
["Avoid tracing classes of non-objects on the heap, e.g. IRC caches, Sista counters."
(self classIndexOf: objOop) > self lastClassIndexPun ifTrue:
[self markAndTraceClassOf: objOop].
^false].
format = self weakArrayFormat ifTrue: "push weaklings on the weakling stack to scan later"
[self push: objOop onObjStack: weaklingStack.
^false].
(format = self ephemeronFormat
and: [self activeAndDeferredScan: objOop]) ifTrue:
[^false].
^true
]
{ #category : #'gc - global' }
Expand Down

0 comments on commit 8f3b482

Please sign in to comment.