2.6 KiB
2.6 KiB
PR-08.4 - CALL_FUNC Callee Module Identity Correctness
Briefing
No lowering executavel PBS, instrucoes CALL_FUNC podem carregar calleeModuleKey do contexto local, e nao necessariamente do callable alvo.
Isso compromete rastreabilidade, debug e futuras validacoes de linking por modulo.
Motivation
Dor atual que esta PR resolve
- Metadado de callsite incorreto para chamadas inter-modulo.
- Dificulta diagnostico e verificacao de integridade no backend.
- Introduz risco de regressao quando modulo vira identidade tipada no contrato.
Target
Garantir que todo CALL_FUNC preserva identidade real do alvo (callee module) de forma deterministica, sem usar contexto local como proxy.
Dependencies
Prerequisitos diretos:
PR-05.0.4(assinatura/callable internados).PR-08.2(quandoModuleIdtipado estiver ativo, usar id do alvo).
Scope
- Corrigir montagem de callsite para puxar modulo do
calleeCallableIdresolvido. - Ajustar modelos auxiliares de resolucao de callable para incluir modulo do alvo.
- Expandir testes de lowering com chamadas cross-module.
Non-Goals
- Nao alterar categoria de callsite.
- Nao introduzir linking dinamico de funcoes.
- Nao alterar bytecode emitido para opcodes de chamada.
Method
O que deve ser feito explicitamente
- Enriquecer lookup de callable para retornar identidade completa (
callableId + module identity). - Em
CALL_FUNC, preenchercallee modulecom identidade do alvo real. - Adicionar validacao de consistencia em contrato executavel para evitar modulo invalido em chamada.
- Criar regressao com:
- modulo A chamando funcao em modulo B,
- assert do modulo do callee no IRBackend.
Acceptance Criteria
- Nenhuma instrução
CALL_FUNCusa modulo local quando alvo e externo. - Testes cross-module passam com metadado correto de callee.
- Diagnosticos mantem atribuicao correta em falhas de resolucao.
- Contrato segue deterministico em rebuilds equivalentes.
Tests
:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PbsFrontendCompilerTest*:prometeu-compiler:frontends:prometeu-frontend-pbs:test --tests *PBSFrontendPhaseServiceTest*:prometeu-compiler:prometeu-build-pipeline:test --tests *LowerToIRVMPipelineStageTest*
Affected Documents
docs/pbs/specs/13. Lowering IRBackend Specification.mddocs/general/specs/20. IRBackend to IRVM Lowering Specification.mddocs/general/specs/22. Backend Spec-to-Test Conformance Matrix.md
Open Questions
- Durante a transicao, manter
calleeCallableNametextual para debug ou derivar sempre da assinatura por id?