PatchSet 5778 Date: 2005/01/06 00:04:25 Author: robilad Branch: HEAD Tag: (none) Log: Resynced with GNU Classpath: merged in sleep patch
Members: ChangeLog:1.3322->1.3323 libraries/clib/native/Thread.c:1.22->1.23 libraries/javalib/java/lang/Thread.java:1.51->1.52 libraries/javalib/java/lang/VMThread.java:1.2->1.3 Index: kaffe/ChangeLog diff -u kaffe/ChangeLog:1.3322 kaffe/ChangeLog:1.3323 --- kaffe/ChangeLog:1.3322 Wed Jan 5 23:43:09 2005 +++ kaffe/ChangeLog Thu Jan 6 00:04:25 2005 @@ -1,3 +1,19 @@ +2005-01-06 Dalibor Topic <[EMAIL PROTECTED]> + + * libraries/clib/native/Thread.c (java_lang_VMThread_sleep): + Removed Guilhem's hack since the sleep patch has been merged in + from GNU Classpath. + +2005-01-05 Dalibor Topic <[EMAIL PROTECTED]> + + Resynced with GNU Classpath. + + 2004-12-30 Mark Wielaard <[EMAIL PROTECTED]> + + * java/lang/Thread.java (sleep): Update documentation. Make sure + VMThread.sleep() is never called with zero arguments. + * vm/reference/java/lang/VMThread.java (sleep): Update documentation. + 2005-01-05 Dalibor Topic <[EMAIL PROTECTED]> Resynced with GNU Classpath. Index: kaffe/libraries/clib/native/Thread.c diff -u kaffe/libraries/clib/native/Thread.c:1.22 kaffe/libraries/clib/native/Thread.c:1.23 --- kaffe/libraries/clib/native/Thread.c:1.22 Sun Jan 2 19:03:34 2005 +++ kaffe/libraries/clib/native/Thread.c Thu Jan 6 00:04:26 2005 @@ -82,10 +82,6 @@ { jthread_t cur = KTHREAD(current)(); - /* Temporary hack waiting for the Classpath merge. */ - if (timeout == 0) - return; - if(KTHREAD(interrupted)(cur)) { throwException(InterruptedException); Index: kaffe/libraries/javalib/java/lang/Thread.java diff -u kaffe/libraries/javalib/java/lang/Thread.java:1.51 kaffe/libraries/javalib/java/lang/Thread.java:1.52 --- kaffe/libraries/javalib/java/lang/Thread.java:1.51 Wed Dec 8 07:22:33 2004 +++ kaffe/libraries/javalib/java/lang/Thread.java Thu Jan 6 00:04:27 2005 @@ -769,11 +769,11 @@ * are no guarantees which thread will be next to run, but most VMs will * choose the highest priority thread that has been waiting longest. * - * @param ms the number of milliseconds to sleep, or 0 for forever - * @throws InterruptedException if the Thread is interrupted; it's - * <i>interrupted status</i> will be cleared - * @see #notify() - * @see #wait(long) + * @param ms the number of milliseconds to sleep. + * @throws InterruptedException if the Thread is (or was) interrupted; + * it's <i>interrupted status</i> will be cleared + * @throws IllegalArgumentException if ms is negative + * @see #interrupt() */ public static void sleep(long ms) throws InterruptedException { @@ -785,27 +785,37 @@ * time. The Thread will not lose any locks it has during this time. There * are no guarantees which thread will be next to run, but most VMs will * choose the highest priority thread that has been waiting longest. + * <p> + * Note that 1,000,000 nanoseconds == 1 millisecond, but most VMs + * do not offer that fine a grain of timing resolution. When ms is + * zero and ns is non-zero the Thread will sleep for at least one + * milli second. There is no guarantee that this thread can start up + * immediately when time expires, because some other thread may be + * active. So don't expect real-time performance. * - * <p>Note that 1,000,000 nanoseconds == 1 millisecond, but most VMs do - * not offer that fine a grain of timing resolution. Besides, there is - * no guarantee that this thread can start up immediately when time expires, - * because some other thread may be active. So don't expect real-time - * performance. - * - * @param ms the number of milliseconds to sleep, or 0 for forever + * @param ms the number of milliseconds to sleep * @param ns the number of extra nanoseconds to sleep (0-999999) - * @throws InterruptedException if the Thread is interrupted; it's - * <i>interrupted status</i> will be cleared - * @throws IllegalArgumentException if ns is invalid - * @see #notify() - * @see #wait(long, int) + * @throws InterruptedException if the Thread is (or was) interrupted; + * it's <i>interrupted status</i> will be cleared + * @throws IllegalArgumentException if ms or ns is negative + * or ns is larger than 999999. + * @see #interrupt() */ public static void sleep(long ms, int ns) throws InterruptedException { - if(ms < 0 || ns < 0 || ns > 999999) - throw new IllegalArgumentException(); + if (ms < 0 || ns < 0 || ns > 999999) + throw new IllegalArgumentException(); + + if (ns > 0 && ms == 0) + { + ms = 1; + ns = 0; + } - VMThread.sleep(ms, ns); + if (ms > 0) + VMThread.sleep(ms, ns); + else if (interrupted()) + throw new InterruptedException(); } /** Index: kaffe/libraries/javalib/java/lang/VMThread.java diff -u kaffe/libraries/javalib/java/lang/VMThread.java:1.2 kaffe/libraries/javalib/java/lang/VMThread.java:1.3 --- kaffe/libraries/javalib/java/lang/VMThread.java:1.2 Sun Oct 31 14:35:37 2004 +++ kaffe/libraries/javalib/java/lang/VMThread.java Thu Jan 6 00:04:27 2005 @@ -382,11 +382,10 @@ * because some other thread may be active. So don't expect real-time * performance. * - * @param ms the number of milliseconds to sleep, or 0 for forever + * @param ms the number of milliseconds to sleep. Will be at least 1. * @param ns the number of extra nanoseconds to sleep (0-999999) - * @throws InterruptedException if the Thread is interrupted; it's - * <i>interrupted status</i> will be cleared - * @throws IllegalArgumentException if ns is invalid + * @throws InterruptedException if the Thread is (or was) interrupted; + * it's <i>interrupted status</i> will be cleared */ static native void sleep(long ms, int ns) throws InterruptedException; _______________________________________________ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe