Commit aee7494
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 completely removes the singleton_class_seen fallbacks
(26.9% of all fallbacks) on the lobsters benchmark.1 parent e74823a commit aee7494
4 files changed
Lines changed: 95 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 | | |
| |||
2328 | 2328 | | |
2329 | 2329 | | |
2330 | 2330 | | |
| 2331 | + | |
| 2332 | + | |
| 2333 | + | |
2331 | 2334 | | |
2332 | 2335 | | |
2333 | 2336 | | |
| |||
2434 | 2437 | | |
2435 | 2438 | | |
2436 | 2439 | | |
| 2440 | + | |
2437 | 2441 | | |
2438 | 2442 | | |
2439 | 2443 | | |
| |||
2559 | 2563 | | |
2560 | 2564 | | |
2561 | 2565 | | |
2562 | | - | |
2563 | | - | |
2564 | | - | |
| 2566 | + | |
| 2567 | + | |
| 2568 | + | |
2565 | 2569 | | |
2566 | 2570 | | |
2567 | 2571 | | |
| |||
6708 | 6712 | | |
6709 | 6713 | | |
6710 | 6714 | | |
| 6715 | + | |
6711 | 6716 | | |
6712 | 6717 | | |
6713 | 6718 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13492 | 13492 | | |
13493 | 13493 | | |
13494 | 13494 | | |
13495 | | - | |
13496 | | - | |
| 13495 | + | |
13497 | 13496 | | |
13498 | | - | |
| 13497 | + | |
| 13498 | + | |
| 13499 | + | |
| 13500 | + | |
| 13501 | + | |
| 13502 | + | |
| 13503 | + | |
13499 | 13504 | | |
| 13505 | + | |
| 13506 | + | |
13500 | 13507 | | |
13501 | | - | |
13502 | | - | |
13503 | | - | |
| 13508 | + | |
13504 | 13509 | | |
13505 | | - | |
13506 | | - | |
13507 | | - | |
13508 | | - | |
| 13510 | + | |
| 13511 | + | |
13509 | 13512 | | |
13510 | 13513 | | |
13511 | 13514 | | |
13512 | 13515 | | |
13513 | | - | |
| 13516 | + | |
| 13517 | + | |
| 13518 | + | |
13514 | 13519 | | |
13515 | 13520 | | |
13516 | 13521 | | |
13517 | 13522 | | |
13518 | 13523 | | |
13519 | 13524 | | |
13520 | | - | |
| 13525 | + | |
| 13526 | + | |
13521 | 13527 | | |
13522 | 13528 | | |
13523 | | - | |
13524 | | - | |
13525 | | - | |
13526 | | - | |
13527 | | - | |
| 13529 | + | |
| 13530 | + | |
| 13531 | + | |
| 13532 | + | |
| 13533 | + | |
| 13534 | + | |
| 13535 | + | |
| 13536 | + | |
| 13537 | + | |
| 13538 | + | |
| 13539 | + | |
| 13540 | + | |
13528 | 13541 | | |
13529 | | - | |
| 13542 | + | |
13530 | 13543 | | |
13531 | 13544 | | |
13532 | 13545 | | |
| 13546 | + | |
| 13547 | + | |
| 13548 | + | |
| 13549 | + | |
| 13550 | + | |
| 13551 | + | |
| 13552 | + | |
| 13553 | + | |
| 13554 | + | |
| 13555 | + | |
| 13556 | + | |
| 13557 | + | |
| 13558 | + | |
| 13559 | + | |
| 13560 | + | |
| 13561 | + | |
| 13562 | + | |
| 13563 | + | |
| 13564 | + | |
| 13565 | + | |
| 13566 | + | |
| 13567 | + | |
| 13568 | + | |
| 13569 | + | |
| 13570 | + | |
| 13571 | + | |
| 13572 | + | |
| 13573 | + | |
| 13574 | + | |
| 13575 | + | |
| 13576 | + | |
| 13577 | + | |
13533 | 13578 | | |
13534 | 13579 | | |
13535 | 13580 | | |
| |||
| 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