Redundant stack spills on subsequent escaping calls separated by comments
Aberta
Ninguém assumiu esta issue ainda.
interpreter-core
type-bug
- Linguagem predominante
- Python
- Estrelas
- 77.2k
- Forks
- 36k
- Métricas de merge de PRs
- Métricas de PR pendentes
Descrição
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
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece pelo gerador de casos de Tier 1 e pela definição de bytecode mostrados no relatório; em seguida, revise o PR vinculado gh-128761 para ver o trabalho atual. Reproduza os exemplos com comentários entre as chamadas de escaping e verifique se o caso gerado emite apenas as operações necessárias do ponteiro de pilha.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- c, python
- Domínio
- compilers
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 25/100