Bump native recursion count early in call handling #2108
Merged
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.
If the native recursion depth is not bumped early in call handling, we may trigger a getter or a Proxy trap before we've increased the recursion depth leading to another native call. This process may continue unchecked by the native call limit in the worst case (such as #2032).
For similar reasons, ensure value stack space early in the call handling -- even before the target function is known and value stack is actually configured for the new function. This is not ideal because each call now involves two value stack resize checks, but if this isn't done, early recursion in call handling may consume the expected value stack reserve (which is the actually triggered effect in #2032).
Fixes #2032.