src/share/vm/opto/node.hpp
Print this page
rev 5661 : 8003854: PPC64 (part 115): Introduce lateExpand that expands nodes after register allocation.
*** 355,364 ****
--- 355,366 ----
Node* last_out(DUIterator_Last i) const { return *i; }
#endif
// Reference to the i'th input Node. Error if out of bounds.
Node* in(uint i) const { assert(i < _max, err_msg_res("oob: i=%d, _max=%d", i, _max)); return _in[i]; }
+ // Reference to the i'th input Node. NULL if out of bounds.
+ Node* lookup(uint i) const { return ((i < _max) ? _in[i] : NULL); }
// Reference to the i'th output Node. Error if out of bounds.
// Use this accessor sparingly. We are going trying to use iterators instead.
Node* raw_out(uint i) const { assert(i < _outcnt,"oob"); return _out[i]; }
// Return the unique out edge.
Node* unique_out() const { assert(_outcnt==1,"not unique"); return _out[0]; }
*** 382,391 ****
--- 384,397 ----
// Check whether node has become unreachable
bool is_unreachable(PhaseIterGVN &igvn) const;
// Set a required input edge, also updates corresponding output edge
void add_req( Node *n ); // Append a NEW required input
+ void add_req( Node *n0, Node *n1 ) {
+ add_req(n0); add_req(n1); }
+ void add_req( Node *n0, Node *n1, Node *n2 ) {
+ add_req(n0); add_req(n1); add_req(n2); }
void add_req_batch( Node* n, uint m ); // Append m NEW required inputs (all n).
void del_req( uint idx ); // Delete required edge & compact
void del_req_ordered( uint idx ); // Delete required edge & compact with preserved order
void ins_req( uint i, Node *n ); // Insert a NEW required input
void set_req( uint i, Node *n ) {
*** 938,947 ****
--- 944,955 ----
// Print as assembly
virtual void format( PhaseRegAlloc *, outputStream* st = tty ) const;
// Emit bytes starting at parameter 'ptr'
// Bump 'ptr' by the number of output bytes
virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const;
+ // Expand node after register allocation.
+ virtual void lateExpand(GrowableArray <Node *> *nodes, PhaseRegAlloc *ra_);
// Size of instruction in bytes
virtual uint size(PhaseRegAlloc *ra_) const;
// Convenience function to extract an integer constant from a node.
// If it is not an integer constant (either Con, CastII, or Mach),