SimpleRelinkableCallSite

SimpleRelinkableCallSite (단순 재연결 콜 사이트)

모노모픽(단형) 인라인 캐싱 전략을 구현하는 재연결 가능 콜 사이트입니다. 한 번에 단 하나의 GuardedInvocation에만 연결돼요.

출처: Java API Reference

본문

해당 호출의 가드가 실패하거나, 무효화된 스위치 포인트가 있거나, 무효화 예외가 발동하면, 콜 사이트는 그 호출을 버리고 연결된 DynamicLinker에게 재연결을 요청합니다. 즉 한 번에 단 하나의 연결만 유지하는 단순한 인라인 캐싱 전략이에요.

특정 콜 사이트가 대부분 한 종류의 인자 조합으로 호출된다면, 이 단순한 방식이 오버헤드가 가장 적습니다. ChainedCallSite가 여러 연결을 기억하는 것과 달리 단일 연결만 유지하므로 관리가 간단하죠. AbstractRelinkableCallSite를 상속하며, DynamicLinker 문서의 예시에서 기본 콜 사이트 구현으로 사용됩니다.

가드가 실패할 때마다 폴리모픽 캐시를 유지하는 다른 구현과 달리, 이 구현은 항상 단일 타깃만 유지하고 재연결을 요청합니다. 인자 종류가 거의 고정된 콜 사이트에서는 이 접근이 가장 단순하면서도 효율적이에요. 그래서 Dynalink를 처음 접할 때나 단순한 런타임을 만들 때 기본 콜 사이트로 가장 많이 선택됩니다.

생성자

  • SimpleRelinkableCallSite(CallSiteDescriptor descriptor) — 모노모픽 인라인 캐싱 전략을 가진 새 콜 사이트를 만듭니다.

메서드

  • relink(GuardedInvocation, MethodHandle) — 재연결될 때마다 동적 링커가 호출합니다.
  • resetAndRelink(GuardedInvocation, MethodHandle) — 이전 연결 상태를 버리고 재연결할 때 호출됩니다.
  • getDescriptor(), initialize(...)AbstractRelinkableCallSite에서 상속받습니다.

더 알아보기

Java 공식 API