Skip to content

Commit 290cc50

Browse files
committed
[GR-71747] In-place copySwap in JavaMemoryUtil is a no-op.
PullRequest: graal/22752
2 parents 6e9e58e + bd4ad3a commit 290cc50

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/JavaMemoryUtil.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -386,11 +386,11 @@ static void copySwapOnHeap(Object srcBase, long srcOffset, Object destBase, long
386386

387387
@Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
388388
private static void copySwap2(Pointer from, Pointer to, UnsignedWord size) {
389-
if (from.aboveThan(to)) {
389+
if (from.aboveOrEqual(to)) {
390390
for (UnsignedWord offset = Word.zero(); offset.belowThan(size); offset = offset.add(2)) {
391391
to.writeShort(offset, Short.reverseBytes(from.readShort(offset)));
392392
}
393-
} else if (from.belowThan(to)) {
393+
} else {
394394
for (UnsignedWord offset = size; offset.aboveThan(0); offset = offset.subtract(2)) {
395395
to.writeShort(offset.subtract(2), Short.reverseBytes(from.readShort(offset.subtract(2))));
396396
}
@@ -399,11 +399,11 @@ private static void copySwap2(Pointer from, Pointer to, UnsignedWord size) {
399399

400400
@Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
401401
private static void copySwap4(Pointer from, Pointer to, UnsignedWord size) {
402-
if (from.aboveThan(to)) {
402+
if (from.aboveOrEqual(to)) {
403403
for (UnsignedWord offset = Word.zero(); offset.belowThan(size); offset = offset.add(4)) {
404404
to.writeInt(offset, Integer.reverseBytes(from.readInt(offset)));
405405
}
406-
} else if (from.belowThan(to)) {
406+
} else {
407407
for (UnsignedWord offset = size; offset.aboveThan(0); offset = offset.subtract(4)) {
408408
to.writeInt(offset.subtract(4), Integer.reverseBytes(from.readInt(offset.subtract(4))));
409409
}
@@ -412,11 +412,11 @@ private static void copySwap4(Pointer from, Pointer to, UnsignedWord size) {
412412

413413
@Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
414414
private static void copySwap8(Pointer from, Pointer to, UnsignedWord size) {
415-
if (from.aboveThan(to)) {
415+
if (from.aboveOrEqual(to)) {
416416
for (UnsignedWord offset = Word.zero(); offset.belowThan(size); offset = offset.add(8)) {
417417
to.writeLong(offset, Long.reverseBytes(from.readLong(offset)));
418418
}
419-
} else if (from.belowThan(to)) {
419+
} else {
420420
for (UnsignedWord offset = size; offset.aboveThan(0); offset = offset.subtract(8)) {
421421
to.writeLong(offset.subtract(8), Long.reverseBytes(from.readLong(offset.subtract(8))));
422422
}

0 commit comments

Comments
 (0)