Skip to content

Commit 63dd758

Browse files
committed
Minor fixes and improvements.
1 parent f1e4ec8 commit 63dd758

File tree

1 file changed

+10
-10
lines changed
  • substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/compacting

1 file changed

+10
-10
lines changed

substratevm/src/com.oracle.svm.core.genscavenge/src/com/oracle/svm/core/genscavenge/compacting/PlanningVisitor.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ public final class PlanningVisitor implements AlignedHeapChunk.Visitor {
5454
public PlanningVisitor() {
5555
}
5656

57+
public void init(Space space) {
58+
allocChunk = space.getFirstAlignedHeapChunk();
59+
allocPointer = AlignedHeapChunk.getObjectsStart(allocChunk);
60+
}
61+
5762
@Override
5863
public boolean visitChunk(AlignedHeapChunk.AlignedHeader chunk) {
5964
boolean sweeping = chunk.getShouldSweepInsteadOfCompact();
@@ -71,26 +76,26 @@ public boolean visitChunk(AlignedHeapChunk.AlignedHeader chunk) {
7176

7277
BrickTable.setEntry(chunk, brickIndex, objSeq);
7378

74-
Pointer p = AlignedHeapChunk.getObjectsStart(chunk);
79+
Pointer p = objSeq;
7580
while (p.belowThan(initialTop)) {
7681
Word header = ObjectHeaderImpl.readHeaderFromPointer(p);
77-
Object obj = p.toObject();
7882

7983
UnsignedWord objSize;
8084
if (ObjectHeaderImpl.isForwardedHeader(header)) {
8185
/*
8286
* If an object was copied from a chunk that won't be swept and forwarding was put
83-
* in place, it was because we needed to add an identity hash code field.
87+
* in place, it was because we needed to add an identity hash code field to the
88+
* object, and we need the object's original size here.
8489
*/
8590
assert !sweeping && ConfigurationValues.getObjectLayout().isIdentityHashFieldOptional();
8691
Object forwardedObj = ObjectHeaderImpl.getObjectHeaderImpl().getForwardedObject(p, header);
8792
objSize = LayoutEncoding.getSizeFromObjectWithoutOptionalIdHashFieldInGC(forwardedObj);
8893
} else {
89-
objSize = LayoutEncoding.getSizeFromObjectInlineInGC(obj);
94+
objSize = LayoutEncoding.getSizeFromObjectInlineInGC(p.toObject());
9095
}
9196

9297
if (ObjectHeaderImpl.isMarkedHeader(header)) {
93-
ObjectHeaderImpl.unsetMarkedAndKeepRememberedSetBit(obj);
98+
ObjectHeaderImpl.unsetMarkedAndKeepRememberedSetBit(p.toObject());
9499

95100
/*
96101
* Adding the optional identity hash field would increase an object's size, so we
@@ -174,9 +179,4 @@ private Pointer allocate(UnsignedWord size) {
174179
}
175180
return p;
176181
}
177-
178-
public void init(Space space) {
179-
allocChunk = space.getFirstAlignedHeapChunk();
180-
allocPointer = AlignedHeapChunk.getObjectsStart(allocChunk);
181-
}
182182
}

0 commit comments

Comments
 (0)