comparison src/share/vm/oops/klassVtable.hpp @ 2342:8ce625481709

7032407: Crash in LinkResolver::runtime_resolve_virtual_method() Summary: Make CDS reorder vtables so that dump time vtables match run time order, so when redefine classes reinitializes them, they aren't in the wrong order. Reviewed-by: dcubed, acorn
author coleenp
date Fri, 15 Apr 2011 09:36:28 -0400
parents e5383553fd4e
children da91efe96a93
comparison
equal deleted inserted replaced
8:2d20d1610eb5 9:52dbeb06c412
73 int index_of(methodOop m) const { return index_of(m, _length); } 73 int index_of(methodOop m) const { return index_of(m, _length); }
74 int index_of_miranda(Symbol* name, Symbol* signature); 74 int index_of_miranda(Symbol* name, Symbol* signature);
75 75
76 void initialize_vtable(bool checkconstraints, TRAPS); // initialize vtable of a new klass 76 void initialize_vtable(bool checkconstraints, TRAPS); // initialize vtable of a new klass
77 77
78 // conputes vtable length (in words) and the number of miranda methods 78 // CDS/RedefineClasses support - clear vtables so they can be reinitialized
79 // at dump time. Clearing gives us an easy way to tell if the vtable has
80 // already been reinitialized at dump time (see dump.cpp). Vtables can
81 // be initialized at run time by RedefineClasses so dumping the right order
82 // is necessary.
83 void clear_vtable();
84 bool is_initialized();
85
86 // computes vtable length (in words) and the number of miranda methods
79 static void compute_vtable_size_and_num_mirandas(int &vtable_length, int &num_miranda_methods, 87 static void compute_vtable_size_and_num_mirandas(int &vtable_length, int &num_miranda_methods,
80 klassOop super, objArrayOop methods, 88 klassOop super, objArrayOop methods,
81 AccessFlags class_flags, Handle classloader, 89 AccessFlags class_flags, Handle classloader,
82 Symbol* classname, objArrayOop local_interfaces, 90 Symbol* classname, objArrayOop local_interfaces,
83 TRAPS); 91 TRAPS);