115 // b2 bytecode. The value of _flags is shared for both types of entries. |
115 // b2 bytecode. The value of _flags is shared for both types of entries. |
116 // |
116 // |
117 // The fields are volatile so that they are stored in the order written in the |
117 // The fields are volatile so that they are stored in the order written in the |
118 // source code. The _indices field with the bytecode must be written last. |
118 // source code. The _indices field with the bytecode must be written last. |
119 |
119 |
|
120 class CallInfo; |
|
121 |
120 class ConstantPoolCacheEntry VALUE_OBJ_CLASS_SPEC { |
122 class ConstantPoolCacheEntry VALUE_OBJ_CLASS_SPEC { |
121 friend class VMStructs; |
123 friend class VMStructs; |
122 friend class constantPoolCacheKlass; |
124 friend class constantPoolCacheKlass; |
123 friend class ConstantPool; |
125 friend class ConstantPool; |
124 friend class InterpreterRuntime; |
126 friend class InterpreterRuntime; |
221 int index // Method index into interface |
223 int index // Method index into interface |
222 ); |
224 ); |
223 |
225 |
224 void set_method_handle( |
226 void set_method_handle( |
225 constantPoolHandle cpool, // holding constant pool (required for locking) |
227 constantPoolHandle cpool, // holding constant pool (required for locking) |
226 methodHandle method, // adapter for invokeExact, etc. |
228 const CallInfo &call_info // Call link information |
227 Handle appendix, // stored in refs[f2+0]; could be a java.lang.invoke.MethodType |
|
228 Handle method_type, // stored in refs[f2+1]; is a java.lang.invoke.MethodType |
|
229 objArrayHandle resolved_references |
|
230 ); |
229 ); |
231 |
230 |
232 void set_dynamic_call( |
231 void set_dynamic_call( |
233 constantPoolHandle cpool, // holding constant pool (required for locking) |
232 constantPoolHandle cpool, // holding constant pool (required for locking) |
234 methodHandle method, // adapter for this call site |
233 const CallInfo &call_info // Call link information |
235 Handle appendix, // stored in refs[f2+0]; could be a java.lang.invoke.CallSite |
|
236 Handle method_type, // stored in refs[f2+1]; is a java.lang.invoke.MethodType |
|
237 objArrayHandle resolved_references |
|
238 ); |
234 ); |
239 |
235 |
240 // Common code for invokedynamic and MH invocations. |
236 // Common code for invokedynamic and MH invocations. |
241 |
237 |
242 // The "appendix" is an optional call-site-specific parameter which is |
238 // The "appendix" is an optional call-site-specific parameter which is |
253 // resolution logic needs to make slightly different assessments about the |
249 // resolution logic needs to make slightly different assessments about the |
254 // number and types of arguments. |
250 // number and types of arguments. |
255 void set_method_handle_common( |
251 void set_method_handle_common( |
256 constantPoolHandle cpool, // holding constant pool (required for locking) |
252 constantPoolHandle cpool, // holding constant pool (required for locking) |
257 Bytecodes::Code invoke_code, // _invokehandle or _invokedynamic |
253 Bytecodes::Code invoke_code, // _invokehandle or _invokedynamic |
258 methodHandle adapter, // invoker method (f1) |
254 const CallInfo &call_info // Call link information |
259 Handle appendix, // appendix such as CallSite, MethodType, etc. (refs[f2+0]) |
|
260 Handle method_type, // MethodType (refs[f2+1]) |
|
261 objArrayHandle resolved_references |
|
262 ); |
255 ); |
263 |
256 |
264 // invokedynamic and invokehandle call sites have two entries in the |
257 // invokedynamic and invokehandle call sites have two entries in the |
265 // resolved references array: |
258 // resolved references array: |
266 // appendix (at index+0) |
259 // appendix (at index+0) |