提交 0691374d 编写于 作者: A acorn

8030680: 292 cleanup from default method code assessment

Summary: small code improvements for increased robustness
Reviewed-by: acorn, coleenp
Contributed-by: michael.haupt@oracle.com
上级 3685cee0
...@@ -1154,7 +1154,7 @@ inline bool interface_method_needs_itable_index(Method* m) { ...@@ -1154,7 +1154,7 @@ inline bool interface_method_needs_itable_index(Method* m) {
int klassItable::assign_itable_indices_for_interface(Klass* klass) { int klassItable::assign_itable_indices_for_interface(Klass* klass) {
// an interface does not have an itable, but its methods need to be numbered // 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, if (TraceItables) tty->print_cr("%3d: Initializing itable indices for interface %s", ++initialize_count,
klass->name()->as_C_string()); klass->name()->as_C_string());
Array<Method*>* methods = InstanceKlass::cast(klass)->methods(); Array<Method*>* methods = InstanceKlass::cast(klass)->methods();
int nof_methods = methods->length(); int nof_methods = methods->length();
...@@ -1168,7 +1168,7 @@ int klassItable::assign_itable_indices_for_interface(Klass* klass) { ...@@ -1168,7 +1168,7 @@ int klassItable::assign_itable_indices_for_interface(Klass* klass) {
ResourceMark rm; ResourceMark rm;
const char* sig = (m != NULL) ? m->name_and_sig_as_C_string() : "<NULL>"; const char* sig = (m != NULL) ? m->name_and_sig_as_C_string() : "<NULL>";
if (m->has_vtable_index()) { if (m->has_vtable_index()) {
tty->print("itable index %d for method: %s, flags: ", m->vtable_index(), sig); tty->print("vtable index %d for method: %s, flags: ", m->vtable_index(), sig);
} else { } else {
tty->print("itable index %d for method: %s, flags: ", ime_num, sig); tty->print("itable index %d for method: %s, flags: ", ime_num, sig);
} }
...@@ -1204,22 +1204,25 @@ int klassItable::method_count_for_interface(Klass* interf) { ...@@ -1204,22 +1204,25 @@ int klassItable::method_count_for_interface(Klass* interf) {
assert(interf->is_interface(), "must be"); assert(interf->is_interface(), "must be");
Array<Method*>* methods = InstanceKlass::cast(interf)->methods(); Array<Method*>* methods = InstanceKlass::cast(interf)->methods();
int nof_methods = methods->length(); int nof_methods = methods->length();
int length = 0;
while (nof_methods > 0) { while (nof_methods > 0) {
Method* m = methods->at(nof_methods-1); Method* m = methods->at(nof_methods-1);
if (m->has_itable_index()) { if (m->has_itable_index()) {
int length = m->itable_index() + 1; length = m->itable_index() + 1;
#ifdef ASSERT break;
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; nof_methods -= 1;
} }
// no methods have itable indices #ifdef ASSERT
return 0; 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;
} }
......
...@@ -176,7 +176,9 @@ oop MethodHandles::init_MemberName(Handle mname, Handle target) { ...@@ -176,7 +176,9 @@ oop MethodHandles::init_MemberName(Handle mname, Handle target) {
oop MethodHandles::init_method_MemberName(Handle mname, CallInfo& info, bool intern) { oop MethodHandles::init_method_MemberName(Handle mname, CallInfo& info, bool intern) {
assert(info.resolved_appendix().is_null(), "only normal methods here"); assert(info.resolved_appendix().is_null(), "only normal methods here");
methodHandle m = info.resolved_method(); methodHandle m = info.resolved_method();
assert(m.not_null(), "null method handle");
KlassHandle m_klass = m->method_holder(); KlassHandle m_klass = m->method_holder();
assert(m.not_null(), "null holder for method handle");
int flags = (jushort)( m->access_flags().as_short() & JVM_RECOGNIZED_METHOD_MODIFIERS ); int flags = (jushort)( m->access_flags().as_short() & JVM_RECOGNIZED_METHOD_MODIFIERS );
int vmindex = Method::invalid_vtable_index; int vmindex = Method::invalid_vtable_index;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册