Skip to content

Commit 1e02a09

Browse files
committed
Fixed assertion that broke SerialGC
1 parent c5190e1 commit 1e02a09

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/GreyToBlackObjRefVisitor.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ public boolean visitObjectReferenceInline(Pointer objRef, int innerOffset, boole
9999
counters.noteForwardedReferent();
100100
// Update the reference to point to the forwarded Object.
101101
Object obj = ohi.getForwardedObject(p, header);
102-
assert ParallelGC.singleton().isInParallelPhase() || innerOffset < LayoutEncoding.getSizeFromObjectInGC(obj).rawValue();
102+
assert ParallelGC.isEnabled() && ParallelGC.singleton().isInParallelPhase() ||
103+
innerOffset < LayoutEncoding.getSizeFromObjectInGC(obj).rawValue();
103104
Object offsetObj = (innerOffset == 0) ? obj : Word.objectToUntrackedPointer(obj).add(innerOffset).toObject();
104105
ReferenceAccess.singleton().writeObjectAt(objRef, offsetObj, compressed);
105106
RememberedSet.get().dirtyCardIfNecessary(holderObject, obj);
@@ -112,7 +113,8 @@ public boolean visitObjectReferenceInline(Pointer objRef, int innerOffset, boole
112113
if (copy != obj) {
113114
// ... update the reference to point to the copy, making the reference black.
114115
counters.noteCopiedReferent();
115-
assert ParallelGC.singleton().isInParallelPhase() || innerOffset < LayoutEncoding.getSizeFromObjectInGC(copy).rawValue();
116+
assert ParallelGC.isEnabled() && ParallelGC.singleton().isInParallelPhase() ||
117+
innerOffset < LayoutEncoding.getSizeFromObjectInGC(copy).rawValue();
116118
Object offsetCopy = (innerOffset == 0) ? copy : Word.objectToUntrackedPointer(copy).add(innerOffset).toObject();
117119
ReferenceAccess.singleton().writeObjectAt(objRef, offsetCopy, compressed);
118120
} else {

0 commit comments

Comments
 (0)