< prev index next >

src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp

Print this page
rev 54706 : 8223244: Fix usage of ARRAYCOPY_DISJOINT decorator

*** 51,67 **** bool obj_int = type == T_OBJECT LP64_ONLY(&& UseCompressedOops); bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0; if (type == T_OBJECT || type == T_ARRAY) { #ifdef _LP64 ! if (!checkcast && !obj_int) { // Save count for barrier __ movptr(r11, count); ! } else if (disjoint && obj_int) { // Save dst in r11 in the disjoint case __ movq(r11, dst); } #else if (disjoint) { __ mov(rdx, dst); // save 'to' } #endif --- 51,69 ---- bool obj_int = type == T_OBJECT LP64_ONLY(&& UseCompressedOops); bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0; if (type == T_OBJECT || type == T_ARRAY) { #ifdef _LP64 ! if (!checkcast) { ! if (!obj_int) { // Save count for barrier __ movptr(r11, count); ! } else if (disjoint) { // Save dst in r11 in the disjoint case __ movq(r11, dst); } + } #else if (disjoint) { __ mov(rdx, dst); // save 'to' } #endif
*** 121,137 **** 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) { // Save count for barrier count = r11; } else if (disjoint && obj_int) { // Use the saved dst in the disjoint case dst = r11; ! } else if (checkcast) { tmp = rscratch1; } #else if (disjoint) { __ mov(dst, rdx); // restore 'to' --- 123,141 ---- bool obj_int = type == T_OBJECT LP64_ONLY(&& UseCompressedOops); Register tmp = rax; if (type == T_OBJECT || type == T_ARRAY) { #ifdef _LP64 ! if (!checkcast) { ! if (!obj_int) { // Save count for barrier count = r11; } else if (disjoint && obj_int) { // Use the saved dst in the disjoint case dst = r11; ! } ! } else { tmp = rscratch1; } #else if (disjoint) { __ mov(dst, rdx); // restore 'to'
< prev index next >