76 lines
2.4 KiB
Markdown
76 lines
2.4 KiB
Markdown
# PR-05.6 - OptimizeIRVM Real Deterministic Passes
|
|
|
|
## Briefing
|
|
|
|
A etapa `OptimizeIRVM` está corretamente posicionada no pipeline, mas ainda opera como `NoOp`.
|
|
|
|
Esta PR introduz o primeiro conjunto de passes reais, seguros e determinísticos, mantendo equivalência semântica e compatibilidade de perfil.
|
|
|
|
## Motivation
|
|
|
|
### Dor atual que esta PR resolve
|
|
|
|
1. Etapa de otimização existe formalmente, mas não entrega valor técnico.
|
|
2. Difícil sustentar evolução de performance e limpeza de IRVM sem regressão.
|
|
3. Falta de contrato de execução de pass manager com evidência forte.
|
|
|
|
## Target
|
|
|
|
`OptimizeIRVMService` com pass manager produtivo e baseline de passes v1.
|
|
|
|
## Dependencies
|
|
|
|
Prerequisitos diretos:
|
|
|
|
1. `PR-05.0.3` (IDs tipados no contrato executável).
|
|
2. `PR-05.0.4` (shape/signature internadas).
|
|
|
|
## Scope
|
|
|
|
1. Pass manager determinístico com ordem estável.
|
|
2. Passes iniciais semânticamente conservadores.
|
|
3. Validação antes/depois de cada pass.
|
|
|
|
## Non-Goals
|
|
|
|
1. Não inclui otimizações agressivas interprocedurais.
|
|
2. Não inclui JIT/runtime optimization.
|
|
|
|
## Method
|
|
|
|
### O que deve ser feito explicitamente
|
|
|
|
1. Implementar baseline de passes v1:
|
|
- eliminação de bloco inalcançável,
|
|
- normalização de labels redundantes,
|
|
- simplificação de salto para próximo PC.
|
|
2. Manter invariantes obrigatórias:
|
|
- sem mudança de `vm_profile`,
|
|
- sem introdução de opcode fora do perfil,
|
|
- sem alteração de contratos de slots/retorno observáveis.
|
|
3. Validar programa antes e após cada pass.
|
|
4. Registrar nome/ordem de pass para rastreabilidade de regressão.
|
|
|
|
## Acceptance Criteria
|
|
|
|
1. `OptimizeIRVM` deixa de ser apenas `NoOp` no caminho padrão.
|
|
2. Mesma entrada produz mesma saída otimizada (determinismo).
|
|
3. Testes de equivalência semântica passam para fixtures representativas.
|
|
4. Nenhum pass viola perfil de VM ou contrato de emissão.
|
|
5. Nenhum pass degrada identidade tipada para chave textual ad-hoc.
|
|
|
|
## Tests
|
|
|
|
1. Testes unitários por pass com entradas mínimas e edge cases.
|
|
2. Testes de pipeline comparando saída otimizada vs não otimizada para equivalência.
|
|
3. Testes negativos para pass que tenta alterar perfil/semântica.
|
|
|
|
## Affected Documents
|
|
|
|
1. `docs/general/specs/21. IRVM Optimization Pipeline Specification.md`
|
|
2. `docs/general/specs/19. Verification and Safety Checks Specification.md`
|
|
|
|
## Open Questions
|
|
|
|
Sem bloqueios arquiteturais para baseline v1.
|