Commit 5b42da5
committed
ZJIT: Add NoEPEscape guard after send-with-block
After reload_modified_locals, locals not written by the block retain
stale FrameState values. If eval ran inside the block, these stale
values would be spilled to the frame by gen_spill_locals on the next
non-leaf call, overwriting the correct values set by eval.
Add a NoEPEscape PatchPoint immediately after reload_modified_locals.
If the EP escaped during the block (e.g. via eval), this side-exits
before any stale locals can be spilled. The snapshot uses the
post-send state without locals so the interpreter reads them from
the frame, which has the correct values at that point.1 parent f5ec572 commit 5b42da5
3 files changed
+54
-28
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6307 | 6307 | | |
6308 | 6308 | | |
6309 | 6309 | | |
6310 | | - | |
6311 | | - | |
| 6310 | + | |
| 6311 | + | |
| 6312 | + | |
| 6313 | + | |
| 6314 | + | |
| 6315 | + | |
| 6316 | + | |
| 6317 | + | |
| 6318 | + | |
6312 | 6319 | | |
6313 | 6320 | | |
6314 | 6321 | | |
6315 | 6322 | | |
| 6323 | + | |
6316 | 6324 | | |
6317 | 6325 | | |
6318 | 6326 | | |
6319 | 6327 | | |
6320 | 6328 | | |
6321 | 6329 | | |
| 6330 | + | |
6322 | 6331 | | |
6323 | 6332 | | |
| 6333 | + | |
| 6334 | + | |
| 6335 | + | |
| 6336 | + | |
| 6337 | + | |
| 6338 | + | |
| 6339 | + | |
| 6340 | + | |
| 6341 | + | |
| 6342 | + | |
| 6343 | + | |
| 6344 | + | |
6324 | 6345 | | |
6325 | 6346 | | |
6326 | 6347 | | |
| |||
7281 | 7302 | | |
7282 | 7303 | | |
7283 | 7304 | | |
7284 | | - | |
| 7305 | + | |
7285 | 7306 | | |
7286 | 7307 | | |
7287 | 7308 | | |
| |||
7303 | 7324 | | |
7304 | 7325 | | |
7305 | 7326 | | |
7306 | | - | |
| 7327 | + | |
7307 | 7328 | | |
7308 | 7329 | | |
7309 | 7330 | | |
| |||
7324 | 7345 | | |
7325 | 7346 | | |
7326 | 7347 | | |
7327 | | - | |
| 7348 | + | |
7328 | 7349 | | |
7329 | 7350 | | |
7330 | 7351 | | |
| |||
7345 | 7366 | | |
7346 | 7367 | | |
7347 | 7368 | | |
7348 | | - | |
| 7369 | + | |
7349 | 7370 | | |
7350 | 7371 | | |
7351 | 7372 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2997 | 2997 | | |
2998 | 2998 | | |
2999 | 2999 | | |
3000 | | - | |
3001 | | - | |
| 3000 | + | |
| 3001 | + | |
3002 | 3002 | | |
3003 | 3003 | | |
| 3004 | + | |
3004 | 3005 | | |
3005 | | - | |
3006 | | - | |
| 3006 | + | |
| 3007 | + | |
3007 | 3008 | | |
3008 | 3009 | | |
3009 | | - | |
| 3010 | + | |
3010 | 3011 | | |
3011 | 3012 | | |
3012 | 3013 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4216 | 4216 | | |
4217 | 4217 | | |
4218 | 4218 | | |
4219 | | - | |
| 4219 | + | |
| 4220 | + | |
4220 | 4221 | | |
4221 | | - | |
| 4222 | + | |
4222 | 4223 | | |
4223 | 4224 | | |
4224 | 4225 | | |
| |||
4252 | 4253 | | |
4253 | 4254 | | |
4254 | 4255 | | |
4255 | | - | |
| 4256 | + | |
| 4257 | + | |
4256 | 4258 | | |
4257 | | - | |
| 4259 | + | |
4258 | 4260 | | |
4259 | 4261 | | |
4260 | 4262 | | |
| |||
4294 | 4296 | | |
4295 | 4297 | | |
4296 | 4298 | | |
4297 | | - | |
| 4299 | + | |
| 4300 | + | |
4298 | 4301 | | |
4299 | | - | |
| 4302 | + | |
4300 | 4303 | | |
4301 | 4304 | | |
4302 | 4305 | | |
| |||
4366 | 4369 | | |
4367 | 4370 | | |
4368 | 4371 | | |
4369 | | - | |
4370 | | - | |
| 4372 | + | |
| 4373 | + | |
| 4374 | + | |
4371 | 4375 | | |
4372 | | - | |
4373 | | - | |
4374 | | - | |
4375 | | - | |
4376 | | - | |
4377 | | - | |
4378 | | - | |
4379 | | - | |
4380 | | - | |
| 4376 | + | |
| 4377 | + | |
| 4378 | + | |
| 4379 | + | |
| 4380 | + | |
| 4381 | + | |
| 4382 | + | |
| 4383 | + | |
| 4384 | + | |
4381 | 4385 | | |
4382 | 4386 | | |
4383 | 4387 | | |
| |||
0 commit comments