Skip to content

Commit d69cf54

Browse files
committed
Mutant pharo-project#592, Installing [ Replace #ifTrue: receiver with false ] on method [ markAndShouldScan: ]
1 parent 7d5aa0f commit d69cf54

File tree

1 file changed

+15
-17
lines changed

1 file changed

+15
-17
lines changed

smalltalksrc/VMMaker/SpurMemoryManager.class.st

+15-17
Original file line numberDiff line numberDiff line change
@@ -8159,36 +8159,34 @@ SpurMemoryManager >> markAllUnscannedEphemerons [
81598159
81608160
{ #category : #'gc - global' }
81618161
SpurMemoryManager >> markAndShouldScan: objOop [
8162+
81628163
"Helper for markAndTrace:.
81638164
Mark the argument, and answer if its fields should be scanned now.
81648165
Immediate objects don't need to be marked.
81658166
Already marked objects have already been processed.
81668167
Pure bits objects don't need scanning, although their class does.
81678168
Weak objects should be pushed on the weakling stack.
81688169
Anything else need scanning."
8169-
| format |
8170+
81708171
<inline: true>
8171-
(self isImmediate: objOop) ifTrue:
8172-
[^false].
8172+
| format |
8173+
(self isImmediate: objOop) ifTrue: [ ^ false ].
81738174
"if markAndTrace: is to follow and eliminate forwarding pointers
81748175
in its scan it cannot be handed an r-value which is forwarded."
81758176
self assert: (self isForwarded: objOop) not.
8176-
(self isMarked: objOop) ifTrue:
8177-
[^false].
8177+
(self isMarked: objOop) ifTrue: [ ^ false ].
81788178
self setIsMarkedOf: objOop to: true.
81798179
format := self formatOf: objOop.
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
8180+
(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."
8181+
(self classIndexOf: objOop) > self lastClassIndexPun ifTrue: [
8182+
self markAndTraceClassOf: objOop ].
8183+
^ false ].
8184+
false ifTrue: [ "push weaklings on the weakling stack to scan later"
8185+
self push: objOop onObjStack: weaklingStack.
8186+
^ false ].
8187+
(format = self ephemeronFormat and: [
8188+
self activeAndDeferredScan: objOop ]) ifTrue: [ ^ false ].
8189+
^ true
81928190
]
81938191
81948192
{ #category : #'gc - global' }

0 commit comments

Comments
 (0)