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