* tests/regression/jasmin/test_verify_fail_backward_with_new_in_local.j:
authoredwin <none@none>
Thu, 14 Sep 2006 21:23:47 +0000 (21:23 +0000)
committeredwin <none@none>
Thu, 14 Sep 2006 21:23:47 +0000 (21:23 +0000)
New test.
* tests/regression/jasmin/test_verify_fail_new_in_local_within_try.j:
Likewise.
* tests/regression/jasmin/test_verify_fail_double_local_index.j:
Likewise.
* tests/regression/jasmin/test_verify_fail_backward_with_new_on_stack.j:
Likewise.

--HG--
branch : unified_variables

tests/regression/jasmin/test_verify_fail_backward_with_new_in_local.j [new file with mode: 0644]
tests/regression/jasmin/test_verify_fail_backward_with_new_on_stack.j [new file with mode: 0644]
tests/regression/jasmin/test_verify_fail_double_local_index.j [new file with mode: 0644]
tests/regression/jasmin/test_verify_fail_new_in_local_within_try.j [new file with mode: 0644]

diff --git a/tests/regression/jasmin/test_verify_fail_backward_with_new_in_local.j b/tests/regression/jasmin/test_verify_fail_backward_with_new_in_local.j
new file mode 100644 (file)
index 0000000..c0acb8b
--- /dev/null
@@ -0,0 +1,38 @@
+.class public test_verify_fail_backward_with_new_in_local
+.super java/lang/Object
+
+; ======================================================================
+
+.method public <init>()V
+   aload_0
+   invokenonvirtual java/lang/Object/<init>()V
+   return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+       .limit stack 2
+       .limit locals 3
+
+       ldc 1
+       istore 1
+
+backward:
+       new test_verify_fail_backward_with_new_in_local
+       astore 2
+
+       iload 1
+       ifeq backward
+       ; ERROR: VerifyError
+
+       aload 2
+       dup
+       invokespecial test_verify_fail_backward_with_new_in_local/<init>()V
+
+       getstatic java/lang/System/out Ljava/io/PrintStream;
+       swap
+       invokevirtual java/io/PrintStream/println(Ljava/lang/Object;)V
+
+       return
+.end method
diff --git a/tests/regression/jasmin/test_verify_fail_backward_with_new_on_stack.j b/tests/regression/jasmin/test_verify_fail_backward_with_new_on_stack.j
new file mode 100644 (file)
index 0000000..f8b78fe
--- /dev/null
@@ -0,0 +1,39 @@
+.class public test_verify_fail_backward_with_new_on_stack
+.super java/lang/Object
+
+; ======================================================================
+
+.method public <init>()V
+   aload_0
+   invokenonvirtual java/lang/Object/<init>()V
+   return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+       .limit stack 2
+       .limit locals 3
+
+       ldc 1
+       istore 1
+
+       aconst_null
+
+backward:
+       pop
+       new test_verify_fail_backward_with_new_in_local
+
+       iload 1
+       ifeq backward
+       ; ERROR: VerifyError
+
+       dup
+       invokespecial test_verify_fail_backward_with_new_in_local/<init>()V
+
+       getstatic java/lang/System/out Ljava/io/PrintStream;
+       swap
+       invokevirtual java/io/PrintStream/println(Ljava/lang/Object;)V
+
+       return
+.end method
diff --git a/tests/regression/jasmin/test_verify_fail_double_local_index.j b/tests/regression/jasmin/test_verify_fail_double_local_index.j
new file mode 100644 (file)
index 0000000..970459e
--- /dev/null
@@ -0,0 +1,35 @@
+.class public test_verify_fail_double_local_index
+.super java/lang/Object
+
+; ======================================================================
+
+.method public <init>()V
+   aload_0
+   invokenonvirtual java/lang/Object/<init>()V
+   return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+       .limit stack 2
+       .limit locals 2
+
+       ldc 42
+       istore 1
+
+       aload 0
+       ifnull force_basic_block_boundary
+
+       ; --------------------------------------------------
+
+       ldc2_w 123.456
+       dstore 1
+       ; ERROR: VerifyError
+
+       ; --------------------------------------------------
+
+force_basic_block_boundary:
+
+       return
+.end method
diff --git a/tests/regression/jasmin/test_verify_fail_new_in_local_within_try.j b/tests/regression/jasmin/test_verify_fail_new_in_local_within_try.j
new file mode 100644 (file)
index 0000000..e8d1a9c
--- /dev/null
@@ -0,0 +1,41 @@
+.class public test_verify_fail_new_in_local_within_try
+.super java/lang/Object
+
+; ======================================================================
+
+.method public <init>()V
+   aload_0
+   invokenonvirtual java/lang/Object/<init>()V
+   return
+.end method
+
+; ======================================================================
+
+.method public static main([Ljava/lang/String;)V
+       .limit stack 2
+       .limit locals 3
+
+       .catch java/lang/Throwable from start_try to end_try using handler
+
+       ldc 1
+       istore 1
+
+       new test_verify_fail_backward_with_new_in_local
+start_try:
+       astore 2
+       ; ERROR: VerifyError
+
+       aload 2
+       dup
+       invokespecial test_verify_fail_backward_with_new_in_local/<init>()V
+end_try:
+
+       getstatic java/lang/System/out Ljava/io/PrintStream;
+       swap
+       invokevirtual java/io/PrintStream/println(Ljava/lang/Object;)V
+
+       return
+
+handler:
+       return
+.end method