提交 c2c924e3 编写于 作者: D dsamersoff

6989076: JVM crashes in klassItable::initialize_itable_for_interface

Summary: hotspot should check protection attribute besides the name and signature of the method when constructing vtable.
Reviewed-by: dcubed
上级 c489ff91
...@@ -518,18 +518,21 @@ bool klassVtable::is_miranda_entry_at(int i) { ...@@ -518,18 +518,21 @@ bool klassVtable::is_miranda_entry_at(int i) {
bool klassVtable::is_miranda(methodOop m, objArrayOop class_methods, klassOop super) { bool klassVtable::is_miranda(methodOop m, objArrayOop class_methods, klassOop super) {
symbolOop name = m->name(); symbolOop name = m->name();
symbolOop signature = m->signature(); symbolOop signature = m->signature();
if (instanceKlass::find_method(class_methods, name, signature) == NULL) { if (instanceKlass::find_method(class_methods, name, signature) == NULL) {
// did not find it in the method table of the current class // did not find it in the method table of the current class
if (super == NULL) { if (super == NULL) {
// super doesn't exist // super doesn't exist
return true; return true;
} else {
if (instanceKlass::cast(super)->lookup_method(name, signature) == NULL) {
// super class hierarchy does not implement it
return true;
} }
methodOop mo = instanceKlass::cast(super)->lookup_method(name, signature);
if (mo == NULL || mo->access_flags().is_private() ) {
// super class hierarchy does not implement it or protection is different
return true;
} }
} }
return false; return false;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册