* test/regression/jasmin/test_verify_ok_jsr_subroutine_loops_to_start.j:
authoredwin <none@none>
Sun, 8 Oct 2006 22:49:42 +0000 (22:49 +0000)
committeredwin <none@none>
Sun, 8 Oct 2006 22:49:42 +0000 (22:49 +0000)
New test.

* test/regression/jasmin/test.j: Small cleanup.

* test/regression/jasmin/Makefile.am: Added new test.

tests/regression/jasmin/Makefile.am
tests/regression/jasmin/test.j
tests/regression/jasmin/test_verify_ok_jsr_subroutine_loops_to_start.j [new file with mode: 0644]

index 357ed544ea3d2af91ac6a492c9200522a70bdc04..cb0d1cd04ff76f6ff488c16e2c8fd26741a2e23e 100644 (file)
@@ -90,6 +90,7 @@ JASMIN_TESTS = \
        $(srcdir)/test_verify_ok_jsr_multiple_blocks.j \
        $(srcdir)/test_verify_ok_jsr_pop.j \
        $(srcdir)/test_verify_ok_jsr_push.j \
+       $(srcdir)/test_verify_ok_jsr_subroutine_loops_to_start.j \
        $(srcdir)/test_verify_ok_jsr_swap.j \
        $(srcdir)/test_verify_ok_jsr_through_variable.j \
        $(srcdir)/test_verify_ok_overwrite_local_type.j \
index b788921db749f46a60187dafc85d70b4af8ef411..83c104cd5e8ff79c0884262c150b44db3cdf4b18 100644 (file)
@@ -11,7 +11,7 @@
 
 ; ======================================================================
 
-.method public static checkI(I)V
+.method public static check(I)V
        .limit locals 1
        .limit stack 10
        getstatic java/lang/System/out Ljava/io/PrintStream;
@@ -39,7 +39,7 @@
 force_basic_block_boundary:
 
        iload 1
-       invokestatic test/checkI(I)V
+       invokestatic test/check(I)V
        ; OUTPUT: 35
 
        return
diff --git a/tests/regression/jasmin/test_verify_ok_jsr_subroutine_loops_to_start.j b/tests/regression/jasmin/test_verify_ok_jsr_subroutine_loops_to_start.j
new file mode 100644 (file)
index 0000000..2cae491
--- /dev/null
@@ -0,0 +1,71 @@
+.class public test_verify_ok_jsr_subroutine_loops_to_start
+.super java/lang/Object
+
+; ======================================================================
+
+.method public <init>()V
+   aload_0
+   invokenonvirtual java/lang/Object/<init>()V
+   return
+.end method
+
+; ======================================================================
+
+.method public static check(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
+
+       iconst_0
+       istore 1
+
+       aload 0
+       ifnull force_basic_block_boundary
+
+       ; --------------------------------------------------
+
+       jsr sbr_1
+       ; OUTPUT: 111
+       ; OUTPUT: 222
+
+       ; --------------------------------------------------
+
+force_basic_block_boundary:
+
+       iload 1
+       invokestatic test_verify_ok_jsr_subroutine_loops_to_start/check(I)V
+       ; OUTPUT: 1
+
+       return
+
+sbr_1:
+       dup
+       astore 2
+
+       iload 1
+       ifeq first_time
+
+second_time:
+       pop
+       ldc 222
+       invokestatic test_verify_ok_jsr_subroutine_loops_to_start/check(I)V
+       ret 2
+
+first_time:
+       ldc 111
+       invokestatic test_verify_ok_jsr_subroutine_loops_to_start/check(I)V
+       iinc 1 1
+       goto sbr_1
+
+.end method
+