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
|