< prev index next >

src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp

Print this page
rev 55386 : 8225743: Remove ShenandoahBarrierSetC2::escape_is_barrier_node and related GC interface
Reviewed-by: XXX


1177       return conn_graph->add_final_edges_unsafe_access(n, opcode);
1178     case Op_ShenandoahEnqueueBarrier:
1179       conn_graph->add_local_var_and_edge(n, PointsToNode::NoEscape, n->in(1), NULL);
1180       return true;
1181     case Op_ShenandoahLoadReferenceBarrier:
1182       conn_graph->add_local_var_and_edge(n, PointsToNode::NoEscape, n->in(ShenandoahLoadReferenceBarrierNode::ValueIn), NULL);
1183       return true;
1184     default:
1185       // Nothing
1186       break;
1187   }
1188   return false;
1189 }
1190 
1191 bool ShenandoahBarrierSetC2::escape_has_out_with_unsafe_object(Node* n) const {
1192   return n->has_out_with(Op_ShenandoahCompareAndExchangeP) || n->has_out_with(Op_ShenandoahCompareAndExchangeN) ||
1193          n->has_out_with(Op_ShenandoahCompareAndSwapP, Op_ShenandoahCompareAndSwapN, Op_ShenandoahWeakCompareAndSwapP, Op_ShenandoahWeakCompareAndSwapN);
1194 
1195 }
1196 
1197 bool ShenandoahBarrierSetC2::escape_is_barrier_node(Node* n) const {
1198   return n->Opcode() == Op_ShenandoahLoadReferenceBarrier;
1199 }
1200 
1201 bool ShenandoahBarrierSetC2::matcher_find_shared_post_visit(Matcher* matcher, Node* n, uint opcode) const {
1202   switch (opcode) {
1203     case Op_ShenandoahCompareAndExchangeP:
1204     case Op_ShenandoahCompareAndExchangeN:
1205     case Op_ShenandoahWeakCompareAndSwapP:
1206     case Op_ShenandoahWeakCompareAndSwapN:
1207     case Op_ShenandoahCompareAndSwapP:
1208     case Op_ShenandoahCompareAndSwapN: {   // Convert trinary to binary-tree
1209       Node* newval = n->in(MemNode::ValueIn);
1210       Node* oldval = n->in(LoadStoreConditionalNode::ExpectedIn);
1211       Node* pair = new BinaryNode(oldval, newval);
1212       n->set_req(MemNode::ValueIn,pair);
1213       n->del_req(LoadStoreConditionalNode::ExpectedIn);
1214       return true;
1215     }
1216     default:
1217       break;
1218   }
1219   return false;
1220 }


1177       return conn_graph->add_final_edges_unsafe_access(n, opcode);
1178     case Op_ShenandoahEnqueueBarrier:
1179       conn_graph->add_local_var_and_edge(n, PointsToNode::NoEscape, n->in(1), NULL);
1180       return true;
1181     case Op_ShenandoahLoadReferenceBarrier:
1182       conn_graph->add_local_var_and_edge(n, PointsToNode::NoEscape, n->in(ShenandoahLoadReferenceBarrierNode::ValueIn), NULL);
1183       return true;
1184     default:
1185       // Nothing
1186       break;
1187   }
1188   return false;
1189 }
1190 
1191 bool ShenandoahBarrierSetC2::escape_has_out_with_unsafe_object(Node* n) const {
1192   return n->has_out_with(Op_ShenandoahCompareAndExchangeP) || n->has_out_with(Op_ShenandoahCompareAndExchangeN) ||
1193          n->has_out_with(Op_ShenandoahCompareAndSwapP, Op_ShenandoahCompareAndSwapN, Op_ShenandoahWeakCompareAndSwapP, Op_ShenandoahWeakCompareAndSwapN);
1194 
1195 }
1196 




1197 bool ShenandoahBarrierSetC2::matcher_find_shared_post_visit(Matcher* matcher, Node* n, uint opcode) const {
1198   switch (opcode) {
1199     case Op_ShenandoahCompareAndExchangeP:
1200     case Op_ShenandoahCompareAndExchangeN:
1201     case Op_ShenandoahWeakCompareAndSwapP:
1202     case Op_ShenandoahWeakCompareAndSwapN:
1203     case Op_ShenandoahCompareAndSwapP:
1204     case Op_ShenandoahCompareAndSwapN: {   // Convert trinary to binary-tree
1205       Node* newval = n->in(MemNode::ValueIn);
1206       Node* oldval = n->in(LoadStoreConditionalNode::ExpectedIn);
1207       Node* pair = new BinaryNode(oldval, newval);
1208       n->set_req(MemNode::ValueIn,pair);
1209       n->del_req(LoadStoreConditionalNode::ExpectedIn);
1210       return true;
1211     }
1212     default:
1213       break;
1214   }
1215   return false;
1216 }
< prev index next >