comparison src/share/vm/opto/node.hpp @ 6268:6c5b7a6becc8

7187454: stack overflow in C2 compiler thread on Solaris x86 Summary: Added new FormatBufferResource class to use thread's resource area for error message buffer. Reviewed-by: twisti
author kvn
date Mon, 30 Jul 2012 09:49:25 -0700
parents 1d7922586cf6
children e626685e9f6c
comparison
equal deleted inserted replaced
6267:977007096840 6268:6c5b7a6becc8
361 } 361 }
362 Node* last_out(DUIterator_Last i) const { return *i; } 362 Node* last_out(DUIterator_Last i) const { return *i; }
363 #endif 363 #endif
364 364
365 // Reference to the i'th input Node. Error if out of bounds. 365 // Reference to the i'th input Node. Error if out of bounds.
366 Node* in(uint i) const { assert(i < _max, err_msg("oob: i=%d, _max=%d", i, _max)); return _in[i]; } 366 Node* in(uint i) const { assert(i < _max, err_msg_res("oob: i=%d, _max=%d", i, _max)); return _in[i]; }
367 // Reference to the i'th output Node. Error if out of bounds. 367 // Reference to the i'th output Node. Error if out of bounds.
368 // Use this accessor sparingly. We are going trying to use iterators instead. 368 // Use this accessor sparingly. We are going trying to use iterators instead.
369 Node* raw_out(uint i) const { assert(i < _outcnt,"oob"); return _out[i]; } 369 Node* raw_out(uint i) const { assert(i < _outcnt,"oob"); return _out[i]; }
370 // Return the unique out edge. 370 // Return the unique out edge.
371 Node* unique_out() const { assert(_outcnt==1,"not unique"); return _out[0]; } 371 Node* unique_out() const { assert(_outcnt==1,"not unique"); return _out[0]; }
392 void add_req_batch( Node* n, uint m ); // Append m NEW required inputs (all n). 392 void add_req_batch( Node* n, uint m ); // Append m NEW required inputs (all n).
393 void del_req( uint idx ); // Delete required edge & compact 393 void del_req( uint idx ); // Delete required edge & compact
394 void ins_req( uint i, Node *n ); // Insert a NEW required input 394 void ins_req( uint i, Node *n ); // Insert a NEW required input
395 void set_req( uint i, Node *n ) { 395 void set_req( uint i, Node *n ) {
396 assert( is_not_dead(n), "can not use dead node"); 396 assert( is_not_dead(n), "can not use dead node");
397 assert( i < _cnt, err_msg("oob: i=%d, _cnt=%d", i, _cnt)); 397 assert( i < _cnt, err_msg_res("oob: i=%d, _cnt=%d", i, _cnt));
398 assert( !VerifyHashTableKeys || _hash_lock == 0, 398 assert( !VerifyHashTableKeys || _hash_lock == 0,
399 "remove node from hash table before modifying it"); 399 "remove node from hash table before modifying it");
400 Node** p = &_in[i]; // cache this._in, across the del_out call 400 Node** p = &_in[i]; // cache this._in, across the del_out call
401 if (*p != NULL) (*p)->del_out((Node *)this); 401 if (*p != NULL) (*p)->del_out((Node *)this);
402 (*p) = n; 402 (*p) = n;