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; }