< prev index next >
src/hotspot/cpu/x86/gc/shared/modRefBarrierSetAssembler_x86.cpp
Print this page
rev 54706 : 8223244: Fix usage of ARRAYCOPY_DISJOINT decorator
@@ -34,17 +34,19 @@
bool disjoint = (decorators & ARRAYCOPY_DISJOINT) != 0;
bool obj_int = type == T_OBJECT LP64_ONLY(&& UseCompressedOops);
if (type == T_OBJECT || type == T_ARRAY) {
#ifdef _LP64
- if (!checkcast && !obj_int) {
+ if (!checkcast) {
+ if (!obj_int) {
// Save count for barrier
__ movptr(r11, count);
- } else if (disjoint && obj_int) {
+ } else if (disjoint) {
// Save dst in r11 in the disjoint case
__ movq(r11, dst);
}
+ }
#else
if (disjoint) {
__ mov(rdx, dst); // save 'to'
}
#endif
@@ -59,17 +61,19 @@
bool obj_int = type == T_OBJECT LP64_ONLY(&& UseCompressedOops);
Register tmp = rax;
if (type == T_OBJECT || type == T_ARRAY) {
#ifdef _LP64
- if (!checkcast && !obj_int) {
+ if (!checkcast) {
+ if (!obj_int) {
// Save count for barrier
count = r11;
- } else if (disjoint && obj_int) {
+ } else if (disjoint) {
// Use the saved dst in the disjoint case
dst = r11;
- } else if (checkcast) {
+ }
+ } else {
tmp = rscratch1;
}
#else
if (disjoint) {
__ mov(dst, rdx); // restore 'to'
< prev index next >