hotspot/src/share/vm/classfile/systemDictionary.hpp
changeset 2534 08dac9ce0cd7
parent 2332 5c7b6f4ce0a1
child 2570 ecc7862946d4
equal deleted inserted replaced
2533:9aa50ba9a67f 2534:08dac9ce0cd7
    61 class Dictionary;
    61 class Dictionary;
    62 class PlaceholderTable;
    62 class PlaceholderTable;
    63 class LoaderConstraintTable;
    63 class LoaderConstraintTable;
    64 class HashtableBucket;
    64 class HashtableBucket;
    65 class ResolutionErrorTable;
    65 class ResolutionErrorTable;
       
    66 class SymbolPropertyTable;
    66 
    67 
    67 // Certain classes are preloaded, such as java.lang.Object and java.lang.String.
    68 // Certain classes are preloaded, such as java.lang.Object and java.lang.String.
    68 // They are all "well-known", in the sense that no class loader is allowed
    69 // They are all "well-known", in the sense that no class loader is allowed
    69 // to provide a different definition.
    70 // to provide a different definition.
    70 //
    71 //
   129   template(reflect_constructor_accessor_klass, sun_reflect_ConstructorAccessorImpl, Opt_Only_JDK14NewRef) \
   130   template(reflect_constructor_accessor_klass, sun_reflect_ConstructorAccessorImpl, Opt_Only_JDK14NewRef) \
   130   template(reflect_delegating_classloader_klass, sun_reflect_DelegatingClassLoader, Opt) \
   131   template(reflect_delegating_classloader_klass, sun_reflect_DelegatingClassLoader, Opt) \
   131   template(reflect_constant_pool_klass,  sun_reflect_ConstantPool,       Opt_Only_JDK15) \
   132   template(reflect_constant_pool_klass,  sun_reflect_ConstantPool,       Opt_Only_JDK15) \
   132   template(reflect_unsafe_static_field_accessor_impl_klass, sun_reflect_UnsafeStaticFieldAccessorImpl, Opt_Only_JDK15) \
   133   template(reflect_unsafe_static_field_accessor_impl_klass, sun_reflect_UnsafeStaticFieldAccessorImpl, Opt_Only_JDK15) \
   133                                                                               \
   134                                                                               \
       
   135   /* support for dynamic typing; it's OK if these are NULL in earlier JDKs */ \
       
   136   template(MethodHandle_klass,           java_dyn_MethodHandle,          Opt) \
       
   137   template(MemberName_klass,             sun_dyn_MemberName,             Opt) \
       
   138   template(MethodHandleImpl_klass,       sun_dyn_MethodHandleImpl,       Opt) \
       
   139   template(AdapterMethodHandle_klass,    sun_dyn_AdapterMethodHandle,    Opt) \
       
   140   template(BoundMethodHandle_klass,      sun_dyn_BoundMethodHandle,      Opt) \
       
   141   template(DirectMethodHandle_klass,     sun_dyn_DirectMethodHandle,     Opt) \
       
   142   template(MethodType_klass,             java_dyn_MethodType,            Opt) \
       
   143   template(MethodTypeForm_klass,         java_dyn_MethodTypeForm,        Opt) \
       
   144   template(WrongMethodTypeException_klass, java_dyn_WrongMethodTypeException, Opt) \
   134   template(vector_klass,                 java_util_Vector,               Pre) \
   145   template(vector_klass,                 java_util_Vector,               Pre) \
   135   template(hashtable_klass,              java_util_Hashtable,            Pre) \
   146   template(hashtable_klass,              java_util_Hashtable,            Pre) \
   136   template(stringBuffer_klass,           java_lang_StringBuffer,         Pre) \
   147   template(stringBuffer_klass,           java_lang_StringBuffer,         Pre) \
   137                                                                               \
   148                                                                               \
   138   /* It's NULL in non-1.4 JDKs. */                                            \
   149   /* It's NULL in non-1.4 JDKs. */                                            \
   442   static bool add_loader_constraint(symbolHandle name, Handle loader1,
   453   static bool add_loader_constraint(symbolHandle name, Handle loader1,
   443                                     Handle loader2, TRAPS);
   454                                     Handle loader2, TRAPS);
   444   static char* check_signature_loaders(symbolHandle signature, Handle loader1,
   455   static char* check_signature_loaders(symbolHandle signature, Handle loader1,
   445                                        Handle loader2, bool is_method, TRAPS);
   456                                        Handle loader2, bool is_method, TRAPS);
   446 
   457 
       
   458   // JSR 292
       
   459   // find the java.dyn.MethodHandles::invoke method for a given signature
       
   460   static methodOop find_method_handle_invoke(symbolHandle signature,
       
   461                                              Handle class_loader,
       
   462                                              Handle protection_domain,
       
   463                                              TRAPS);
       
   464   // ask Java to compute the java.dyn.MethodType object for a given signature
       
   465   static Handle    compute_method_handle_type(symbolHandle signature,
       
   466                                               Handle class_loader,
       
   467                                               Handle protection_domain,
       
   468                                               TRAPS);
   447   // Utility for printing loader "name" as part of tracing constraints
   469   // Utility for printing loader "name" as part of tracing constraints
   448   static const char* loader_name(oop loader) {
   470   static const char* loader_name(oop loader) {
   449     return ((loader) == NULL ? "<bootloader>" :
   471     return ((loader) == NULL ? "<bootloader>" :
   450             instanceKlass::cast((loader)->klass())->name()->as_C_string() );
   472             instanceKlass::cast((loader)->klass())->name()->as_C_string() );
   451   }
   473   }
   458  private:
   480  private:
   459 
   481 
   460   enum Constants {
   482   enum Constants {
   461     _loader_constraint_size = 107,                     // number of entries in constraint table
   483     _loader_constraint_size = 107,                     // number of entries in constraint table
   462     _resolution_error_size  = 107,                     // number of entries in resolution error table
   484     _resolution_error_size  = 107,                     // number of entries in resolution error table
       
   485     _invoke_method_size     = 139,                     // number of entries in invoke method table
   463     _nof_buckets            = 1009                     // number of buckets in hash table
   486     _nof_buckets            = 1009                     // number of buckets in hash table
   464   };
   487   };
   465 
   488 
   466 
   489 
   467   // Static variables
   490   // Static variables
   486   // Constraints on class loaders
   509   // Constraints on class loaders
   487   static LoaderConstraintTable*  _loader_constraints;
   510   static LoaderConstraintTable*  _loader_constraints;
   488 
   511 
   489   // Resolution errors
   512   // Resolution errors
   490   static ResolutionErrorTable*   _resolution_errors;
   513   static ResolutionErrorTable*   _resolution_errors;
       
   514 
       
   515   // Invoke methods (JSR 292)
       
   516   static SymbolPropertyTable*    _invoke_method_table;
   491 
   517 
   492 public:
   518 public:
   493   // for VM_CounterDecay iteration support
   519   // for VM_CounterDecay iteration support
   494   friend class CounterDecay;
   520   friend class CounterDecay;
   495   static klassOop try_get_next_class();
   521   static klassOop try_get_next_class();
   504   static Dictionary*         dictionary() { return _dictionary; }
   530   static Dictionary*         dictionary() { return _dictionary; }
   505   static Dictionary*         shared_dictionary() { return _shared_dictionary; }
   531   static Dictionary*         shared_dictionary() { return _shared_dictionary; }
   506   static PlaceholderTable*   placeholders() { return _placeholders; }
   532   static PlaceholderTable*   placeholders() { return _placeholders; }
   507   static LoaderConstraintTable* constraints() { return _loader_constraints; }
   533   static LoaderConstraintTable* constraints() { return _loader_constraints; }
   508   static ResolutionErrorTable* resolution_errors() { return _resolution_errors; }
   534   static ResolutionErrorTable* resolution_errors() { return _resolution_errors; }
       
   535   static SymbolPropertyTable* invoke_method_table() { return _invoke_method_table; }
   509 
   536 
   510   // Basic loading operations
   537   // Basic loading operations
   511   static klassOop resolve_instance_class_or_null(symbolHandle class_name, Handle class_loader, Handle protection_domain, TRAPS);
   538   static klassOop resolve_instance_class_or_null(symbolHandle class_name, Handle class_loader, Handle protection_domain, TRAPS);
   512   static klassOop resolve_array_class_or_null(symbolHandle class_name, Handle class_loader, Handle protection_domain, TRAPS);
   539   static klassOop resolve_array_class_or_null(symbolHandle class_name, Handle class_loader, Handle protection_domain, TRAPS);
   513   static instanceKlassHandle handle_parallel_super_load(symbolHandle class_name, symbolHandle supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS);
   540   static instanceKlassHandle handle_parallel_super_load(symbolHandle class_name, symbolHandle supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS);