Skip to content

Deep JVM stack on return from scope after suspension #1574

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
elizarov opened this issue Sep 25, 2019 · 0 comments
Closed

Deep JVM stack on return from scope after suspension #1574

elizarov opened this issue Sep 25, 2019 · 0 comments
Assignees

Comments

@elizarov
Copy link
Contributor

Consider this suspending code:

coroutineScope {
    delay(10) // any suspension here
}
foo() // the rest of code

Currently, foo would be called from quite a deep JVM stack that contains a lot of irrelevant JVM methods that are updating internal state-machines. Every scoped coroutine adds another level there.

elizarov added a commit that referenced this issue Sep 25, 2019
Calls of afterCompletionInternal are pulled up the call stack. This
is very important, since scoped coroutines do "uCont.resumeWith" from
afterCompletionInternal, which makes all the JVM method visible in the
debugger call frames and in exceptions.

Additionally, this allows for some simplification of the JobSupport
code, as a number of methods do not need "mode" parameter anymore.
Moreover, the kludge of MODE_IGNORE is no longer needed and is
dropped.

Fixes #1574
elizarov added a commit that referenced this issue Sep 26, 2019
Calls of afterCompletionInternal are pulled up the call stack. This
is very important, since scoped coroutines do "uCont.resumeWith" from
afterCompletionInternal, which makes all the JVM method visible in the
debugger call frames and in exceptions.

Additionally, this allows for some simplification of the JobSupport
code, as a number of methods do not need "mode" parameter anymore.
Moreover, the kludge of MODE_IGNORE is no longer needed and is
dropped.

Fixes #1574
elizarov added a commit that referenced this issue Sep 26, 2019
Calls of afterCompletionInternal are pulled up the call stack. This
is very important, since scoped coroutines do "uCont.resumeWith" from
afterCompletionInternal, which makes all the JVM method visible in the
debugger call frames and in exceptions.

Additionally, this allows for some simplification of the JobSupport
code, as a number of methods do not need "mode" parameter anymore.
Moreover, the kludge of MODE_IGNORE is no longer needed and is
dropped.

Fixes #1574
elizarov added a commit that referenced this issue Sep 27, 2019
Calls of afterCompletionInternal are pulled up the call stack. This
is very important, since scoped coroutines do "uCont.resumeWith" from
afterCompletionInternal, which makes all the JVM method visible in the
debugger call frames and in exceptions.

Additionally, this allows for some simplification of the JobSupport
code, as a number of methods do not need "mode" parameter anymore.
Moreover, the kludge of MODE_IGNORE is no longer needed and is
dropped.

Fixes #1574
elizarov added a commit that referenced this issue Sep 30, 2019
Calls of afterCompletionInternal are pulled up the call stack. This
is very important, since scoped coroutines do "uCont.resumeWith" from
afterCompletionInternal, which makes all the JVM method visible in the
debugger call frames and in exceptions.

Additionally, this allows for some simplification of the JobSupport
code, as a number of methods do not need "mode" parameter anymore.
Moreover, the kludge of MODE_IGNORE is no longer needed and is
dropped.

Fixes #1574
qwwdfsad pushed a commit that referenced this issue Oct 4, 2019
Calls of afterCompletionInternal are pulled up the call stack. This
is very important, since scoped coroutines do "uCont.resumeWith" from
afterCompletionInternal, which makes all the JVM method visible in the
debugger call frames and in exceptions.

Additionally, this allows for some simplification of the JobSupport
code, as a number of methods do not need "mode" parameter anymore.
Moreover, the kludge of MODE_IGNORE is no longer needed and is
dropped.

Make TimeoutCoroutine extends ScopedCoroutines.

Fixes #1574
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants