내 언어 백엔드에서 점진적으로 함수 및 유형을 작성하지만 함수 및 유형이 성공적으로 작성되지 않은 경우 (사용자 입력 문제로 인해) 주 모듈 및 컨텍스트를 오염시키지 않습니다.llvm : 점진적으로 JIT 내용을 빌드하는 전략
이에 대해서는 an earlier question에게 문의하십시오. 내가 볼 수있는 한 가지 전략은 임시 모듈과 LLVMContext
에있는 모든 것을 구축하는 것입니다. 성공 후에 만 주맥으로 마이그레이션하지만 현재 API에서 가능한지 확실하지 않습니다. 예를 들어, LLVM 기능의 고립 된 섬을 대표한다고 가정했기 때문에 다른 컨텍스트간에 해당 컨텐트를 마이그레이션하는 것을 모를 수 있습니다. 그러나 .bc에 모든 것을 저장하고 다른 위치로로드하는 대안이 항상 있을지도 모릅니다.
이것을 달성하기 위해 어떤 다른 전략을 제안 하시겠습니까?
특히 장기 실행 서비스 프로세스에서 호출되기 때문에 여러 LLVMContext를 유지해야하며 글로벌 LLVMContext를 유지하면 무한하게 성장할 수 있습니다. 개별 LLVMContext는 더 나은 메모리 관리 및 가비지 수집을 가능하게합니다 (단일 스레드 프로세스 내에서 실행되는 경우에도) – lurscher
@lurscher : 나는 그것이 "무한한 성장을 할 것"이라고 진지하게 생각합니다. 단일 컨텍스트 및 벤치마킹/프로파일 링을 사용하여 구현할 것을 제안합니다. 대부분의 메모리 사용은 중요하지 않습니다. 내가 링크 된 페이지에서 말한 것처럼, 컨텍스트간에 메모리 내 데이터 구조를 전달할 수는 없습니다. 나는 당신이 비트 코드로 그들을 직렬화 할 수 있고 (다른 상황에서) 다른 쪽에서 역 직렬화 할 수 있다고 상상한다. –
그래, 나도 그렇게 생각했다. 감사! 어떤 경우 든 – lurscher