2.4 KiB
2.4 KiB
PR-05.5 - IRVM Validator Real Stack Effects for HOSTCALL and INTRINSIC
Briefing
O validador IRVM hoje modela HOSTCALL e INTRINSIC com efeito de stack genérico insuficiente para rigor JVM-grade.
Esta PR passa a validar efeitos reais de stack por assinatura (arg_slots/ret_slots) nessas operações.
Motivation
Dor atual que esta PR resolve
- Possíveis underflow/overflow não detectados em chamadas host/intrínseco.
- Retorno efetivo divergente sem falha no precheck.
- Confiança excessiva na emissão sem validação semântica de pilha completa.
Target
IRVMValidator e metadados de operação com informação suficiente para calcular efeito real de stack.
Dependencies
Prerequisitos diretos:
PR-05.0.3(IDs tipados de callable/intrinseco).PR-05.0.6(identidade canônica de host binding).
Scope
- Modelo de metadados para chamadas host e intrínseco no estágio IRVM.
- Regras de validação de stack baseadas em assinatura.
- Diagnósticos determinísticos de mismatch.
Non-Goals
- Não define política de otimização.
- Não altera opcode wire format.
Method
O que deve ser feito explicitamente
- Introduzir acesso a
arg_slots/ret_slotsefetivos durante validação deHOSTCALL. - Introduzir contrato equivalente para
INTRINSIC(a partir de tabela canônica no pipeline). - Aplicar stack effect real no data-flow do validador.
- Rejeitar mismatch de altura de retorno em joins e
RETfinal. - Preservar mensagens de erro estáveis na taxonomia
MARSHAL_VERIFY_PRECHECK_*. - Consumir metadados canônicos por ID, sem lookup textual ad-hoc.
Acceptance Criteria
HOSTCALLeINTRINSICparticipam do cálculo real de pilha no validador.- Casos de mismatch de assinatura falham no precheck com erro determinístico.
- Casos válidos seguem aprovando sem regressão.
- O caminho de validação não depende de composição textual de chave de binding.
Tests
- Testes positivos com combinações de arg/ret slots para host e intrínsecos.
- Testes negativos para underflow, overflow e retorno incompatível.
- Testes de join mismatch com chamadas em blocos ramificados.
Affected Documents
docs/general/specs/20. IRBackend to IRVM Lowering Specification.mddocs/general/specs/19. Verification and Safety Checks Specification.md
Open Questions
Sem bloqueios arquiteturais.