1472N/A * or visit www.oracle.com if you need additional information or have any
1879N/A#include "memory/allocation.hpp"
1879N/A#include "oops/oopsHierarchy.hpp"
1879N/A#include "runtime/handles.hpp"
1879N/A#include "utilities/growableArray.hpp"
0N/A// and arrayKlass. klassVtable objects are used just as convenient transient accessors to the vtable,
0N/Aclass vtableEntry;
2342N/A // CDS/RedefineClasses support - clear vtables so they can be reinitialized
2342N/A void clear_vtable();
2342N/A bool is_initialized();
4185N/A void dump_vtable();
0N/A void oop_follow_contents();
0N/A void oop_adjust_pointers();
0N/A friend class vtableEntry;
2062N/A static bool needs_new_vtable_entry(methodHandle m, klassOop super, Handle classloader, Symbol* classname, AccessFlags access_flags, TRAPS);
652N/A bool update_inherited_vtable(instanceKlass* klass, methodHandle target_method, int super_vtable_len, bool checkconstraints, TRAPS);
652N/A instanceKlass* find_transitive_override(instanceKlass* initialsuper, methodHandle target_method, int vtable_index,
0N/A bool is_miranda_entry_at(int i);
0N/A static void add_new_mirandas_to_list(GrowableArray<methodOop>* list_of_current_mirandas, objArrayOop current_interface_methods, objArrayOop class_methods, klassOop super);
0N/A static void get_mirandas(GrowableArray<methodOop>* mirandas, klassOop super, objArrayOop class_methods, objArrayOop local_interfaces);
0N/A static int get_num_mirandas(klassOop super, objArrayOop class_methods, objArrayOop local_interfaces);
0N/A friend class klassVtable;
0N/Aclass klassItable;
0N/Aclass itableMethodEntry;
0N/A static itableMethodEntry* method_entry(klassOop k, int offset) { return (itableMethodEntry*)(((address)k) + offset); }
0N/A friend class klassItable;
0N/A friend class klassItable;
0N/A void initialize_itable_for_interface(int method_table_offset, KlassHandle interf_h, bool checkconstraints, TRAPS);
0N/A itableOffsetEntry* offset_entry(int i) { assert(0 <= i && i <= _size_offset_table, "index out of bounds");
0N/A itableMethodEntry* method_entry(int i) { assert(0 <= i && i <= _size_method_table, "index out of bounds");
4185N/A void dump_itable();
0N/A void oop_follow_contents();
0N/A void oop_adjust_pointers();
0N/A intptr_t* method_start() const { return vtable_start() + _size_offset_table * itableOffsetEntry::size(); }
0N/A static int calc_itable_size(int num_interfaces, int num_methods) { return (num_interfaces * itableOffsetEntry::size()) + (num_methods * itableMethodEntry::size()); }
0N/A static void update_stats(int size) PRODUCT_RETURN NOT_PRODUCT({ _total_classes++; _total_size += size; })