OSDN Git Service

2006-06-19 Andrew Haley <aph@redhat.com>
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Jun 2006 17:39:16 +0000 (17:39 +0000)
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Jun 2006 17:39:16 +0000 (17:39 +0000)
        * testsuite/libjava.lang/PR27908.out: New.
        * testsuite/libjava.lang/PR27908.java: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114779 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/testsuite/libjava.lang/PR27908.java [new file with mode: 0644]
libjava/testsuite/libjava.lang/PR27908.out [new file with mode: 0644]

index e67b5f8..92ed467 100644 (file)
@@ -1,3 +1,8 @@
+2006-06-19  Andrew Haley  <aph@redhat.com>
+
+       * testsuite/libjava.lang/PR27908.out: New.
+       * testsuite/libjava.lang/PR27908.java: New.
+
 2006-06-19  Keith Seitz  <keiths@redhat.com>
 
        * include/posix-threads.h (_Jv_ThreadDebugSuspend): Declare.
 2006-06-19  Keith Seitz  <keiths@redhat.com>
 
        * include/posix-threads.h (_Jv_ThreadDebugSuspend): Declare.
diff --git a/libjava/testsuite/libjava.lang/PR27908.java b/libjava/testsuite/libjava.lang/PR27908.java
new file mode 100644 (file)
index 0000000..09f9654
--- /dev/null
@@ -0,0 +1,87 @@
+class PR27908
+{
+  public static void main (String[] argv)
+    throws InterruptedException
+  {
+    run1 r1 = new run1();
+    run2 r2 = new run2();
+    run3 r3 = new run3();
+
+    Thread t1, t2, t3;
+
+    (t1 = new Thread (r1)).start();
+    (t2 = new Thread (r2)).start();
+    (t3 = new Thread (r3)).start();
+
+    Thread.yield();
+
+    r1.stop();
+    r2.stop();
+    r3.stop();
+
+    Thread.sleep(5000);
+
+    if (t1.isAlive() || t2.isAlive() || t3.isAlive())
+      {
+       System.out.println ("fail");
+       System.exit(1);
+      }
+  }
+
+  private static class run1 implements Runnable
+  {
+    volatile int counter;
+    volatile boolean running;
+
+    public void run ()
+    {
+      counter = 0;
+      running = true;
+      while (running)
+        counter++;
+    }
+
+    void stop ()
+    {
+      running = false;
+    }
+  }
+
+  private static class run2 implements Runnable
+  {
+    volatile int counter;
+    boolean running;
+
+    public void run ()
+    {
+      counter = 0;
+      running = true;
+      while (running)
+        counter++;
+    }
+
+    void stop ()
+    {
+      running = false;
+    }
+  }
+
+  static class run3 implements Runnable
+  {
+    volatile int counter;
+    private volatile boolean running;
+
+    public void run ()
+    {
+      counter = 0;
+      running = true;
+      while (running)
+        counter++;
+    }
+
+    void stop ()
+    {
+      running = false;
+    }
+  }
+}
diff --git a/libjava/testsuite/libjava.lang/PR27908.out b/libjava/testsuite/libjava.lang/PR27908.out
new file mode 100644 (file)
index 0000000..e69de29