barrier bug -> new hack
authoradash <adash>
Wed, 30 Apr 2008 09:14:02 +0000 (09:14 +0000)
committeradash <adash>
Wed, 30 Apr 2008 09:14:02 +0000 (09:14 +0000)
Robust/src/Benchmarks/Prefetch/Em3d/dsm/Barrier.java

index 482b695aed817e75f39d8229b4ca075bf0bdd922..fda1503f1e6c835619a50178b7e71b82067d7e3e 100644 (file)
@@ -19,7 +19,7 @@ public class Barrier {
 
   public static void enterBarrier(Barrier b) {
     int tmp;
-    boolean retry=true;
+    boolean retry=true, ret1=false, ret2=true;;
 
     do {
       atomic {
@@ -30,21 +30,23 @@ public class Barrier {
             if(b.numthreads > 1)
               b.cleared=true;
             b.entercount--;
-            return;
+            //return;
+            ret1 = true;
           }
           retry=false;
         }
       }
     } while(retry);
-
-    while(true) {
+    if (ret1) return;
+    while(ret2) {
       atomic {
         if (b.cleared) {
           b.entercount--;
           int count = b.entercount;
           if (count==0)
             b.cleared=false;
-          return;
+          //return;
+          ret2=false;
         }
       }
     }