aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Haley <aph@redhat.com>2002-03-22 11:18:03 +0000
committerAndrew Haley <aph@gcc.gnu.org>2002-03-22 11:18:03 +0000
commitf42f14a9ca641bc4c9bdd030b6dd1f31047bb54e (patch)
tree64c8ede1ff05df0b5d95656e77555205adaafdc0
parent0a2ed1f101ae61e97e3e652dde6a537ecb4a267c (diff)
downloadgcc-f42f14a9ca641bc4c9bdd030b6dd1f31047bb54e.zip
gcc-f42f14a9ca641bc4c9bdd030b6dd1f31047bb54e.tar.gz
gcc-f42f14a9ca641bc4c9bdd030b6dd1f31047bb54e.tar.bz2
Thread_Interrupt.java (Looper.calibrate): New.
2002-03-21 Andrew Haley <aph@redhat.com> * libjava.lang/Thread_Interrupt.java (Looper.calibrate): New. (yields): New. From-SVN: r51169
-rw-r--r--libjava/testsuite/ChangeLog5
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Interrupt.java23
2 files changed, 27 insertions, 1 deletions
diff --git a/libjava/testsuite/ChangeLog b/libjava/testsuite/ChangeLog
index ab77ce9..67e325c 100644
--- a/libjava/testsuite/ChangeLog
+++ b/libjava/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2002-03-21 Andrew Haley <aph@redhat.com>
+
+ * libjava.lang/Thread_Interrupt.java (Looper.calibrate): New.
+ (yields): New.
+
2002-03-18 Tom Tromey <tromey@redhat.com>
* libjava.jni/jni.exp (gcj_jni_test_one): Find libstdc++ in build
diff --git a/libjava/testsuite/libjava.lang/Thread_Interrupt.java b/libjava/testsuite/libjava.lang/Thread_Interrupt.java
index 5412549..cb569c8 100644
--- a/libjava/testsuite/libjava.lang/Thread_Interrupt.java
+++ b/libjava/testsuite/libjava.lang/Thread_Interrupt.java
@@ -44,12 +44,33 @@ class Sleeper extends Thread
class Looper extends Thread
{
+ // Return the number of Thread.yield()s we can do in 500ms.
+ static long calibrate ()
+ {
+ long i = 1;
+
+ for (int tries = 0; tries < 40; tries++)
+ {
+ long t = System.currentTimeMillis();
+ for (long n = 0; n < i; n++)
+ Thread.yield();
+ long t_prime = System.currentTimeMillis();
+ if (t_prime - t > 500)
+ return i;
+ i *= 2;
+ }
+ // We have no system clock. Give up.
+ throw new RuntimeException ("We have no system clock.");
+ }
+
+ static long yields = calibrate ();
+
public void run()
{
System.out.println ("Busy waiting");
int count = 0;
- for (int i=0; i < 1000000; i++)
+ for (long i=0; i < yields; i++)
{
Thread.yield();
count += 5;