changeset 8069:1048edb5434a

Merge
author coleenp
date Tue, 19 Feb 2013 13:33:39 -0500
parents 5cd2fac2ae70 (current diff) 56c364daccc3 (diff)
children 20fff74158eb 1b0dc9f87e75 4c1d8002ffb1
files
diffstat 2 files changed, 14 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/oops/method.hpp	Tue Feb 19 08:51:56 2013 -0500
+++ b/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/src/share/vm/prims/jvmtiRedefineClasses.cpp	Tue Feb 19 08:51:56 2013 -0500
+++ b/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()