diff --git a/libjava/testsuite/ChangeLog b/libjava/testsuite/ChangeLog index ab77ce9be1b..67e325ce35c 100644 --- a/libjava/testsuite/ChangeLog +++ b/libjava/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2002-03-21 Andrew Haley + + * libjava.lang/Thread_Interrupt.java (Looper.calibrate): New. + (yields): New. + 2002-03-18 Tom Tromey * 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 5412549e713..cb569c827c4 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;