1.1 --- a/src/share/vm/interpreter/linkResolver.hpp Fri Sep 28 14:36:20 2012 -0700 1.2 +++ b/src/share/vm/interpreter/linkResolver.hpp Mon Oct 01 14:50:10 2012 -0700 1.3 @@ -76,12 +76,13 @@ 1.4 methodHandle _selected_method; // dynamic (actual) target method 1.5 int _vtable_index; // vtable index of selected method 1.6 Handle _resolved_appendix; // extra argument in constant pool (if CPCE::has_appendix) 1.7 + Handle _resolved_method_type; // MethodType (for invokedynamic and invokehandle call sites) 1.8 1.9 - void set_static( KlassHandle resolved_klass, methodHandle resolved_method , TRAPS); 1.10 - void set_interface(KlassHandle resolved_klass, KlassHandle selected_klass, methodHandle resolved_method, methodHandle selected_method , TRAPS); 1.11 - void set_virtual( KlassHandle resolved_klass, KlassHandle selected_klass, methodHandle resolved_method, methodHandle selected_method, int vtable_index, TRAPS); 1.12 - void set_handle( methodHandle resolved_method, Handle resolved_appendix, TRAPS); 1.13 - void set_common( KlassHandle resolved_klass, KlassHandle selected_klass, methodHandle resolved_method, methodHandle selected_method, int vtable_index, TRAPS); 1.14 + void set_static( KlassHandle resolved_klass, methodHandle resolved_method , TRAPS); 1.15 + void set_interface(KlassHandle resolved_klass, KlassHandle selected_klass, methodHandle resolved_method, methodHandle selected_method , TRAPS); 1.16 + void set_virtual( KlassHandle resolved_klass, KlassHandle selected_klass, methodHandle resolved_method, methodHandle selected_method, int vtable_index , TRAPS); 1.17 + void set_handle( methodHandle resolved_method, Handle resolved_appendix, Handle resolved_method_type, TRAPS); 1.18 + void set_common( KlassHandle resolved_klass, KlassHandle selected_klass, methodHandle resolved_method, methodHandle selected_method, int vtable_index , TRAPS); 1.19 1.20 friend class LinkResolver; 1.21 1.22 @@ -91,6 +92,7 @@ 1.23 methodHandle resolved_method() const { return _resolved_method; } 1.24 methodHandle selected_method() const { return _selected_method; } 1.25 Handle resolved_appendix() const { return _resolved_appendix; } 1.26 + Handle resolved_method_type() const { return _resolved_method_type; } 1.27 1.28 BasicType result_type() const { return selected_method()->result_type(); } 1.29 bool has_vtable_index() const { return _vtable_index >= 0; } 1.30 @@ -113,7 +115,7 @@ 1.31 static void lookup_instance_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); 1.32 static void lookup_method_in_interfaces (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); 1.33 static void lookup_polymorphic_method (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, 1.34 - KlassHandle current_klass, Handle* appendix_result_or_null, TRAPS); 1.35 + KlassHandle current_klass, Handle *appendix_result_or_null, Handle *method_type_result, TRAPS); 1.36 1.37 static int vtable_index_of_miranda_method(KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); 1.38