ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/jsr166y/ForkJoinWorkerThread.java
(Generate patch)

Comparing jsr166/src/jsr166y/ForkJoinWorkerThread.java (file contents):
Revision 1.54 by dl, Wed Nov 17 12:06:46 2010 UTC vs.
Revision 1.57 by dl, Thu Nov 18 00:55:13 2010 UTC

# Line 940 | Line 940 | public class ForkJoinWorkerThread extend
940          UNSAFE.putOrderedObject(this, currentJoinOffset, joinMe);
941          if (isTerminating())                // cancel if shutting down
942              joinMe.cancelIgnoringExceptions();
943 <        else
944 <            pool.awaitJoin(joinMe, this, timed, nanos);
943 >        else {
944 >            if (sp != base)
945 >                localHelpJoinTask(joinMe);
946 >            if (joinMe.status >= 0)
947 >                pool.awaitJoin(joinMe, this, timed, nanos);
948 >        }
949          UNSAFE.putOrderedObject(this, currentJoinOffset, prevJoin);
950      }
951  
# Line 1013 | Line 1017 | public class ForkJoinWorkerThread extend
1017                      if (j < n) {
1018                          ForkJoinTask<?> vs;
1019                          if ((v = ws[j]) != null &&
1020 +                            (v != this || base == sp) &&
1021                              (vs = v.currentSteal) != null) {
1022                              if (joinMe.status < 0 || task.status < 0)
1023                                  return;       // stale or done

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines