피드로 돌아가기
V.E.L.O.C.I.T.Y.-OS: The JIT Compiler Core – From AST to Native Closures (Part 4)
Dev.toDev.to
Infrastructure

AST-to-Closure JIT 도입으로 컴파일 및 실행 시간 206µs 달성

V.E.L.O.C.I.T.Y.-OS: The JIT Compiler Core – From AST to Native Closures (Part 4)

UnitBuilds2026년 6월 28일7advanced

Context

기존 recursive tree-walk interpreter 기반의 AST 실행 방식에서 발생하는 과도한 dispatch overhead가 병목 지점으로 작용함. 매 opcode 실행 시 발생하는 match branching, dynamic type checking, variable lookup cycle로 인한 성능 저하를 해결해야 하는 상황임.

Technical Solution

  • AST를 직접 기계어로 변환하는 대신 Rust의 nested closures(Box) 체인으로 컴파일하는 Tier-1 JIT 구조 설계
  • 런타임의 해시 맵 기반 변수 조회를 제거하기 위해 load-time에 variable slots를 사전 할당하는 index-based lookup 방식 도입
  • 컴파일 단계에서 모든 opcode match와 scope check, control-flow branch를 정적으로 해결하여 런타임 시 단순 function pointer 체인 이동으로 최적화
  • AssertUnwindSafe 경계를 활용한 panic-safe sandbox를 구축하여 컴파일과 실행을 격리된 환경에서 검증하는 파이프라인 구성
  • 런타임 상태 관리를 위한 JitState 구조체에 flat array를 적용하여 변수 로드/스토어 연산을 메모리 오프셋 접근 수준으로 단축

1. 런타임 루프 내의 Hash Map 조회 빈도를 분석하여 Index 기반 Flat Array 접근으로 대체 가능한지 검토

2. 복잡한 조건 분기가 많은 트리 구조 실행 시, 이를 함수형 클로저 체인으로 평탄화하여 Branch Misprediction 감소 유도

3. 동적 코드 실행 환경 구축 시 AssertUnwindSafe와 같은 격리 경계를 통해 시스템 안정성 확보

원문 읽기