8009531: Crash when redefining class with annotated method
authorcoleenp
Wed, 17 Apr 2013 12:50:45 -0400
changeset 16924 8a86b4fa429b
parent 16921 e70261f11307
child 16925 e42763b1ea55
8009531: Crash when redefining class with annotated method Summary: Add code to annotated methods and command line flags to the tests to verify bug above Reviewed-by: acorn, sspitsyn, dcubed, dholmes, alanb
jdk/test/java/lang/instrument/RedefineMethodWithAnnotations.sh
jdk/test/java/lang/instrument/RedefineMethodWithAnnotationsTarget.java
jdk/test/java/lang/instrument/RedefineMethodWithAnnotationsTarget_2.java
--- a/jdk/test/java/lang/instrument/RedefineMethodWithAnnotations.sh	Wed Apr 17 16:11:19 2013 +0100
+++ b/jdk/test/java/lang/instrument/RedefineMethodWithAnnotations.sh	Wed Apr 17 12:50:45 2013 -0400
@@ -68,11 +68,12 @@
     RedefineMethodWithAnnotationsAnnotations.java
 
 "${JAVA}" ${TESTVMOPTS} -javaagent:RedefineMethodWithAnnotationsAgent.jar \
+    -XX:+StressLdcRewrite -XX:+IgnoreUnrecognizedVMOptions \
     -cp "${TESTCLASSES}" RedefineMethodWithAnnotationsApp > output.log 2>&1
 cat output.log
 
-MESG="Exception"
-grep "$MESG" output.log
+MESG="Exception|fatal"
+egrep "$MESG" output.log
 result=$?
 if [ "$result" = 0 ]; then
     echo "FAIL: found '$MESG' in the test output"
--- a/jdk/test/java/lang/instrument/RedefineMethodWithAnnotationsTarget.java	Wed Apr 17 16:11:19 2013 +0100
+++ b/jdk/test/java/lang/instrument/RedefineMethodWithAnnotationsTarget.java	Wed Apr 17 12:50:45 2013 -0400
@@ -27,7 +27,13 @@
  */
 public class RedefineMethodWithAnnotationsTarget {
     public void annotatedMethod(@ParameterAnnotation(
-            value = ParameterAnnotation.STRING_VALUE_1) String parameter) { }
+            value = ParameterAnnotation.STRING_VALUE_1) String parameter) {
+        System.out.println("First version of annotatedMethod(String)");
+        System.out.println("parameter is " + parameter);
+    }
     public void annotatedMethod(@ParameterAnnotation(
-            value = ParameterAnnotation.INT_VALUE_1) int parameter) { }
+            value = ParameterAnnotation.INT_VALUE_1) int parameter) {
+        System.out.println("First version of annotatedMethod(int)");
+        System.out.println("parameter is " + parameter);
+    }
 }
--- a/jdk/test/java/lang/instrument/RedefineMethodWithAnnotationsTarget_2.java	Wed Apr 17 16:11:19 2013 +0100
+++ b/jdk/test/java/lang/instrument/RedefineMethodWithAnnotationsTarget_2.java	Wed Apr 17 12:50:45 2013 -0400
@@ -29,7 +29,13 @@
  */
 public class RedefineMethodWithAnnotationsTarget {
     public void annotatedMethod(@ParameterAnnotation(
-            value = ParameterAnnotation.INT_VALUE_2) int parameter) { }
+            value = ParameterAnnotation.INT_VALUE_2) int parameter) {
+        System.out.println("Second version of annotatedMethod(int)");
+        System.out.println("parameter is " + parameter);
+     }
     public void annotatedMethod(@ParameterAnnotation(
-            value = ParameterAnnotation.STRING_VALUE_2) String parameter) { }
+            value = ParameterAnnotation.STRING_VALUE_2) String parameter) {
+        System.out.println("Second version of annotatedMethod(String)");
+        System.out.println("parameter is " + parameter);
+    }
 }