hotspot/src/share/vm/oops/cpCache.hpp
changeset 14393 93a4dcdbebfd
parent 13929 8da0dc50a6e4
child 15591 b8aa0577f137
equal deleted inserted replaced
14382:5e86124b835d 14393:93a4dcdbebfd
   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)