-
Bug
-
Resolution: Fixed
-
P4
-
openjdk8u292, 11, 16, 17
-
b07
-
aarch64
-
generic
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8262763 | 16.0.2 | Harold Seigel | P4 | Resolved | Fixed | b01 |
JDK-8262370 | 16.0.1 | Harold Seigel | P4 | Resolved | Fixed | b07 |
JDK-8260248 | 11.0.11-oracle | Dukebot | P4 | Resolved | Fixed | b03 |
JDK-8260411 | 11.0.11 | Fei Yang | P4 | Resolved | Fixed | b03 |
JDK-8265609 | openjdk8u302 | Fei Yang | P4 | Resolved | Fixed | b01 |
The step for the loop should be one for each oop instead of 'size'. We may miss verifying some oops in the array if we set the step to 'size'.
Also, we should use 'temp' instead of r16 for the compressed oop case. Register r16 defined but not used in this function.
Proposed fix:
diff --git a/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp b/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp
index 89a4330137..b94e292404 100644
--- a/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp
+++ b/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp
@@ -1282,10 +1282,10 @@ class StubGenerator: public StubCodeGenerator {
__ ldr(temp, Address(a, rscratch2, Address::lsl(exact_log2(size))));
__ verify_oop(temp);
} else {
- __ ldrw(r16, Address(a, rscratch2, Address::lsl(exact_log2(size))));
+ __ ldrw(temp, Address(a, rscratch2, Address::lsl(exact_log2(size))));
__ decode_heap_oop(temp); // calls verify_oop
}
- __ add(rscratch2, rscratch2, size);
+ __ add(rscratch2, rscratch2, 1);
__ b(loop);
__ bind(end);
}
- backported by
-
JDK-8260248 aarch64: fix typo in verify_oop_array
- Resolved
-
JDK-8260411 aarch64: fix typo in verify_oop_array
- Resolved
-
JDK-8262370 aarch64: fix typo in verify_oop_array
- Resolved
-
JDK-8262763 aarch64: fix typo in verify_oop_array
- Resolved
-
JDK-8265609 aarch64: fix typo in verify_oop_array
- Resolved
- links to
-
Commit openjdk/jdk16u/262c9894
-
Commit openjdk/jdk/4bcffeb9
-
Review openjdk/jdk16u/41
-
Review openjdk/jdk/2175