OSDN Git Service

original
[gb-231r1-is01/GB_2.3_IS01.git] / cts / tools / dx-tests / src / dxc / junit / opcodes / invokestatic / jm / T_invokestatic_12.j
diff --git a/cts/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.j b/cts/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.j
new file mode 100644 (file)
index 0000000..1b1ab55
--- /dev/null
@@ -0,0 +1,146 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_12.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field static value I
+.field static failed Z
+
+.method static <clinit>()V
+    .limit stack 1
+    iconst_0
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+
+    iconst_0
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.failed Z
+
+    return
+.end method
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+
+    iconst_0
+    istore_1
+
+    Label1:
+    invokestatic dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12/test()V
+
+    iinc 1 1
+
+    iload_1
+    sipush 1000
+    if_icmplt Label1
+
+    return
+
+.end method
+
+
+.method private static synchronized test()V
+    .limit stack 2
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+    iconst_1
+    iadd
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+    istore_0
+
+    invokestatic java/lang/Thread/yield()V
+
+    iload_0
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+    if_icmpeq Label0
+
+    iconst_1
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.failed Z
+
+Label0:
+    return
+.end method
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12
+    dup
+    invokespecial dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:
+    astore_3
+    iconst_0
+    ireturn
+
+Label0:
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+    sipush 2000
+    if_icmpeq Label1
+
+    iconst_0
+    ireturn
+
+Label1:
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.failed Z
+    ifeq Label2
+    iconst_0
+    ireturn
+
+Label2:
+    iconst_1
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method