8145247: incorrect comment in SystemDictionary::load_shared_class
authoriklam
Fri, 27 May 2016 05:49:24 -0700
changeset 38709 835ea8e8b295
parent 38708 8c27a4f8b242
child 38718 b42f325b8f7b
child 38720 66e7dd14b815
child 38722 44a8f6937d89
child 38724 233779eeb7f6
8145247: incorrect comment in SystemDictionary::load_shared_class Reviewed-by: jiangli, ccheung, gtriantafill
hotspot/src/share/vm/classfile/systemDictionary.cpp
--- a/hotspot/src/share/vm/classfile/systemDictionary.cpp	Thu May 26 20:43:13 2016 -0400
+++ b/hotspot/src/share/vm/classfile/systemDictionary.cpp	Fri May 27 05:49:24 2016 -0700
@@ -1336,9 +1336,12 @@
       return nh;
     }
 
-    // Found the class, now load the superclass and interfaces.  If they
-    // are shared, add them to the main system dictionary and reset
-    // their hierarchy references (supers, subs, and interfaces).
+    // Resolve the superclass and interfaces. They must be the same
+    // as in dump time, because the layout of <ik> depends on
+    // the specific layout of ik->super() and ik->local_interfaces().
+    //
+    // If unexpected superclass or interfaces are found, we cannot
+    // load <ik> from the shared archive.
 
     if (ik->super() != NULL) {
       Symbol*  cn = ik->super()->name();
@@ -1348,6 +1351,8 @@
         // The dynamically resolved super class is not the same as the one we used during dump time,
         // so we cannot use ik.
         return nh;
+      } else {
+        assert(s->is_shared(), "must be");
       }
     }
 
@@ -1366,6 +1371,8 @@
         // The dynamically resolved interface class is not the same as the one we used during dump time,
         // so we cannot use ik.
         return nh;
+      } else {
+        assert(i->is_shared(), "must be");
       }
     }