ZJIT: Stop tracking EP == BP assumption on JIT entry #13752
+28
−20
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.
This PR stops tracking the EP == BP assumption when loading method parameters on JIT entry. It makes
test_gc.rb
andtest_thread.rb
pass and reduces the number of failures intest_eval.rb
andtest_insns.rb
.The current
gen_getlocal()
function (renamed togen_entry_param()
in this PR) was meant to be used for any Ruby local variable read, so it keeps track of the EP == BP assumption for optimization. However, we ended up using the function only for loading method parameters. In that case, because we load them before the main JIT code, no arbitrary method runs before the loads. So we don't need to invalidate them.I do think we need to implement a PatchPoint in HIR that assumes EP == BP at some point. So I left the
track_no_ep_escape_assumption
/iseq_escapes_ep
machinery in invariants.rs as is for now.