-
Notifications
You must be signed in to change notification settings - Fork 12
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
Deep stacks redesign #430
Comments
@jpolitz I have an idea for simplifying the implementation of deep stacks that may be just as effective as the current approach in Stopify. Would you read this over and give me your thoughts: Thanks |
Two immediate comments:
|
|
We're running into issues with deep stacks for Pyret now.
|
Here is the gist: Try this: |
Er, this approach may be bogus.... |
Yeah, if I do It seems like there's useful infrastructure in the existing runtime for this. In Here's a dumb question I should know the answer to – when Stopify restarts a stack does it always put all the frames back on the real JS stack in restore mode? Or does it sometimes not put some frames back on the real JS stack and restart from other points deeper into it? |
CC @blerner |
OK, so we've got this example:
If we remove those three lines that configure the RTS manually, we get a stack overflow. Is this all working and it's just that the options weren't propagated correctly from the runner to the runtime? |
I suspect it is possible to implement deep stacks as a "macro" that uses call/cc, without the need to hack the runtime system internals. However, it is unclear how this "macro" would interact with Stopify, which implements pausing using call/cc.
We should prototype this in Racket before trying to do this in JavaScript.
The text was updated successfully, but these errors were encountered: