hotspot/src/share/vm/interpreter/rewriter.cpp
changeset 30117 cce2cdac56dc
parent 22750 a3c879b18f22
child 30764 fec48bf5a827
--- a/hotspot/src/share/vm/interpreter/rewriter.cpp	Wed Mar 25 15:22:44 2015 +0000
+++ b/hotspot/src/share/vm/interpreter/rewriter.cpp	Wed Mar 25 15:18:37 2015 -0700
@@ -26,6 +26,7 @@
 #include "interpreter/bytecodes.hpp"
 #include "interpreter/interpreter.hpp"
 #include "interpreter/rewriter.hpp"
+#include "memory/metaspaceShared.hpp"
 #include "memory/gcLocker.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/generateOopMap.hpp"
@@ -167,12 +168,12 @@
   if (!reverse) {
     int cp_index = Bytes::get_Java_u2(p);
     if (_pool->tag_at(cp_index).is_interface_method()) {
-    int cache_index = add_invokespecial_cp_cache_entry(cp_index);
-    if (cache_index != (int)(jushort) cache_index) {
-      *invokespecial_error = true;
-    }
-    Bytes::put_native_u2(p, cache_index);
-  } else {
+      int cache_index = add_invokespecial_cp_cache_entry(cp_index);
+      if (cache_index != (int)(jushort) cache_index) {
+        *invokespecial_error = true;
+      }
+      Bytes::put_native_u2(p, cache_index);
+    } else {
       rewrite_member_reference(bcp, offset, reverse);
     }
   } else {
@@ -500,12 +501,14 @@
 }
 
 void Rewriter::rewrite(instanceKlassHandle klass, TRAPS) {
+  if (!DumpSharedSpaces) {
+    assert(!MetaspaceShared::is_in_shared_space(klass()), "archive methods must not be rewritten at run time");
+  }
   ResourceMark rm(THREAD);
   Rewriter     rw(klass, klass->constants(), klass->methods(), CHECK);
   // (That's all, folks.)
 }
 
-
 Rewriter::Rewriter(instanceKlassHandle klass, constantPoolHandle cpool, Array<Method*>* methods, TRAPS)
   : _klass(klass),
     _pool(cpool),