Commit 1219da9
committed
Enable PEP 709 inlined comprehensions for function-like scopes
Activate the existing compile_inlined_comprehension() implementation
by fixing 6 bugs that prevented it from working:
- LoadFastAndClear: push NULL (not None) when slot is empty so
StoreFast can restore empty state after comprehension
- StoreFast: accept NULL from stack for the restore path
- sub_tables.remove(0) replaced with next_sub_table cursor to
match the pattern used elsewhere in the compiler
- in_inlined_comp flag moved from non-inlined to inlined path
- is_inlined_comprehension_context() now checks comp_inlined flag
and restricts inlining to function-like scopes
- comp_inlined set only when parent scope uses fastlocals
Symbol table analysis handles conflict detection:
- Nested scopes in comprehension → skip inlining
- Bound name conflicts with parent symbol → skip inlining
- Cross-comprehension reference conflicts → skip inlining
- Splice comprehension sub_tables into parent for nested scope tracking1 parent 61b3b4f commit 1219da9
3 files changed
+116
-53
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
968 | 968 | | |
969 | 969 | | |
970 | 970 | | |
971 | | - | |
972 | | - | |
973 | | - | |
974 | | - | |
975 | | - | |
976 | | - | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
977 | 986 | | |
978 | 987 | | |
979 | 988 | | |
| |||
7650 | 7659 | | |
7651 | 7660 | | |
7652 | 7661 | | |
7653 | | - | |
| 7662 | + | |
| 7663 | + | |
7654 | 7664 | | |
7655 | 7665 | | |
7656 | 7666 | | |
7657 | 7667 | | |
7658 | 7668 | | |
| 7669 | + | |
| 7670 | + | |
7659 | 7671 | | |
7660 | 7672 | | |
7661 | 7673 | | |
| |||
7682 | 7694 | | |
7683 | 7695 | | |
7684 | 7696 | | |
7685 | | - | |
7686 | | - | |
7687 | | - | |
7688 | 7697 | | |
7689 | 7698 | | |
7690 | 7699 | | |
| |||
7847 | 7856 | | |
7848 | 7857 | | |
7849 | 7858 | | |
7850 | | - | |
7851 | | - | |
| 7859 | + | |
7852 | 7860 | | |
7853 | | - | |
| 7861 | + | |
| 7862 | + | |
| 7863 | + | |
7854 | 7864 | | |
7855 | 7865 | | |
7856 | | - | |
7857 | | - | |
7858 | | - | |
| 7866 | + | |
| 7867 | + | |
| 7868 | + | |
| 7869 | + | |
| 7870 | + | |
| 7871 | + | |
| 7872 | + | |
| 7873 | + | |
| 7874 | + | |
| 7875 | + | |
7859 | 7876 | | |
7860 | 7877 | | |
7861 | 7878 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
459 | 459 | | |
460 | 460 | | |
461 | 461 | | |
462 | | - | |
463 | | - | |
464 | | - | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
465 | 466 | | |
466 | 467 | | |
467 | 468 | | |
468 | 469 | | |
469 | 470 | | |
470 | | - | |
471 | | - | |
472 | | - | |
473 | | - | |
474 | | - | |
475 | | - | |
476 | | - | |
477 | | - | |
478 | | - | |
479 | | - | |
480 | | - | |
481 | | - | |
482 | | - | |
483 | | - | |
484 | | - | |
485 | | - | |
486 | | - | |
487 | | - | |
488 | | - | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
489 | 514 | | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
490 | 518 | | |
491 | 519 | | |
492 | 520 | | |
| |||
2037 | 2065 | | |
2038 | 2066 | | |
2039 | 2067 | | |
2040 | | - | |
2041 | | - | |
2042 | | - | |
2043 | | - | |
2044 | | - | |
2045 | | - | |
2046 | | - | |
| 2068 | + | |
| 2069 | + | |
| 2070 | + | |
| 2071 | + | |
| 2072 | + | |
| 2073 | + | |
| 2074 | + | |
| 2075 | + | |
| 2076 | + | |
| 2077 | + | |
| 2078 | + | |
| 2079 | + | |
| 2080 | + | |
| 2081 | + | |
| 2082 | + | |
| 2083 | + | |
| 2084 | + | |
| 2085 | + | |
| 2086 | + | |
| 2087 | + | |
| 2088 | + | |
| 2089 | + | |
| 2090 | + | |
| 2091 | + | |
| 2092 | + | |
2047 | 2093 | | |
2048 | 2094 | | |
2049 | 2095 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2699 | 2699 | | |
2700 | 2700 | | |
2701 | 2701 | | |
2702 | | - | |
2703 | | - | |
| 2702 | + | |
| 2703 | + | |
| 2704 | + | |
2704 | 2705 | | |
2705 | | - | |
2706 | | - | |
2707 | | - | |
2708 | | - | |
| 2706 | + | |
| 2707 | + | |
2709 | 2708 | | |
2710 | 2709 | | |
2711 | 2710 | | |
| |||
3300 | 3299 | | |
3301 | 3300 | | |
3302 | 3301 | | |
3303 | | - | |
| 3302 | + | |
| 3303 | + | |
3304 | 3304 | | |
3305 | | - | |
| 3305 | + | |
3306 | 3306 | | |
3307 | 3307 | | |
3308 | 3308 | | |
| |||
0 commit comments