Mercurial > hg > graal-compiler
comparison src/share/vm/opto/callnode.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 | ee138854b3a6 |
children | beebba0acc11 |
comparison
equal
deleted
inserted
replaced
6241:aba91a731143 | 6266:1d7922586cf6 |
---|---|
195 Reexecute_True = 1 // true -- reexecute the bytecode | 195 Reexecute_True = 1 // true -- reexecute the bytecode |
196 } ReexecuteState; //Reexecute State | 196 } ReexecuteState; //Reexecute State |
197 | 197 |
198 private: | 198 private: |
199 JVMState* _caller; // List pointer for forming scope chains | 199 JVMState* _caller; // List pointer for forming scope chains |
200 uint _depth; // One mroe than caller depth, or one. | 200 uint _depth; // One more than caller depth, or one. |
201 uint _locoff; // Offset to locals in input edge mapping | 201 uint _locoff; // Offset to locals in input edge mapping |
202 uint _stkoff; // Offset to stack in input edge mapping | 202 uint _stkoff; // Offset to stack in input edge mapping |
203 uint _monoff; // Offset to monitors in input edge mapping | 203 uint _monoff; // Offset to monitors in input edge mapping |
204 uint _scloff; // Offset to fields of scalar objs in input edge mapping | 204 uint _scloff; // Offset to fields of scalar objs in input edge mapping |
205 uint _endoff; // Offset to end of input edge mapping | 205 uint _endoff; // Offset to end of input edge mapping |
221 // Create a new JVMState, ready for abstract interpretation. | 221 // Create a new JVMState, ready for abstract interpretation. |
222 JVMState(ciMethod* method, JVMState* caller); | 222 JVMState(ciMethod* method, JVMState* caller); |
223 JVMState(int stack_size); // root state; has a null method | 223 JVMState(int stack_size); // root state; has a null method |
224 | 224 |
225 // Access functions for the JVM | 225 // Access functions for the JVM |
226 // ... --|--- loc ---|--- stk ---|--- arg ---|--- mon ---|--- scl ---| | |
227 // \ locoff \ stkoff \ argoff \ monoff \ scloff \ endoff | |
226 uint locoff() const { return _locoff; } | 228 uint locoff() const { return _locoff; } |
227 uint stkoff() const { return _stkoff; } | 229 uint stkoff() const { return _stkoff; } |
228 uint argoff() const { return _stkoff + _sp; } | 230 uint argoff() const { return _stkoff + _sp; } |
229 uint monoff() const { return _monoff; } | 231 uint monoff() const { return _monoff; } |
230 uint scloff() const { return _scloff; } | 232 uint scloff() const { return _scloff; } |
231 uint endoff() const { return _endoff; } | 233 uint endoff() const { return _endoff; } |
232 uint oopoff() const { return debug_end(); } | 234 uint oopoff() const { return debug_end(); } |
233 | 235 |
234 int loc_size() const { return _stkoff - _locoff; } | 236 int loc_size() const { return stkoff() - locoff(); } |
235 int stk_size() const { return _monoff - _stkoff; } | 237 int stk_size() const { return monoff() - stkoff(); } |
236 int mon_size() const { return _scloff - _monoff; } | 238 int arg_size() const { return monoff() - argoff(); } |
237 int scl_size() const { return _endoff - _scloff; } | 239 int mon_size() const { return scloff() - monoff(); } |
238 | 240 int scl_size() const { return endoff() - scloff(); } |
239 bool is_loc(uint i) const { return i >= _locoff && i < _stkoff; } | 241 |
240 bool is_stk(uint i) const { return i >= _stkoff && i < _monoff; } | 242 bool is_loc(uint i) const { return locoff() <= i && i < stkoff(); } |
241 bool is_mon(uint i) const { return i >= _monoff && i < _scloff; } | 243 bool is_stk(uint i) const { return stkoff() <= i && i < monoff(); } |
242 bool is_scl(uint i) const { return i >= _scloff && i < _endoff; } | 244 bool is_mon(uint i) const { return monoff() <= i && i < scloff(); } |
245 bool is_scl(uint i) const { return scloff() <= i && i < endoff(); } | |
243 | 246 |
244 uint sp() const { return _sp; } | 247 uint sp() const { return _sp; } |
245 int bci() const { return _bci; } | 248 int bci() const { return _bci; } |
246 bool should_reexecute() const { return _reexecute==Reexecute_True; } | 249 bool should_reexecute() const { return _reexecute==Reexecute_True; } |
247 bool is_reexecute_undefined() const { return _reexecute==Reexecute_Undefined; } | 250 bool is_reexecute_undefined() const { return _reexecute==Reexecute_Undefined; } |