From ed2902b3d94f4cb37db91de27615ff98553a18d9 Mon Sep 17 00:00:00 2001 From: edwin Date: Sun, 10 Sep 2006 13:45:56 +0000 Subject: [PATCH] * tests/regression/jasmin/runtest: Delete temporary files. * tests/regression/jasmin/test_verify_ok_jsr.j: New test. * tests/regression/jasmin/test_verify_ok_jsr_multiple_blocks.j: New test. * tests/regression/jasmin/test_verify_fail_ret_bad_type.j: New test. --HG-- branch : unified_variables --- tests/regression/jasmin/runtest | 2 +- .../jasmin/test_verify_fail_ret_bad_type.j | 55 ++++++++++++++ tests/regression/jasmin/test_verify_ok_jsr.j | 55 ++++++++++++++ .../test_verify_ok_jsr_multiple_blocks.j | 72 +++++++++++++++++++ 4 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 tests/regression/jasmin/test_verify_fail_ret_bad_type.j create mode 100644 tests/regression/jasmin/test_verify_ok_jsr.j create mode 100644 tests/regression/jasmin/test_verify_ok_jsr_multiple_blocks.j diff --git a/tests/regression/jasmin/runtest b/tests/regression/jasmin/runtest index d00188ffa..47c79bc81 100755 --- a/tests/regression/jasmin/runtest +++ b/tests/regression/jasmin/runtest @@ -70,7 +70,7 @@ do shift done -#rm -f "$TESTOUT" "$TESTEXPECT" "$TESTLOG" +rm -f "$TESTOUT" "$TESTEXPECT" "$TESTLOG" "$TESTERR" exit $EXITCODE diff --git a/tests/regression/jasmin/test_verify_fail_ret_bad_type.j b/tests/regression/jasmin/test_verify_fail_ret_bad_type.j new file mode 100644 index 000000000..228d1ea9b --- /dev/null +++ b/tests/regression/jasmin/test_verify_fail_ret_bad_type.j @@ -0,0 +1,55 @@ +.class public test_verify_fail_ret_bad_type +.super java/lang/Object + +; ====================================================================== + +.method public ()V + aload_0 + invokenonvirtual java/lang/Object/()V + return +.end method + +; ====================================================================== + +.method public static checkI(I)V + .limit locals 1 + .limit stack 10 + getstatic java/lang/System/out Ljava/io/PrintStream; + iload_0 + invokevirtual java/io/PrintStream/println(I)V + return +.end method + +; ====================================================================== + +.method public static main([Ljava/lang/String;)V + .limit stack 2 + .limit locals 3 + + ldc 35 + istore 1 + + aload 0 + ifnull force_basic_block_boundary + + ; -------------------------------------------------- + + jsr sbr_1 + + ; -------------------------------------------------- + +force_basic_block_boundary: + + iload 1 + invokestatic test_verify_fail_jsr_ret_type/checkI(I)V + + return + +sbr_1: + pop + ldc "string" + astore 2 + ret 2 + ; ERROR: VerifyError.*RET with non-returnAddress + +.end method diff --git a/tests/regression/jasmin/test_verify_ok_jsr.j b/tests/regression/jasmin/test_verify_ok_jsr.j new file mode 100644 index 000000000..b6bc9136c --- /dev/null +++ b/tests/regression/jasmin/test_verify_ok_jsr.j @@ -0,0 +1,55 @@ +.class public test_verify_ok_jsr +.super java/lang/Object + +; ====================================================================== + +.method public ()V + aload_0 + invokenonvirtual java/lang/Object/()V + return +.end method + +; ====================================================================== + +.method public static checkI(I)V + .limit locals 1 + .limit stack 10 + getstatic java/lang/System/out Ljava/io/PrintStream; + iload_0 + invokevirtual java/io/PrintStream/println(I)V + return +.end method + +; ====================================================================== + +.method public static main([Ljava/lang/String;)V + .limit stack 2 + .limit locals 3 + + ldc 35 + istore 1 + + aload 0 + ifnull force_basic_block_boundary + + ; -------------------------------------------------- + + jsr sbr_1 + + ; -------------------------------------------------- + +force_basic_block_boundary: + + iload 1 + invokestatic test_verify_ok_jsr/checkI(I)V + ; OUTPUT: 777 + + return + +sbr_1: + astore 2 + ldc 777 + istore 1 + ret 2 + +.end method diff --git a/tests/regression/jasmin/test_verify_ok_jsr_multiple_blocks.j b/tests/regression/jasmin/test_verify_ok_jsr_multiple_blocks.j new file mode 100644 index 000000000..0485187a0 --- /dev/null +++ b/tests/regression/jasmin/test_verify_ok_jsr_multiple_blocks.j @@ -0,0 +1,72 @@ +.class public test_verify_ok_jsr_multiple_blocks +.super java/lang/Object + +; ====================================================================== + +.method public ()V + aload_0 + invokenonvirtual java/lang/Object/()V + return +.end method + +; ====================================================================== + +.method public static checkI(I)V + .limit locals 1 + .limit stack 10 + getstatic java/lang/System/out Ljava/io/PrintStream; + iload_0 + invokevirtual java/io/PrintStream/println(I)V + return +.end method + +; ====================================================================== + +.method public static main([Ljava/lang/String;)V + .limit stack 2 + .limit locals 3 + + ldc 35 + istore 1 + + aload 0 + ifnull force_basic_block_boundary + + ; -------------------------------------------------- + + jsr sbr_1 + iload 1 + invokestatic test_verify_ok_jsr_multiple_blocks/checkI(I)V + ; OUTPUT: 888 + + ldc -4 + istore 1 + jsr sbr_1 + iload 1 + invokestatic test_verify_ok_jsr_multiple_blocks/checkI(I)V + ; OUTPUT: 777 + + ; -------------------------------------------------- + +force_basic_block_boundary: + + + return + +sbr_1: + astore 2 + + iload 1 + ifge sbr_1_ge + + ldc 777 + goto sbr_1_join + +sbr_1_ge: + ldc 888 + +sbr_1_join: + istore 1 + ret 2 + +.end method -- 2.25.1