< prev index next >

src/hotspot/share/c1/c1_LIRGenerator.cpp

Print this page
rev 50076 : Fold Partial GC into Traversal GC

@@ -1648,48 +1648,10 @@
   __ branch_destination(slow->continuation());
 }
 
 void LIRGenerator::Shenandoah_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
                                           bool do_load, bool patch, CodeEmitInfo* info) {
-  if (ShenandoahConditionalSATBBarrier) {
-    LIR_Opr gc_state_addr = new_pointer_register();
-    __ move(LIR_OprFact::intptrConst((intptr_t) ShenandoahHeap::gc_state_addr()), gc_state_addr);
-    LIR_Opr gc_state = new_register(T_INT);
-    __ move(new LIR_Address(gc_state_addr, T_BYTE), gc_state);
-    __ logical_and(gc_state, LIR_OprFact::intConst(ShenandoahHeap::MARKING), gc_state);
-    __ cmp(lir_cond_equal, gc_state, LIR_OprFact::intConst(0));
-
-    LIR_PatchCode pre_val_patch_code = lir_patch_none;
-
-    CodeStub* slow;
-
-    if (do_load) {
-      assert(pre_val == LIR_OprFact::illegalOpr, "sanity");
-      assert(addr_opr != LIR_OprFact::illegalOpr, "sanity");
-
-      if (patch)
-        pre_val_patch_code = lir_patch_normal;
-
-      pre_val = new_register(T_OBJECT);
-
-      if (!addr_opr->is_address()) {
-        assert(addr_opr->is_register(), "must be");
-        addr_opr = LIR_OprFact::address(new LIR_Address(addr_opr, T_OBJECT));
-      }
-      slow = new G1PreBarrierStub(addr_opr, pre_val, pre_val_patch_code, info);
-    } else {
-      assert(addr_opr == LIR_OprFact::illegalOpr, "sanity");
-      assert(pre_val->is_register(), "must be");
-      assert(pre_val->type() == T_OBJECT, "must be an object");
-      assert(info == NULL, "sanity");
-
-      slow = new G1PreBarrierStub(pre_val);
-    }
-
-    __ branch(lir_cond_notEqual, T_CHAR, slow);
-    __ branch_destination(slow->continuation());
-  }
   if (ShenandoahSATBBarrier) {
     G1BarrierSet_pre_barrier(addr_opr, pre_val, do_load, patch, info);
   }
 }
 

@@ -2075,28 +2037,26 @@
     return obj;
   }
 }
 
 LIR_Opr LIRGenerator::shenandoah_write_barrier_impl(LIR_Opr obj, CodeEmitInfo* info, bool need_null_check) {
-  assert(UseShenandoahGC && (ShenandoahWriteBarrier || ShenandoahStoreValWriteBarrier || ShenandoahStoreValEnqueueBarrier), "Should be enabled");
+  assert(UseShenandoahGC && (ShenandoahWriteBarrier || ShenandoahStoreValEnqueueBarrier), "Should be enabled");
   LIR_Opr result = new_register(T_OBJECT);
   __ shenandoah_wb(obj, result, info ? new CodeEmitInfo(info) : NULL, need_null_check);
   return result;
 }
 
 LIR_Opr LIRGenerator::shenandoah_storeval_barrier(LIR_Opr obj, CodeEmitInfo* info, bool need_null_check) {
   if (UseShenandoahGC) {
-    if (ShenandoahStoreValWriteBarrier || ShenandoahStoreValEnqueueBarrier) {
+    if (ShenandoahStoreValEnqueueBarrier) {
       // TODO: Maybe we can simply avoid this stuff on constants?
       if (! obj->is_register()) {
         LIR_Opr result = new_register(T_OBJECT);
         __ move(obj, result);
         obj = result;
       }
       obj = shenandoah_write_barrier_impl(obj, info, need_null_check);
-    }
-    if (ShenandoahStoreValEnqueueBarrier) {
       G1BarrierSet_pre_barrier(LIR_OprFact::illegalOpr, obj, false, false, NULL);
     }
     if (ShenandoahStoreValReadBarrier) {
       obj = shenandoah_read_barrier_impl(obj, info, need_null_check);
     }
< prev index next >