Commit b9d93a7
committed
ZJIT: Per-ISEQ feedback for singleton class speculation
Instead of globally disabling NoSingletonClass optimization for a class
once any singleton class has been seen, track invalidations per-ISEQ.
When an ISEQ's NoSingletonClass patchpoint is invalidated, set a flag
on its payload so only that ISEQ avoids re-speculating on recompilation.
ISEQs that were never invalidated continue to optimize with
NoSingletonClass even if other ISEQs were invalidated for the same
class. This reduces singleton_class_seen fallbacks from 9.7M (26.9% of
all fallbacks) to 1.3M (4.8%) on the lobsters benchmark.1 parent f0f1f02 commit b9d93a7
4 files changed
Lines changed: 88 additions & 32 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
2302 | 2302 | | |
2303 | 2303 | | |
2304 | 2304 | | |
| 2305 | + | |
| 2306 | + | |
| 2307 | + | |
2305 | 2308 | | |
2306 | 2309 | | |
2307 | 2310 | | |
| |||
2408 | 2411 | | |
2409 | 2412 | | |
2410 | 2413 | | |
| 2414 | + | |
2411 | 2415 | | |
2412 | 2416 | | |
2413 | 2417 | | |
| |||
2533 | 2537 | | |
2534 | 2538 | | |
2535 | 2539 | | |
2536 | | - | |
2537 | | - | |
2538 | | - | |
| 2540 | + | |
| 2541 | + | |
| 2542 | + | |
2539 | 2543 | | |
2540 | 2544 | | |
2541 | 2545 | | |
| |||
6700 | 6704 | | |
6701 | 6705 | | |
6702 | 6706 | | |
| 6707 | + | |
6703 | 6708 | | |
6704 | 6709 | | |
6705 | 6710 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13227 | 13227 | | |
13228 | 13228 | | |
13229 | 13229 | | |
13230 | | - | |
13231 | | - | |
| 13230 | + | |
13232 | 13231 | | |
13233 | | - | |
| 13232 | + | |
| 13233 | + | |
| 13234 | + | |
| 13235 | + | |
| 13236 | + | |
| 13237 | + | |
| 13238 | + | |
13234 | 13239 | | |
| 13240 | + | |
13235 | 13241 | | |
13236 | | - | |
13237 | | - | |
13238 | | - | |
| 13242 | + | |
13239 | 13243 | | |
13240 | | - | |
13241 | | - | |
13242 | | - | |
13243 | | - | |
| 13244 | + | |
| 13245 | + | |
13244 | 13246 | | |
13245 | 13247 | | |
13246 | 13248 | | |
13247 | 13249 | | |
13248 | | - | |
| 13250 | + | |
| 13251 | + | |
| 13252 | + | |
13249 | 13253 | | |
13250 | 13254 | | |
13251 | 13255 | | |
13252 | 13256 | | |
13253 | 13257 | | |
13254 | 13258 | | |
13255 | | - | |
| 13259 | + | |
| 13260 | + | |
13256 | 13261 | | |
13257 | 13262 | | |
13258 | | - | |
13259 | | - | |
13260 | | - | |
13261 | | - | |
13262 | | - | |
| 13263 | + | |
| 13264 | + | |
| 13265 | + | |
| 13266 | + | |
| 13267 | + | |
| 13268 | + | |
| 13269 | + | |
| 13270 | + | |
| 13271 | + | |
13263 | 13272 | | |
13264 | | - | |
| 13273 | + | |
13265 | 13274 | | |
13266 | 13275 | | |
13267 | 13276 | | |
| 13277 | + | |
| 13278 | + | |
| 13279 | + | |
| 13280 | + | |
| 13281 | + | |
| 13282 | + | |
| 13283 | + | |
| 13284 | + | |
| 13285 | + | |
| 13286 | + | |
| 13287 | + | |
| 13288 | + | |
| 13289 | + | |
| 13290 | + | |
| 13291 | + | |
| 13292 | + | |
| 13293 | + | |
| 13294 | + | |
| 13295 | + | |
| 13296 | + | |
| 13297 | + | |
| 13298 | + | |
| 13299 | + | |
| 13300 | + | |
| 13301 | + | |
| 13302 | + | |
| 13303 | + | |
| 13304 | + | |
| 13305 | + | |
13268 | 13306 | | |
13269 | 13307 | | |
13270 | 13308 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
| 14 | + | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
28 | 27 | | |
29 | 28 | | |
30 | 29 | | |
31 | 30 | | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
43 | 47 | | |
44 | 48 | | |
45 | 49 | | |
46 | 50 | | |
47 | 51 | | |
48 | 52 | | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
49 | 58 | | |
50 | 59 | | |
51 | 60 | | |
| |||
196 | 205 | | |
197 | 206 | | |
198 | 207 | | |
199 | | - | |
| 208 | + | |
200 | 209 | | |
201 | 210 | | |
202 | 211 | | |
| |||
223 | 232 | | |
224 | 233 | | |
225 | 234 | | |
226 | | - | |
| 235 | + | |
227 | 236 | | |
228 | 237 | | |
229 | 238 | | |
| |||
338 | 347 | | |
339 | 348 | | |
340 | 349 | | |
341 | | - | |
| 350 | + | |
342 | 351 | | |
343 | 352 | | |
344 | 353 | | |
| |||
360 | 369 | | |
361 | 370 | | |
362 | 371 | | |
363 | | - | |
| 372 | + | |
364 | 373 | | |
365 | 374 | | |
366 | 375 | | |
| |||
395 | 404 | | |
396 | 405 | | |
397 | 406 | | |
398 | | - | |
| 407 | + | |
399 | 408 | | |
400 | 409 | | |
401 | 410 | | |
| |||
439 | 448 | | |
440 | 449 | | |
441 | 450 | | |
442 | | - | |
| 451 | + | |
443 | 452 | | |
444 | 453 | | |
445 | 454 | | |
| |||
481 | 490 | | |
482 | 491 | | |
483 | 492 | | |
484 | | - | |
| 493 | + | |
485 | 494 | | |
486 | 495 | | |
487 | 496 | | |
| |||
513 | 522 | | |
514 | 523 | | |
515 | 524 | | |
516 | | - | |
| 525 | + | |
517 | 526 | | |
518 | 527 | | |
519 | 528 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
14 | 17 | | |
15 | 18 | | |
16 | 19 | | |
17 | 20 | | |
18 | 21 | | |
19 | 22 | | |
20 | 23 | | |
| 24 | + | |
21 | 25 | | |
22 | 26 | | |
23 | 27 | | |
| |||
0 commit comments