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