< prev index next >

src/share/vm/opto/ifg.cpp

Print this page
rev 8961 : [mq]: diff-shenandoah.patch

@@ -533,11 +533,11 @@
       // they are not dead even when their result is not used.
       // For example, compareAndSwapL (and other CAS) and EncodeISOArray nodes.
       // The method add_input_to_liveout() keeps such nodes alive (put them on liveout list)
       // when it sees SCMemProj node in a block. Unfortunately SCMemProj node could be placed
       // in block in such order that KILL MachProj nodes are processed first.
-      if (def->has_out_with(Op_SCMemProj)) {
+      if (def->has_out_with(Op_SCMemProj) || def->has_out_with(Op_ShenandoahWBMemProj)) {
         return false;
       }
     }
     b->remove_node(location);
     LRG& lrg = lrgs(lid);

@@ -681,11 +681,11 @@
  */
 void PhaseChaitin::add_input_to_liveout(Block* b, Node* n, IndexSet* liveout, double cost, Pressure& int_pressure, Pressure& float_pressure) {
   JVMState* jvms = n->jvms();
   uint debug_start = jvms ? jvms->debug_start() : 999999;
 
-  for (uint k = ((n->Opcode() == Op_SCMemProj) ? 0:1); k < n->req(); k++) {
+  for (uint k = ((n->Opcode() == Op_SCMemProj || n->Opcode() == Op_ShenandoahWBMemProj) ? 0:1); k < n->req(); k++) {
     Node* def = n->in(k);
     uint lid = _lrg_map.live_range_id(def);
     if (!lid) {
       continue;
     }
< prev index next >