Decouple AbstractContinuation and CancellableContinuation from Job interface #334
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Decouples
CancellableContinuation
fromJob
.Pros:
AbstractContinuation
becomes much simplerAbstractContinuation
state is now more compact and start/cancel produce less garbage (and state transitions are more lightweight)2, 3 => all integration modules become faster (~25% win in cancellation benchmark).
Cons:
invokeOnCompletion
contractIn general, it boosts the performance of cancellable continuations, allows to do specific optimizations (e.g., it makes sense to get rid of
resumeMode
after merging this change and replace it with inheritance to reduce memory footprint even more) and allows us to moveCancellableContinuation
to stdlib