Merge
authorcoleenp
Tue, 19 Feb 2013 13:33:39 -0500
changeset 15745 fc43fd9458ce
parent 15743 f708934a12e7 (current diff)
parent 15744 fd58c7e770b3 (diff)
child 15746 27b079111563
child 15793 4867678e3517
child 15794 af92b7196818
Merge
--- a/hotspot/src/share/vm/oops/method.hpp	Tue Feb 19 08:51:56 2013 -0500
+++ b/hotspot/src/share/vm/oops/method.hpp	Tue Feb 19 13:33:39 2013 -0500
@@ -456,6 +456,8 @@
   void print_codes_on(int from, int to, outputStream* st) const    PRODUCT_RETURN;
 
   // method parameters
+  bool has_method_parameters() const
+                         { return constMethod()->has_method_parameters(); }
   int method_parameters_length() const
                          { return constMethod()->method_parameters_length(); }
   MethodParametersElement* method_parameters_start() const
--- a/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp	Tue Feb 19 08:51:56 2013 -0500
+++ b/hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp	Tue Feb 19 13:33:39 2013 -0500
@@ -1558,6 +1558,18 @@
       } break;
     }
   } // end for each bytecode
+
+  // We also need to rewrite the parameter name indexes, if there is
+  // method parameter data present
+  if(method->has_method_parameters()) {
+    const int len = method->method_parameters_length();
+    MethodParametersElement* elem = method->method_parameters_start();
+
+    for (int i = 0; i < len; i++) {
+      const u2 cp_index = elem[i].name_cp_index;
+      elem[i].name_cp_index = find_new_index(cp_index);
+    }
+  }
 } // end rewrite_cp_refs_in_method()