Mercurial > hg > graal-jvmci-8
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 } |