comparison src/share/vm/opto/graphKit.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 8f972594effc
children da91efe96a93
comparison
equal deleted inserted replaced
6241:aba91a731143 6266:1d7922586cf6
143 void set_map(SafePointNode* m) { _map = m; debug_only(verify_map()); } 143 void set_map(SafePointNode* m) { _map = m; debug_only(verify_map()); }
144 void set_sp(int i) { assert(i >= 0, "must be non-negative"); _sp = i; } 144 void set_sp(int i) { assert(i >= 0, "must be non-negative"); _sp = i; }
145 void clean_stack(int from_sp); // clear garbage beyond from_sp to top 145 void clean_stack(int from_sp); // clear garbage beyond from_sp to top
146 146
147 void inc_sp(int i) { set_sp(sp() + i); } 147 void inc_sp(int i) { set_sp(sp() + i); }
148 void dec_sp(int i) { set_sp(sp() - i); }
148 void set_bci(int bci) { _bci = bci; } 149 void set_bci(int bci) { _bci = bci; }
149 150
150 // Make sure jvms has current bci & sp. 151 // Make sure jvms has current bci & sp.
151 JVMState* sync_jvms() const; 152 JVMState* sync_jvms() const;
152 #ifdef ASSERT 153 #ifdef ASSERT
283 bool must_throw = false); 284 bool must_throw = false);
284 285
285 // How many stack inputs does the current BC consume? 286 // How many stack inputs does the current BC consume?
286 // And, how does the stack change after the bytecode? 287 // And, how does the stack change after the bytecode?
287 // Returns false if unknown. 288 // Returns false if unknown.
288 bool compute_stack_effects(int& inputs, int& depth); 289 bool compute_stack_effects(int& inputs, int& depth, bool for_parse = false);
289 290
290 // Add a fixed offset to a pointer 291 // Add a fixed offset to a pointer
291 Node* basic_plus_adr(Node* base, Node* ptr, intptr_t offset) { 292 Node* basic_plus_adr(Node* base, Node* ptr, intptr_t offset) {
292 return basic_plus_adr(base, ptr, MakeConX(offset)); 293 return basic_plus_adr(base, ptr, MakeConX(offset));
293 } 294 }
368 // Cast obj to not-null on this path 369 // Cast obj to not-null on this path
369 Node* cast_not_null(Node* obj, bool do_replace_in_map = true); 370 Node* cast_not_null(Node* obj, bool do_replace_in_map = true);
370 // Replace all occurrences of one node by another. 371 // Replace all occurrences of one node by another.
371 void replace_in_map(Node* old, Node* neww); 372 void replace_in_map(Node* old, Node* neww);
372 373
373 void push(Node* n) { map_not_null(); _map->set_stack(_map->_jvms,_sp++,n); } 374 void push(Node* n) { map_not_null(); _map->set_stack(_map->_jvms, _sp++, n); }
374 Node* pop() { map_not_null(); return _map->stack(_map->_jvms,--_sp); } 375 Node* pop() { map_not_null(); return _map->stack( _map->_jvms, --_sp); }
375 Node* peek(int off=0) { map_not_null(); return _map->stack(_map->_jvms, _sp - off - 1); } 376 Node* peek(int off = 0) { map_not_null(); return _map->stack( _map->_jvms, _sp - off - 1); }
376 377
377 void push_pair(Node* ldval) { 378 void push_pair(Node* ldval) {
378 push(ldval); 379 push(ldval);
379 push(top()); // the halfword is merely a placeholder 380 push(top()); // the halfword is merely a placeholder
380 } 381 }