src/share/vm/classfile/systemDictionary.hpp

changeset 1145
e5b0439ef4ae
parent 1100
c89f86385056
child 1161
be93aad57795
     1.1 --- a/src/share/vm/classfile/systemDictionary.hpp	Wed Apr 08 00:12:59 2009 -0700
     1.2 +++ b/src/share/vm/classfile/systemDictionary.hpp	Wed Apr 08 10:56:49 2009 -0700
     1.3 @@ -63,6 +63,7 @@
     1.4  class LoaderConstraintTable;
     1.5  class HashtableBucket;
     1.6  class ResolutionErrorTable;
     1.7 +class SymbolPropertyTable;
     1.8  
     1.9  // Certain classes are preloaded, such as java.lang.Object and java.lang.String.
    1.10  // They are all "well-known", in the sense that no class loader is allowed
    1.11 @@ -131,6 +132,16 @@
    1.12    template(reflect_constant_pool_klass,  sun_reflect_ConstantPool,       Opt_Only_JDK15) \
    1.13    template(reflect_unsafe_static_field_accessor_impl_klass, sun_reflect_UnsafeStaticFieldAccessorImpl, Opt_Only_JDK15) \
    1.14                                                                                \
    1.15 +  /* support for dynamic typing; it's OK if these are NULL in earlier JDKs */ \
    1.16 +  template(MethodHandle_klass,           java_dyn_MethodHandle,          Opt) \
    1.17 +  template(MemberName_klass,             sun_dyn_MemberName,             Opt) \
    1.18 +  template(MethodHandleImpl_klass,       sun_dyn_MethodHandleImpl,       Opt) \
    1.19 +  template(AdapterMethodHandle_klass,    sun_dyn_AdapterMethodHandle,    Opt) \
    1.20 +  template(BoundMethodHandle_klass,      sun_dyn_BoundMethodHandle,      Opt) \
    1.21 +  template(DirectMethodHandle_klass,     sun_dyn_DirectMethodHandle,     Opt) \
    1.22 +  template(MethodType_klass,             java_dyn_MethodType,            Opt) \
    1.23 +  template(MethodTypeForm_klass,         java_dyn_MethodTypeForm,        Opt) \
    1.24 +  template(WrongMethodTypeException_klass, java_dyn_WrongMethodTypeException, Opt) \
    1.25    template(vector_klass,                 java_util_Vector,               Pre) \
    1.26    template(hashtable_klass,              java_util_Hashtable,            Pre) \
    1.27    template(stringBuffer_klass,           java_lang_StringBuffer,         Pre) \
    1.28 @@ -444,6 +455,17 @@
    1.29    static char* check_signature_loaders(symbolHandle signature, Handle loader1,
    1.30                                         Handle loader2, bool is_method, TRAPS);
    1.31  
    1.32 +  // JSR 292
    1.33 +  // find the java.dyn.MethodHandles::invoke method for a given signature
    1.34 +  static methodOop find_method_handle_invoke(symbolHandle signature,
    1.35 +                                             Handle class_loader,
    1.36 +                                             Handle protection_domain,
    1.37 +                                             TRAPS);
    1.38 +  // ask Java to compute the java.dyn.MethodType object for a given signature
    1.39 +  static Handle    compute_method_handle_type(symbolHandle signature,
    1.40 +                                              Handle class_loader,
    1.41 +                                              Handle protection_domain,
    1.42 +                                              TRAPS);
    1.43    // Utility for printing loader "name" as part of tracing constraints
    1.44    static const char* loader_name(oop loader) {
    1.45      return ((loader) == NULL ? "<bootloader>" :
    1.46 @@ -460,6 +482,7 @@
    1.47    enum Constants {
    1.48      _loader_constraint_size = 107,                     // number of entries in constraint table
    1.49      _resolution_error_size  = 107,                     // number of entries in resolution error table
    1.50 +    _invoke_method_size     = 139,                     // number of entries in invoke method table
    1.51      _nof_buckets            = 1009                     // number of buckets in hash table
    1.52    };
    1.53  
    1.54 @@ -489,6 +512,9 @@
    1.55    // Resolution errors
    1.56    static ResolutionErrorTable*   _resolution_errors;
    1.57  
    1.58 +  // Invoke methods (JSR 292)
    1.59 +  static SymbolPropertyTable*    _invoke_method_table;
    1.60 +
    1.61  public:
    1.62    // for VM_CounterDecay iteration support
    1.63    friend class CounterDecay;
    1.64 @@ -506,6 +532,7 @@
    1.65    static PlaceholderTable*   placeholders() { return _placeholders; }
    1.66    static LoaderConstraintTable* constraints() { return _loader_constraints; }
    1.67    static ResolutionErrorTable* resolution_errors() { return _resolution_errors; }
    1.68 +  static SymbolPropertyTable* invoke_method_table() { return _invoke_method_table; }
    1.69  
    1.70    // Basic loading operations
    1.71    static klassOop resolve_instance_class_or_null(symbolHandle class_name, Handle class_loader, Handle protection_domain, TRAPS);

mercurial