src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp
changeset 54755 de34f4b370b0
parent 54425 13c02cc7a6e5
child 54763 2584e5772546
equal deleted inserted replaced
54754:193a8f1a4f3b 54755:de34f4b370b0
    51   bool obj_int = type == T_OBJECT LP64_ONLY(&& UseCompressedOops);
    51   bool obj_int = type == T_OBJECT LP64_ONLY(&& UseCompressedOops);
    52   bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0;
    52   bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0;
    53 
    53 
    54   if (type == T_OBJECT || type == T_ARRAY) {
    54   if (type == T_OBJECT || type == T_ARRAY) {
    55 #ifdef _LP64
    55 #ifdef _LP64
    56     if (!checkcast && !obj_int) {
    56     if (!checkcast) {
    57       // Save count for barrier
    57       if (!obj_int) {
    58       __ movptr(r11, count);
    58         // Save count for barrier
    59     } else if (disjoint && obj_int) {
    59         __ movptr(r11, count);
    60       // Save dst in r11 in the disjoint case
    60       } else if (disjoint) {
    61       __ movq(r11, dst);
    61         // Save dst in r11 in the disjoint case
       
    62         __ movq(r11, dst);
       
    63       }
    62     }
    64     }
    63 #else
    65 #else
    64     if (disjoint) {
    66     if (disjoint) {
    65       __ mov(rdx, dst);          // save 'to'
    67       __ mov(rdx, dst);          // save 'to'
    66     }
    68     }
   121   bool obj_int = type == T_OBJECT LP64_ONLY(&& UseCompressedOops);
   123   bool obj_int = type == T_OBJECT LP64_ONLY(&& UseCompressedOops);
   122   Register tmp = rax;
   124   Register tmp = rax;
   123 
   125 
   124   if (type == T_OBJECT || type == T_ARRAY) {
   126   if (type == T_OBJECT || type == T_ARRAY) {
   125 #ifdef _LP64
   127 #ifdef _LP64
   126     if (!checkcast && !obj_int) {
   128     if (!checkcast) {
   127       // Save count for barrier
   129       if (!obj_int) {
   128       count = r11;
   130         // Save count for barrier
   129     } else if (disjoint && obj_int) {
   131         count = r11;
   130       // Use the saved dst in the disjoint case
   132       } else if (disjoint && obj_int) {
   131       dst = r11;
   133         // Use the saved dst in the disjoint case
   132     } else if (checkcast) {
   134         dst = r11;
       
   135       }
       
   136     } else {
   133       tmp = rscratch1;
   137       tmp = rscratch1;
   134     }
   138     }
   135 #else
   139 #else
   136     if (disjoint) {
   140     if (disjoint) {
   137       __ mov(dst, rdx); // restore 'to'
   141       __ mov(dst, rdx); // restore 'to'