Mercurial > hg > truffle
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: |