diff src/share/vm/oops/method.hpp @ 6733:fa6e618671d7

7195867: NPG: SAJDI tests fail with sun.jvm.hotspot.types.WrongTypeException: No suitable match for type Summary: Need to restore the vtable in metadata when we restore the type from the shared archive. Reviewed-by: acorn, jcoomes, jmasa, jrose
author coleenp
date Wed, 05 Sep 2012 20:08:08 -0400
parents da91efe96a93
children 9191895df19d
line wrap: on
line diff
--- a/src/share/vm/oops/method.hpp	Wed Sep 05 10:18:37 2012 -0700
+++ b/src/share/vm/oops/method.hpp	Wed Sep 05 20:08:08 2012 -0400
@@ -168,9 +168,16 @@
                             TRAPS);
 
   Method() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
+
+  // The Method vtable is restored by this call when the Method is in the
+  // shared archive.  See patch_klass_vtables() in metaspaceShared.cpp for
+  // all the gory details.  SA, dtrace and pstack helpers distinguish metadata
+  // by their vtable.
+  void restore_vtable() { guarantee(is_method(), "vtable restored by this call"); }
   bool is_method() const volatile { return true; }
 
   // accessors for instance variables
+
   ConstMethod* constMethod() const             { return _constMethod; }
   void set_constMethod(ConstMethod* xconst)    { _constMethod = xconst; }