# HG changeset patch # User roland # Date 1543326553 -3600 # Node ID d17e09494308edc411664bc1037ec294cfd37f97 # Parent f480ad035c73bc3b4c67ac6c7bf22bc9349fc5b3 8214362: C2: gc interface entry point for split if Reviewed-by: rkennke, thartmann diff -r f480ad035c73 -r d17e09494308 src/hotspot/share/gc/shared/c2/barrierSetC2.hpp --- a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp Tue Nov 27 09:35:02 2018 +0100 +++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp Tue Nov 27 14:49:13 2018 +0100 @@ -60,8 +60,8 @@ class GraphKit; class IdealKit; class Node; +class PhaseGVN; class PhaseIdealLoop; -class PhaseGVN; class PhaseMacroExpand; class Type; class TypePtr; @@ -313,6 +313,7 @@ virtual void igvn_add_users_to_worklist(PhaseIterGVN* igvn, Node* use) const {} virtual void ccp_analyze(PhaseCCP* ccp, Unique_Node_List& worklist, Node* use) const {} + virtual Node* split_if_pre(PhaseIdealLoop* phase, Node* n) const { return NULL; } }; #endif // SHARE_GC_SHARED_C2_BARRIERSETC2_HPP diff -r f480ad035c73 -r d17e09494308 src/hotspot/share/opto/loopopts.cpp --- a/src/hotspot/share/opto/loopopts.cpp Tue Nov 27 09:35:02 2018 +0100 +++ b/src/hotspot/share/opto/loopopts.cpp Tue Nov 27 14:49:13 2018 +0100 @@ -887,6 +887,11 @@ // Do the real work in a non-recursive function. Data nodes want to be // cloned in the pre-order so they can feed each other nicely. Node *PhaseIdealLoop::split_if_with_blocks_pre( Node *n ) { + BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2(); + Node* bs_res = bs->split_if_pre(this, n); + if (bs_res != NULL) { + return bs_res; + } // Cloning these guys is unlikely to win int n_op = n->Opcode(); if( n_op == Op_MergeMem ) return n;