Mercurial > hg > graal-jvmci-8
comparison src/share/vm/oops/klassVtable.hpp @ 6934:4735d2c84362
7200776: Implement default methods in interfaces
Summary: Add generic type analysis and default method selection algorithms
Reviewed-by: coleenp, acorn
author | kamg |
---|---|
date | Thu, 11 Oct 2012 12:25:42 -0400 |
parents | d8ce2825b193 |
children | 8d9fc28831cc |
comparison
equal
deleted
inserted
replaced
6921:a1b8cf9cf970 | 6934:4735d2c84362 |
---|---|
82 // is necessary. | 82 // is necessary. |
83 void clear_vtable(); | 83 void clear_vtable(); |
84 bool is_initialized(); | 84 bool is_initialized(); |
85 | 85 |
86 // computes vtable length (in words) and the number of miranda methods | 86 // computes vtable length (in words) and the number of miranda methods |
87 static void compute_vtable_size_and_num_mirandas(int &vtable_length, int &num_miranda_methods, | 87 static void compute_vtable_size_and_num_mirandas( |
88 Klass* super, Array<Method*>* methods, | 88 int* vtable_length, int* num_new_mirandas, |
89 AccessFlags class_flags, Handle classloader, | 89 GrowableArray<Method*>* all_mirandas, Klass* super, |
90 Symbol* classname, Array<Klass*>* local_interfaces, | 90 Array<Method*>* methods, AccessFlags class_flags, Handle classloader, |
91 TRAPS); | 91 Symbol* classname, Array<Klass*>* local_interfaces, TRAPS); |
92 | 92 |
93 // RedefineClasses() API support: | 93 // RedefineClasses() API support: |
94 // If any entry of this vtable points to any of old_methods, | 94 // If any entry of this vtable points to any of old_methods, |
95 // replace it with the corresponding new_method. | 95 // replace it with the corresponding new_method. |
96 // trace_name_printed is set to true if the current call has | 96 // trace_name_printed is set to true if the current call has |
123 InstanceKlass* find_transitive_override(InstanceKlass* initialsuper, methodHandle target_method, int vtable_index, | 123 InstanceKlass* find_transitive_override(InstanceKlass* initialsuper, methodHandle target_method, int vtable_index, |
124 Handle target_loader, Symbol* target_classname, Thread* THREAD); | 124 Handle target_loader, Symbol* target_classname, Thread* THREAD); |
125 | 125 |
126 // support for miranda methods | 126 // support for miranda methods |
127 bool is_miranda_entry_at(int i); | 127 bool is_miranda_entry_at(int i); |
128 void fill_in_mirandas(int& initialized); | 128 void fill_in_mirandas(int* initialized); |
129 static bool is_miranda(Method* m, Array<Method*>* class_methods, Klass* super); | 129 static bool is_miranda(Method* m, Array<Method*>* class_methods, Klass* super); |
130 static void add_new_mirandas_to_list(GrowableArray<Method*>* list_of_current_mirandas, Array<Method*>* current_interface_methods, Array<Method*>* class_methods, Klass* super); | 130 static void add_new_mirandas_to_lists( |
131 static void get_mirandas(GrowableArray<Method*>* mirandas, Klass* super, Array<Method*>* class_methods, Array<Klass*>* local_interfaces); | 131 GrowableArray<Method*>* new_mirandas, |
132 static int get_num_mirandas(Klass* super, Array<Method*>* class_methods, Array<Klass*>* local_interfaces); | 132 GrowableArray<Method*>* all_mirandas, |
133 | 133 Array<Method*>* current_interface_methods, Array<Method*>* class_methods, |
134 Klass* super); | |
135 static void get_mirandas( | |
136 GrowableArray<Method*>* new_mirandas, | |
137 GrowableArray<Method*>* all_mirandas, Klass* super, | |
138 Array<Method*>* class_methods, Array<Klass*>* local_interfaces); | |
134 | 139 |
135 void verify_against(outputStream* st, klassVtable* vt, int index); | 140 void verify_against(outputStream* st, klassVtable* vt, int index); |
136 inline InstanceKlass* ik() const; | 141 inline InstanceKlass* ik() const; |
137 }; | 142 }; |
138 | 143 |