95 // If any entry of this vtable points to any of old_methods, |
95 // If any entry of this vtable points to any of old_methods, |
96 // replace it with the corresponding new_method. |
96 // replace it with the corresponding new_method. |
97 // trace_name_printed is set to true if the current call has |
97 // trace_name_printed is set to true if the current call has |
98 // printed the klass name so that other routines in the adjust_* |
98 // printed the klass name so that other routines in the adjust_* |
99 // group don't print the klass name. |
99 // group don't print the klass name. |
|
100 bool adjust_default_method(int vtable_index, Method* old_method, Method* new_method); |
100 void adjust_method_entries(Method** old_methods, Method** new_methods, |
101 void adjust_method_entries(Method** old_methods, Method** new_methods, |
101 int methods_length, bool * trace_name_printed); |
102 int methods_length, bool * trace_name_printed); |
102 bool check_no_old_or_obsolete_entries(); |
103 bool check_no_old_or_obsolete_entries(); |
103 void dump_vtable(); |
104 void dump_vtable(); |
104 #endif // INCLUDE_JVMTI |
105 #endif // INCLUDE_JVMTI |
116 int initialize_from_super(KlassHandle super); |
117 int initialize_from_super(KlassHandle super); |
117 int index_of(Method* m, int len) const; // same as index_of, but search only up to len |
118 int index_of(Method* m, int len) const; // same as index_of, but search only up to len |
118 void put_method_at(Method* m, int index); |
119 void put_method_at(Method* m, int index); |
119 static bool needs_new_vtable_entry(methodHandle m, Klass* super, Handle classloader, Symbol* classname, AccessFlags access_flags, TRAPS); |
120 static bool needs_new_vtable_entry(methodHandle m, Klass* super, Handle classloader, Symbol* classname, AccessFlags access_flags, TRAPS); |
120 |
121 |
121 bool update_inherited_vtable(InstanceKlass* klass, methodHandle target_method, int super_vtable_len, bool checkconstraints, TRAPS); |
122 bool update_inherited_vtable(InstanceKlass* klass, methodHandle target_method, int super_vtable_len, int default_index, bool checkconstraints, TRAPS); |
122 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, |
123 Handle target_loader, Symbol* target_classname, Thread* THREAD); |
124 Handle target_loader, Symbol* target_classname, Thread* THREAD); |
124 |
125 |
125 // support for miranda methods |
126 // support for miranda methods |
126 bool is_miranda_entry_at(int i); |
127 bool is_miranda_entry_at(int i); |
127 int fill_in_mirandas(int initialized); |
128 int fill_in_mirandas(int initialized); |
128 static bool is_miranda(Method* m, Array<Method*>* class_methods, Klass* super); |
129 static bool is_miranda(Method* m, Array<Method*>* class_methods, |
|
130 Array<Method*>* default_methods, Klass* super); |
129 static void add_new_mirandas_to_lists( |
131 static void add_new_mirandas_to_lists( |
130 GrowableArray<Method*>* new_mirandas, |
132 GrowableArray<Method*>* new_mirandas, |
131 GrowableArray<Method*>* all_mirandas, |
133 GrowableArray<Method*>* all_mirandas, |
132 Array<Method*>* current_interface_methods, Array<Method*>* class_methods, |
134 Array<Method*>* current_interface_methods, |
|
135 Array<Method*>* class_methods, |
|
136 Array<Method*>* default_methods, |
133 Klass* super); |
137 Klass* super); |
134 static void get_mirandas( |
138 static void get_mirandas( |
135 GrowableArray<Method*>* new_mirandas, |
139 GrowableArray<Method*>* new_mirandas, |
136 GrowableArray<Method*>* all_mirandas, Klass* super, |
140 GrowableArray<Method*>* all_mirandas, Klass* super, |
137 Array<Method*>* class_methods, Array<Klass*>* local_interfaces); |
141 Array<Method*>* class_methods, |
138 |
142 Array<Method*>* default_methods, |
|
143 Array<Klass*>* local_interfaces); |
139 void verify_against(outputStream* st, klassVtable* vt, int index); |
144 void verify_against(outputStream* st, klassVtable* vt, int index); |
140 inline InstanceKlass* ik() const; |
145 inline InstanceKlass* ik() const; |
141 }; |
146 }; |
142 |
147 |
143 |
148 |