< prev index next >

src/hotspot/share/opto/compile.cpp

Print this page

        

@@ -77,10 +77,13 @@
 #include "utilities/copy.hpp"
 #include "utilities/macros.hpp"
 #if INCLUDE_ZGC
 #include "gc/z/c2/zBarrierSetC2.hpp"
 #endif
+#if INCLUDE_SHENANDOAHGC
+#include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp"
+#endif
 
 
 // -------------------- Compile::mach_constant_base_node -----------------------
 // Constant table base node singleton.
 MachConstantBaseNode* Compile::mach_constant_base_node() {

@@ -2402,10 +2405,19 @@
       assert(failing(), "must bail out w/ explicit message");
       return;
     }
   }
 
+  print_method(PHASE_BEFORE_BARRIER_EXPAND, 2);
+
+#if INCLUDE_SHENANDOAHGC
+  if (!ShenandoahWriteBarrierNode::expand(this, igvn, loop_opts_cnt)) {
+    assert(failing(), "must bail out w/ explicit message");
+    return;
+  }
+#endif
+
   if (opaque4_count() > 0) {
     C->remove_opaque4_nodes(igvn);
     igvn.optimize();
   }
 

@@ -3051,11 +3063,11 @@
       wq.push(n);
       for (uint next = 0; next < wq.size(); ++next) {
         Node *m = wq.at(next);
         for (DUIterator_Fast imax, i = m->fast_outs(imax); i < imax; i++) {
           Node* use = m->fast_out(i);
-          if (use->is_Mem() || use->is_EncodeNarrowPtr()) {
+          if (use->is_Mem() || use->is_EncodeNarrowPtr() || use->is_ShenandoahBarrier()) {
             use->ensure_control_or_add_prec(n->in(0));
           } else {
             switch(use->Opcode()) {
             case Op_AddP:
             case Op_DecodeN:
< prev index next >