comparison src/share/vm/oops/klassVtable.hpp @ 12264:b2e698d2276c

8014013: CallInfo structure no longer accurately reports the result of a LinkResolver operation Summary: Enhance method resolution and resulting data structures, plus some refactoring. Reviewed-by: twisti, acorn, jrose
author drchase
date Fri, 13 Sep 2013 22:38:02 -0400
parents 69f26e8e09f9
children ac9cb1d5a202
comparison
equal deleted inserted replaced
12261:2c98370f2611 12264:b2e698d2276c
122 InstanceKlass* find_transitive_override(InstanceKlass* initialsuper, methodHandle target_method, int vtable_index, 122 InstanceKlass* find_transitive_override(InstanceKlass* initialsuper, methodHandle target_method, int vtable_index,
123 Handle target_loader, Symbol* target_classname, Thread* THREAD); 123 Handle target_loader, Symbol* target_classname, Thread* THREAD);
124 124
125 // support for miranda methods 125 // support for miranda methods
126 bool is_miranda_entry_at(int i); 126 bool is_miranda_entry_at(int i);
127 void fill_in_mirandas(int* initialized); 127 int fill_in_mirandas(int initialized);
128 static bool is_miranda(Method* m, Array<Method*>* class_methods, Klass* super); 128 static bool is_miranda(Method* m, Array<Method*>* class_methods, Klass* super);
129 static void add_new_mirandas_to_lists( 129 static void add_new_mirandas_to_lists(
130 GrowableArray<Method*>* new_mirandas, 130 GrowableArray<Method*>* new_mirandas,
131 GrowableArray<Method*>* all_mirandas, 131 GrowableArray<Method*>* all_mirandas,
132 Array<Method*>* current_interface_methods, Array<Method*>* class_methods, 132 Array<Method*>* current_interface_methods, Array<Method*>* class_methods,
288 bool check_no_old_or_obsolete_entries(); 288 bool check_no_old_or_obsolete_entries();
289 void dump_itable(); 289 void dump_itable();
290 #endif // INCLUDE_JVMTI 290 #endif // INCLUDE_JVMTI
291 291
292 // Setup of itable 292 // Setup of itable
293 static int assign_itable_indexes_for_interface(Klass* klass);
294 static int method_count_for_interface(Klass* klass);
293 static int compute_itable_size(Array<Klass*>* transitive_interfaces); 295 static int compute_itable_size(Array<Klass*>* transitive_interfaces);
294 static void setup_itable_offset_table(instanceKlassHandle klass); 296 static void setup_itable_offset_table(instanceKlassHandle klass);
295 297
296 // Resolving of method to index 298 // Resolving of method to index
297 static int compute_itable_index(Method* m);
298 // ...and back again:
299 static Method* method_for_itable_index(Klass* klass, int itable_index); 299 static Method* method_for_itable_index(Klass* klass, int itable_index);
300 300
301 // Debugging/Statistics 301 // Debugging/Statistics
302 static void print_statistics() PRODUCT_RETURN; 302 static void print_statistics() PRODUCT_RETURN;
303 private: 303 private: