60 |
|
* |
61 |
|
* As usual for this sort of utility, there are 4 versions, that |
62 |
|
* are simple copy/paste/adapt variants of each other. (The |
63 |
< |
* double and int versions differ from long version soley by |
63 |
> |
* double and int versions differ from long version solely by |
64 |
|
* replacing "long" (with case-matching)). |
65 |
|
*/ |
66 |
|
|
73 |
|
static final int MIN_PARTITION = 16; |
74 |
|
|
75 |
|
static final class CumulateTask<T> extends CountedCompleter<Void> { |
76 |
+ |
static final long serialVersionUID = 5293554502939613543L; |
77 |
|
final T[] array; |
78 |
|
final BinaryOperator<T> function; |
79 |
|
CumulateTask<T> left, right; |
159 |
|
for (int b;;) { |
160 |
|
if (((b = t.getPendingCount()) & FINISHED) != 0) |
161 |
|
break outer; // already done |
162 |
< |
state = ((b & CUMULATE) != 0? FINISHED : |
162 |
> |
state = ((b & CUMULATE) != 0 ? FINISHED : |
163 |
|
(l > org) ? SUMMED : (SUMMED|FINISHED)); |
164 |
|
if (t.compareAndSetPendingCount(b, b|state)) |
165 |
|
break; |
223 |
|
} |
224 |
|
|
225 |
|
static final class LongCumulateTask extends CountedCompleter<Void> { |
226 |
+ |
static final long serialVersionUID = -5074099945909284273L; |
227 |
|
final long[] array; |
228 |
|
final LongBinaryOperator function; |
229 |
|
LongCumulateTask left, right; |
309 |
|
for (int b;;) { |
310 |
|
if (((b = t.getPendingCount()) & FINISHED) != 0) |
311 |
|
break outer; // already done |
312 |
< |
state = ((b & CUMULATE) != 0? FINISHED : |
312 |
> |
state = ((b & CUMULATE) != 0 ? FINISHED : |
313 |
|
(l > org) ? SUMMED : (SUMMED|FINISHED)); |
314 |
|
if (t.compareAndSetPendingCount(b, b|state)) |
315 |
|
break; |
373 |
|
} |
374 |
|
|
375 |
|
static final class DoubleCumulateTask extends CountedCompleter<Void> { |
376 |
+ |
static final long serialVersionUID = -586947823794232033L; |
377 |
|
final double[] array; |
378 |
|
final DoubleBinaryOperator function; |
379 |
|
DoubleCumulateTask left, right; |
459 |
|
for (int b;;) { |
460 |
|
if (((b = t.getPendingCount()) & FINISHED) != 0) |
461 |
|
break outer; // already done |
462 |
< |
state = ((b & CUMULATE) != 0? FINISHED : |
462 |
> |
state = ((b & CUMULATE) != 0 ? FINISHED : |
463 |
|
(l > org) ? SUMMED : (SUMMED|FINISHED)); |
464 |
|
if (t.compareAndSetPendingCount(b, b|state)) |
465 |
|
break; |
523 |
|
} |
524 |
|
|
525 |
|
static final class IntCumulateTask extends CountedCompleter<Void> { |
526 |
+ |
static final long serialVersionUID = 3731755594596840961L; |
527 |
|
final int[] array; |
528 |
|
final IntBinaryOperator function; |
529 |
|
IntCumulateTask left, right; |
609 |
|
for (int b;;) { |
610 |
|
if (((b = t.getPendingCount()) & FINISHED) != 0) |
611 |
|
break outer; // already done |
612 |
< |
state = ((b & CUMULATE) != 0? FINISHED : |
612 |
> |
state = ((b & CUMULATE) != 0 ? FINISHED : |
613 |
|
(l > org) ? SUMMED : (SUMMED|FINISHED)); |
614 |
|
if (t.compareAndSetPendingCount(b, b|state)) |
615 |
|
break; |
673 |
|
} |
674 |
|
|
675 |
|
|
676 |
< |
} |
676 |
> |
} |