< prev index next >
src/hotspot/share/oops/klassVtable.cpp
Print this page
*** 94,111 ****
// This includes miranda methods and during later processing, default methods
if (!class_flags.is_interface()) {
vtable_length += *num_new_mirandas * vtableEntry::size();
}
! if (Universe::is_bootstrapping() && vtable_length == 0 && classname != vmSymbols::java_lang____Value()) {
// array classes don't have their superclass set correctly during
// bootstrapping
vtable_length = Universe::base_vtable_size();
}
! if (super == NULL && vtable_length != Universe::base_vtable_size()
! && !class_flags.is_value_type()) {
if (Universe::is_bootstrapping()) {
// Someone is attempting to override java.lang.Object incorrectly on the
// bootclasspath. The JVM cannot recover from this error including throwing
// an exception
vm_exit_during_initialization("Incompatible definition of java.lang.Object");
--- 94,110 ----
// This includes miranda methods and during later processing, default methods
if (!class_flags.is_interface()) {
vtable_length += *num_new_mirandas * vtableEntry::size();
}
! if (Universe::is_bootstrapping() && vtable_length == 0) {
// array classes don't have their superclass set correctly during
// bootstrapping
vtable_length = Universe::base_vtable_size();
}
! if (super == NULL && vtable_length != Universe::base_vtable_size()) {
if (Universe::is_bootstrapping()) {
// Someone is attempting to override java.lang.Object incorrectly on the
// bootclasspath. The JVM cannot recover from this error including throwing
// an exception
vm_exit_during_initialization("Incompatible definition of java.lang.Object");
*** 117,128 ****
// the exception occur.
vtable_length = Universe::base_vtable_size();
}
}
assert(vtable_length % vtableEntry::size() == 0, "bad vtable length");
! assert(vtable_length >= Universe::base_vtable_size()
! || class_flags.is_value_type(), "vtable too small");
*vtable_length_ret = vtable_length;
}
int klassVtable::index_of(Method* m, int len) const {
--- 116,126 ----
// the exception occur.
vtable_length = Universe::base_vtable_size();
}
}
assert(vtable_length % vtableEntry::size() == 0, "bad vtable length");
! assert(vtable_length >= Universe::base_vtable_size(), "vtable too small");
*vtable_length_ret = vtable_length;
}
int klassVtable::index_of(Method* m, int len) const {
< prev index next >