185 void copy_call_debug_info(CallNode *oldcall, CallNode * newcall); 186 Node* opt_bits_test(Node* ctrl, Node* region, int edge, Node* word, int mask, int bits, bool return_fast_path = false); 187 void copy_predefined_input_for_runtime_call(Node * ctrl, CallNode* oldcall, CallNode* call); 188 CallNode* make_slow_call(CallNode *oldcall, const TypeFunc* slow_call_type, address slow_call, 189 const char* leaf_name, Node* slow_path, Node* parm0, Node* parm1, 190 Node* parm2); 191 void extract_call_projections(CallNode *call); 192 193 Node* initialize_object(AllocateNode* alloc, 194 Node* control, Node* rawmem, Node* object, 195 Node* klass_node, Node* length, 196 Node* size_in_bytes); 197 198 Node* prefetch_allocation(Node* i_o, 199 Node*& needgc_false, Node*& contended_phi_rawmem, 200 Node* old_eden_top, Node* new_eden_top, 201 Node* length); 202 203 Node* make_arraycopy_load(ArrayCopyNode* ac, intptr_t offset, Node* ctl, Node* mem, BasicType ft, const Type *ftype, AllocateNode *alloc); 204 205 #if INCLUDE_SHENANDOAHGC 206 Node* shenandoah_call_clone_barrier(Node* call, Node* dest); 207 #endif 208 public: 209 PhaseMacroExpand(PhaseIterGVN &igvn) : Phase(Macro_Expand), _igvn(igvn), _has_locks(false) { 210 _igvn.set_delay_transform(true); 211 } 212 void eliminate_macro_nodes(); 213 bool expand_macro_nodes(); 214 215 PhaseIterGVN &igvn() const { return _igvn; } 216 217 // Members accessed from BarrierSetC2 218 void replace_node(Node* source, Node* target) { _igvn.replace_node(source, target); } 219 Node* intcon(jint con) const { return _igvn.intcon(con); } 220 Node* longcon(jlong con) const { return _igvn.longcon(con); } 221 Node* makecon(const Type *t) const { return _igvn.makecon(t); } 222 Node* top() const { return C->top(); } 223 }; 224 225 #endif // SHARE_VM_OPTO_MACRO_HPP | 185 void copy_call_debug_info(CallNode *oldcall, CallNode * newcall); 186 Node* opt_bits_test(Node* ctrl, Node* region, int edge, Node* word, int mask, int bits, bool return_fast_path = false); 187 void copy_predefined_input_for_runtime_call(Node * ctrl, CallNode* oldcall, CallNode* call); 188 CallNode* make_slow_call(CallNode *oldcall, const TypeFunc* slow_call_type, address slow_call, 189 const char* leaf_name, Node* slow_path, Node* parm0, Node* parm1, 190 Node* parm2); 191 void extract_call_projections(CallNode *call); 192 193 Node* initialize_object(AllocateNode* alloc, 194 Node* control, Node* rawmem, Node* object, 195 Node* klass_node, Node* length, 196 Node* size_in_bytes); 197 198 Node* prefetch_allocation(Node* i_o, 199 Node*& needgc_false, Node*& contended_phi_rawmem, 200 Node* old_eden_top, Node* new_eden_top, 201 Node* length); 202 203 Node* make_arraycopy_load(ArrayCopyNode* ac, intptr_t offset, Node* ctl, Node* mem, BasicType ft, const Type *ftype, AllocateNode *alloc); 204 205 public: 206 PhaseMacroExpand(PhaseIterGVN &igvn) : Phase(Macro_Expand), _igvn(igvn), _has_locks(false) { 207 _igvn.set_delay_transform(true); 208 } 209 void eliminate_macro_nodes(); 210 bool expand_macro_nodes(); 211 212 PhaseIterGVN &igvn() const { return _igvn; } 213 214 // Members accessed from BarrierSetC2 215 void replace_node(Node* source, Node* target) { _igvn.replace_node(source, target); } 216 Node* intcon(jint con) const { return _igvn.intcon(con); } 217 Node* longcon(jlong con) const { return _igvn.longcon(con); } 218 Node* makecon(const Type *t) const { return _igvn.makecon(t); } 219 Node* top() const { return C->top(); } 220 }; 221 222 #endif // SHARE_VM_OPTO_MACRO_HPP |