summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorMax Bernstein <rubybugs@bernsteinbear.com>2026-02-09 16:40:25 -0500
committerGitHub <noreply@github.com>2026-02-09 21:40:25 +0000
commit9efe557da5e17fc860f40956192e9df2e6bd1e6c (patch)
tree2288d6eb5d2c976b537d8880d7d9220d85eb6b08 /test/ruby
parent51d4c2c465e3ce708dddcd65d93e6e29225b454d (diff)
ZJIT: Drop has_blockiseq guard on local variable access (#16113)
So `has_blockiseq` was masking two other bugs. First, that we had only a static EP escape check for an iseq. We need to check both that an iseq is not known to statically escape them *and that it has not escaped them before*. Only then can we use SSA locals. This popped up in a weird PP unit test that was reducible to the test cases added in the PR. So I fixed that. Second, that we didn't VM lock when code patching for EP escape. That showed up in the Ractor btests in my previous PRs #14600 and #15254 #15316, and I had no idea what was going on at the time, so I dropped it. But if we add this lock, like all the other invariant patching cases have, the problem goes away. Seems reasonable. Finally, we can use normal full SSA locals even in the presence of a blockiseq. We still reload all of them after each send-with-block, but we can in a later PR reduce that to just the locals that are (recursively) visibly written to.
Diffstat (limited to 'test/ruby')
0 files changed, 0 insertions, 0 deletions