< prev index next >

src/share/vm/oops/klassVtable.cpp

Print this page
rev 8110 : 8030680: 292 cleanup from default method code assessment

*** 1031,1041 **** return true; } int klassItable::assign_itable_indices_for_interface(Klass* klass) { // an interface does not have an itable, but its methods need to be numbered ! if (TraceItables) tty->print_cr("%3d: Initializing itable for interface %s", ++initialize_count, klass->name()->as_C_string()); Array<Method*>* methods = InstanceKlass::cast(klass)->methods(); int nof_methods = methods->length(); int ime_num = 0; for (int i = 0; i < nof_methods; i++) { --- 1031,1041 ---- return true; } int klassItable::assign_itable_indices_for_interface(Klass* klass) { // an interface does not have an itable, but its methods need to be numbered ! if (TraceItables) tty->print_cr("%3d: Initializing itable indices for interface %s", ++initialize_count, klass->name()->as_C_string()); Array<Method*>* methods = InstanceKlass::cast(klass)->methods(); int nof_methods = methods->length(); int ime_num = 0; for (int i = 0; i < nof_methods; i++) {
*** 1045,1055 **** // If m is already assigned a vtable index, do not disturb it. if (TraceItables && Verbose) { ResourceMark rm; const char* sig = (m != NULL) ? m->name_and_sig_as_C_string() : "<NULL>"; if (m->has_vtable_index()) { ! tty->print("itable index %d for method: %s, flags: ", m->vtable_index(), sig); } else { tty->print("itable index %d for method: %s, flags: ", ime_num, sig); } if (m != NULL) { m->access_flags().print_on(tty); --- 1045,1055 ---- // If m is already assigned a vtable index, do not disturb it. if (TraceItables && Verbose) { ResourceMark rm; const char* sig = (m != NULL) ? m->name_and_sig_as_C_string() : "<NULL>"; if (m->has_vtable_index()) { ! tty->print("vtable index %d for method: %s, flags: ", m->vtable_index(), sig); } else { tty->print("itable index %d for method: %s, flags: ", ime_num, sig); } if (m != NULL) { m->access_flags().print_on(tty);
*** 1077,1102 **** int klassItable::method_count_for_interface(Klass* interf) { assert(interf->oop_is_instance(), "must be"); assert(interf->is_interface(), "must be"); Array<Method*>* methods = InstanceKlass::cast(interf)->methods(); int nof_methods = methods->length(); while (nof_methods > 0) { Method* m = methods->at(nof_methods-1); if (m->has_itable_index()) { ! int length = m->itable_index() + 1; ! #ifdef ASSERT ! while (nof_methods = 0) { ! m = methods->at(--nof_methods); ! assert(!m->has_itable_index() || m->itable_index() < length, ""); ! } ! #endif //ASSERT ! return length; // return the rightmost itable index, plus one } nof_methods -= 1; } ! // no methods have itable indices ! return 0; } void klassItable::initialize_itable_for_interface(int method_table_offset, KlassHandle interf_h, bool checkconstraints, TRAPS) { Array<Method*>* methods = InstanceKlass::cast(interf_h())->methods(); --- 1077,1105 ---- int klassItable::method_count_for_interface(Klass* interf) { assert(interf->oop_is_instance(), "must be"); assert(interf->is_interface(), "must be"); Array<Method*>* methods = InstanceKlass::cast(interf)->methods(); int nof_methods = methods->length(); + int length = 0; while (nof_methods > 0) { Method* m = methods->at(nof_methods-1); if (m->has_itable_index()) { ! length = m->itable_index() + 1; ! break; } nof_methods -= 1; } ! #ifdef ASSERT ! int nof_methods_copy = nof_methods; ! while (nof_methods_copy > 0) { ! Method* mm = methods->at(--nof_methods_copy); ! assert(!mm->has_itable_index() || mm->itable_index() < length, ""); ! } ! #endif //ASSERT ! // return the rightmost itable index, plus one; or 0 if no methods have ! // itable indices ! return length; } void klassItable::initialize_itable_for_interface(int method_table_offset, KlassHandle interf_h, bool checkconstraints, TRAPS) { Array<Method*>* methods = InstanceKlass::cast(interf_h())->methods();
< prev index next >