< 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 >