hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp
changeset 4102 11d514e508d9
parent 3261 c7d5aae8d3f7
child 4478 c3a8af0fc6b0
equal deleted inserted replaced
4101:6603abdd6464 4102:11d514e508d9
   137         } else {
   137         } else {
   138           __ leaq(rdx, obj);
   138           __ leaq(rdx, obj);
   139         }
   139         }
   140         __ g1_write_barrier_pre(rdx, r8, rbx, val != noreg);
   140         __ g1_write_barrier_pre(rdx, r8, rbx, val != noreg);
   141         if (val == noreg) {
   141         if (val == noreg) {
   142           __ store_heap_oop(Address(rdx, 0), NULL_WORD);
   142           __ store_heap_oop_null(Address(rdx, 0));
   143         } else {
   143         } else {
   144           __ store_heap_oop(Address(rdx, 0), val);
   144           __ store_heap_oop(Address(rdx, 0), val);
   145           __ g1_write_barrier_post(rdx, val, r8, rbx);
   145           __ g1_write_barrier_post(rdx, val, r8, rbx);
   146         }
   146         }
   147 
   147 
   150 #endif // SERIALGC
   150 #endif // SERIALGC
   151     case BarrierSet::CardTableModRef:
   151     case BarrierSet::CardTableModRef:
   152     case BarrierSet::CardTableExtension:
   152     case BarrierSet::CardTableExtension:
   153       {
   153       {
   154         if (val == noreg) {
   154         if (val == noreg) {
   155           __ store_heap_oop(obj, NULL_WORD);
   155           __ store_heap_oop_null(obj);
   156         } else {
   156         } else {
   157           __ store_heap_oop(obj, val);
   157           __ store_heap_oop(obj, val);
   158           // flatten object address if needed
   158           // flatten object address if needed
   159           if (!precise || (obj.index() == noreg && obj.disp() == 0)) {
   159           if (!precise || (obj.index() == noreg && obj.disp() == 0)) {
   160             __ store_check(obj.base());
   160             __ store_check(obj.base());
   166       }
   166       }
   167       break;
   167       break;
   168     case BarrierSet::ModRef:
   168     case BarrierSet::ModRef:
   169     case BarrierSet::Other:
   169     case BarrierSet::Other:
   170       if (val == noreg) {
   170       if (val == noreg) {
   171         __ store_heap_oop(obj, NULL_WORD);
   171         __ store_heap_oop_null(obj);
   172       } else {
   172       } else {
   173         __ store_heap_oop(obj, val);
   173         __ store_heap_oop(obj, val);
   174       }
   174       }
   175       break;
   175       break;
   176     default      :
   176     default      :