diff src/share/vm/oops/klassVtable.cpp @ 17478:e254e5940c19

Merge
author kizune
date Thu, 05 Dec 2013 16:37:29 +0400
parents 9d15b81d5d1b
children 379f11bc04fc
line wrap: on
line diff
--- a/src/share/vm/oops/klassVtable.cpp	Tue Dec 03 14:13:06 2013 +0400
+++ b/src/share/vm/oops/klassVtable.cpp	Thu Dec 05 16:37:29 2013 +0400
@@ -1076,7 +1076,12 @@
       LinkResolver::lookup_instance_method_in_klasses(target, _klass, m->name(), m->signature(), CHECK);
     }
     if (target == NULL || !target->is_public() || target->is_abstract()) {
-      // Entry do not resolve. Leave it empty
+      // Entry does not resolve. Leave it empty for AbstractMethodError.
+        if (!(target == NULL) && !target->is_public()) {
+          // Stuff an IllegalAccessError throwing method in there instead.
+          itableOffsetEntry::method_entry(_klass(), method_table_offset)[m->itable_index()].
+              initialize(Universe::throw_illegal_access_error());
+        }
     } else {
       // Entry did resolve, check loader constraints before initializing
       // if checkconstraints requested