Redundant stack spills on subsequent escaping calls separated by comments
Offen
Dieses Issue hat noch niemand übernommen.
interpreter-core
type-bug
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug report
Bug description:
Tier 1 case generator emits stack spill for every subsequent escaping call, when subsequent escaping calls are separated by comment(s). Example:
Subsequent escaping calls without comments in between:
Bytecode definition:
pure inst(NOP, (--)) {
escaping_call1();
escaping_call2();
escaping_call3();
}
Generated case:
TARGET(NOP) {
frame->instr_ptr = next_instr;
next_instr += 1;
INSTRUCTION_STATS(NOP);
_PyFrame_SetStackPointer(frame, stack_pointer);
escaping_call1();
escaping_call2();
escaping_call3();
stack_pointer = _PyFrame_GetStackPointer(frame);
DISPATCH();
}
Subsequent escaping calls with comments in between:
Bytecode definition:
pure inst(NOP, (--)) {
escaping_call1();
// comment1
escaping_call2();
// comment2
escaping_call3();
}
Generated case:
TARGET(NOP) {
frame->instr_ptr = next_instr;
next_instr += 1;
INSTRUCTION_STATS(NOP);
_PyFrame_SetStackPointer(frame, stack_pointer);
escaping_call1();
stack_pointer = _PyFrame_GetStackPointer(frame);
// comment1
_PyFrame_SetStackPointer(frame, stack_pointer);
escaping_call2();
stack_pointer = _PyFrame_GetStackPointer(frame);
// comment2
_PyFrame_SetStackPointer(frame, stack_pointer);
escaping_call3();
stack_pointer = _PyFrame_GetStackPointer(frame);
DISPATCH();
}
CPython versions tested on:
CPython main branch
Operating systems tested on:
No response
Linked PRs
- gh-128761
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem im Bericht gezeigten Tier 1 case generator und der Bytecode-Definition und prüfe anschließend den verknüpften PR gh-128761 auf die aktuellen Arbeiten. Reproduziere die Beispiele mit Kommentaren zwischen den Escaping-Aufrufen und verifiziere, dass der generierte Fall nur die notwendigen Stack-Pointer-Operationen ausgibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- c, python
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 25/100