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

Comparing jsr166/src/test/loops/TorusSpanningTree.java (file contents):
Revision 1.8 by jsr166, Tue Mar 15 19:47:06 2011 UTC vs.
Revision 1.9 by dl, Sat Sep 12 20:24:33 2015 UTC

# Line 64 | Line 64 | public class TorusSpanningTree {
64                  }
65                  pool.invoke(new Resetter(graph, 0, graph.length));
66              }
67 +            graph = null;
68              System.out.println();
69          }
70          System.out.println(pool);
# Line 74 | Line 75 | public class TorusSpanningTree {
75          final Node[] neighbors;
76          Node parent;
77          Node next;
77        volatile int mark;
78  
79          Node(Node[] nbrs) {
80              neighbors = nbrs;
81              parent = this;
82          }
83  
84        static final AtomicIntegerFieldUpdater<Node> markUpdater =
85            AtomicIntegerFieldUpdater.newUpdater(Node.class, "mark");
86
87        boolean tryMark() {
88            return mark == 0 && markUpdater.compareAndSet(this, 0, 1);
89        }
90        void setMark() { mark = 1; }
91
84          /*
85           * Traverse the list ("oldList") embedded across .next fields,
86           * starting at this node, placing newly discovered neighboring
# Line 117 | Line 109 | public class TorusSpanningTree {
109                  int nedges = edges.length;
110                  for (int k = 0; k < nedges; ++k) {
111                      Node e = edges[k];
112 <                    if (e != null && e.tryMark()) {
112 >                    if (e != null &&
113 >                        e.compareAndSetForkJoinTaskTag((short)0, (short)1)) {
114                          e.parent = par;
115                          e.next = newList;
116                          newList = e;
# Line 155 | Line 148 | public class TorusSpanningTree {
148              reinitialize();
149              parent = this;
150              next = null;
158            mark = 0;
151          }
152  
153      }
# Line 166 | Line 158 | public class TorusSpanningTree {
158              this.root = root;
159          }
160          public void compute() {
161 <            root.setMark();
161 >            root.setForkJoinTaskTag((short)1);
162              root.fork();
163              helpQuiesce();
164          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines