comparison src/share/vm/opto/node.hpp @ 6266:1d7922586cf6

7023639: JSR 292 method handle invocation needs a fast path for compiled code 6984705: JSR 292 method handle creation should not go through JNI Summary: remove assembly code for JDK 7 chained method handles Reviewed-by: jrose, twisti, kvn, mhaupt Contributed-by: John Rose <john.r.rose@oracle.com>, Christian Thalinger <christian.thalinger@oracle.com>, Michael Haupt <michael.haupt@oracle.com>
author twisti
date Tue, 24 Jul 2012 10:51:00 -0700
parents 8c92982cbbc4
children 6c5b7a6becc8
comparison
equal deleted inserted replaced
6241:aba91a731143 6266:1d7922586cf6
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,"oob"); return _in[i]; } 366 Node* in(uint i) const { assert(i < _max, err_msg("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, "oob"); 397 assert( i < _cnt, err_msg("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;