405 |
|
ExceptionNode next; |
406 |
|
final long thrower; // use id not ref to avoid weak cycles |
407 |
|
final int hashCode; // store task hashCode before weak ref disappears |
408 |
< |
ExceptionNode(ForkJoinTask<?> task, Throwable ex, ExceptionNode next) { |
408 |
> |
ExceptionNode(ForkJoinTask<?> task, Throwable ex, ExceptionNode next, |
409 |
> |
ReferenceQueue<Object> exceptionTableRefQueue) { |
410 |
|
super(task, exceptionTableRefQueue); |
411 |
|
this.ex = ex; |
412 |
|
this.next = next; |
432 |
|
int i = h & (t.length - 1); |
433 |
|
for (ExceptionNode e = t[i]; ; e = e.next) { |
434 |
|
if (e == null) { |
435 |
< |
t[i] = new ExceptionNode(this, ex, t[i]); |
435 |
> |
t[i] = new ExceptionNode(this, ex, t[i], |
436 |
> |
exceptionTableRefQueue); |
437 |
|
break; |
438 |
|
} |
439 |
|
if (e.get() == this) // already present |