| 265 | } |
| 266 | |
| 267 | @SuppressWarnings("unchecked") |
| 268 | protected final WaitQueue<T> safeFlush(final Future<T> result) { |
| 269 | while (true) { |
| 270 | final Object curr = state; |
| 271 | if (curr instanceof Promise && !(curr instanceof Continuation)) |
| 272 | return ((Promise<T>) curr).safeFlush(result); |
| 273 | else if (curr instanceof LinkedContinuation) |
| 274 | return ((LinkedContinuation<?, T>) curr).safeFlush(result); |
| 275 | else if (curr instanceof SatisfiedFuture) |
| 276 | return null; |
| 277 | else if (result instanceof Promise) { |
| 278 | ((Promise<T>) result).compress().link(this); |
| 279 | return null; |
| 280 | } else if (cas(curr, result)) |
| 281 | return (WaitQueue<T>) curr; |
| 282 | } |
| 283 | } |
| 284 | |
| 285 | @SuppressWarnings("unchecked") |
| 286 | private final void link(final Promise<T> target) { |