* tests/threads/threadInterrupt.java: Added brief comment explaining the
authorStefan Ring <stefan@complang.tuwien.ac.at>
Wed, 30 Apr 2008 18:30:36 +0000 (20:30 +0200)
committerStefan Ring <stefan@complang.tuwien.ac.at>
Wed, 30 Apr 2008 18:30:36 +0000 (20:30 +0200)
purpose of this test.
* tests/threads/waitAndInterrupt.java: Likewise.

src/vm/jit/i386/machine-instr.h
src/vmcore/linker.c
tests/threads/threadInterrupt.java
tests/threads/waitAndInterrupt.java

index 1499e961fffae64cf15b5e6646eaee7f8c6e586f..eb3706400b12dc4d862508887838a0737718e161 100644 (file)
@@ -16,6 +16,6 @@ compare_and_swap (volatile long *p, long oldval, long newval)
 #define STORE_ORDER_BARRIER() __asm__ __volatile__ ("" : : : "memory");
 #define MEMORY_BARRIER_AFTER_ATOMIC() /* nothing */
 #define MEMORY_BARRIER() __asm__ __volatile__ ( \
-               "lock; add $0, 0(%%esp)" : : : "memory" );
+               "mfence" : : : "memory" );
 
 #endif
index e8b985aad4891065d335bea85195f6081964781d..3468558c9aafb8c3e109ca06536955c6028e45c9 100644 (file)
@@ -1214,6 +1214,7 @@ static void linker_compute_class_values(classinfo *c)
 {
        classinfo *subs;
 
+       /*printf("computing class %s\n", c->name->text);*/
        c->vftbl->baseval = ++classvalue;
 
        subs = c->sub;
index ef4108379a40ca8429d533fbe9c37a07ad0b1e53..cbff1131798d5c6163776b979c34f04e7e1f6d9c 100644 (file)
@@ -1,3 +1,10 @@
+// This test has been added because of a bug in CACAO that allowed threads
+// blocked inside monitorenter to be interrupted. In the presence of the bug,
+// the program would not exit.
+//
+// The bug has been fixed as part of the sable lock implementation.
+// hg revision 2988182011bb ff (Wed Feb 06 18:46:34 2008 +0100)
+
 public class threadInterrupt {
        public static class firstthread implements Runnable {
                private threadInterrupt s;
index 2f68b7558923f978d2fb58c1ad905cc61e7379f7..6a1ac0bdeb7632a64d21e4ecb8a2cbaca5a2aa7e 100644 (file)
@@ -1,3 +1,6 @@
+// This should run forever. If it stops, that's a good indication for a bug in
+// the VM.
+//
 // This test grew a bit more elaborate than anticipated...
 // It verifies that the JVM handles properly the case of a thread being
 // interrupted and notified at the same time.