モジュール jdk.dynalink
パッケージ jdk.dynalink

インタフェースRelinkableCallSite

既知のすべての実装クラス:
AbstractRelinkableCallSite, ChainedCallSite, SimpleRelinkableCallSite

public interface RelinkableCallSite
DynamicLinkerによって管理されるコール・サイトのインタフェース。 Dynalinkのユーザーは、CallSiteのサブクラスを使用する必要があります。CallSiteは、このインタフェースをコール・サイトの実装として実装します。 単調なインライン・キャッシング・ストラテジとポリモーフィック・インライン・キャッシング・ストラテジを実装し、以前にリンクされたメソッド・ハンドルのチェーンを保持するChainedCallSiteを実装する、すぐに使用できるSimpleRelinkableCallSiteサブクラスがあります。 再リンク可能なコール・サイトは、DynamicLinker.link(RelinkableCallSite)メソッドを使用して関連付けられた後、DynamicLinkerオブジェクトによって管理されます。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    この呼び出しサイトの記述子を返します。
    void
    initialize(MethodHandle relinkAndInvoke)
    再リンク呼び出しメソッドのハンドルを設定して、再リンク可能な呼び出しサイトを初期化するために動的リンカーによって呼び出されます。
    void
    relink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
    このメソッドは、呼び出しサイトが再リンクされるたびに動的リンカーによって呼び出されます。(例外についてはresetAndRelink(GuardedInvocation, MethodHandle)を参照してください)。
    void
    resetAndRelink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
    このメソッドは、コール・サイトが再リンクされるたびにダイナミック・リンカーによって呼び出され、リンカーはコール・サイトが以前のリンケージ・ステート(それはrelink(GuardedInvocation, MethodHandle)とどのように違うのですか?)を破棄することを望みます。
  • メソッドの詳細

    • initialize

      void initialize(MethodHandle relinkAndInvoke)
      再リンク呼び出しメソッドのハンドルを設定して、再リンク可能な呼び出しサイトを初期化するために動的リンカーによって呼び出されます。 コール・サイトの実装では、このメソッド・ハンドルをCallSite.setTarget(MethodHandle)を使用してターゲットとして設定することになっています。 Relink-and-invokeは、DynamicLinker.link(RelinkableCallSite)によって設定された初期メソッド・ハンドルであり、コール・サイトがその引数に基づいて最初の起動時に適切なターゲットに再リンクされ、リンクされたターゲットが(したがって、名前)によって呼び出されます。 このリンク・プロトコルは、呼び出しサイトが実際の引数で呼び出されるまでリンクを効果的に遅延させるので、呼び出し側の静的メソッドの型だけでなく、それらの引数に基づいてリンカーが微妙なリンクを決定できるようになります。
      パラメータ:
      relinkAndInvoke - Dynalinkが提供する再リンクおよび呼び出しメソッド・ハンドル。
    • getDescriptor

      CallSiteDescriptor getDescriptor()
      この呼び出しサイトの記述子を返します。
      戻り値:
      この呼び出しサイトの記述子。
    • relink

      void relink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
      このメソッドは、呼び出しサイトが再リンクされるたびに動的リンカーによって呼び出されます。(例外についてはresetAndRelink(GuardedInvocation, MethodHandle)を参照してください)。 コール・サイトがターゲット・メソッド・ハンドルに組み込むべきGuardedInvocationが渡されます。 このメソッドが呼び出されると、呼び出しサイトはポリモーフィック・インライン・キャッシュの実装のために他の無効でない呼び出しを保持し、この呼び出しでそれらを合成して最終的なターゲットを形成することができます。
      パラメータ:
      guardedInvocation - コール・サイトがターゲット・メソッド・ハンドルに組み込むべきガードされた呼び出し。
      relinkAndInvoke - 再リンクおよび呼び出しメソッド・ハンドル。 これは、コールバックとしてDynamicLinkerによって提供されるコール・サイトのメソッド型に一致するメソッド・ハンドルです。 このコール・サイトは、渡された引数でターゲットを呼び出せない究極のフォールバックとして使用する必要があります。 フォールバック・メソッドは、呼び出されると、呼び出しのために適切なターゲットGuardedInvocationを取得し、その後relink(GuardedInvocation, MethodHandle)またはresetAndRelink(GuardedInvocation, MethodHandle)を呼び出して、最後にターゲットを呼び出すような方法です。
    • resetAndRelink

      void resetAndRelink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
      このメソッドは、コール・サイトが再リンクされるたびにダイナミック・リンカーによって呼び出され、リンカーはコール・サイトが以前のリンケージ・ステート(それはrelink(GuardedInvocation, MethodHandle)とどのように違うのですか?)を破棄することを望みます。 コール・サイトが新しいターゲット・メソッド・ハンドルを作成するために使用するGuardedInvocationが渡されます。 このメソッドが呼び出されると、呼び出しサイトは以前の状態を保持しないようにし、現在の呼び出しのみをリンクすることになっています。
      パラメータ:
      guardedInvocation - コール・サイトがターゲット・メソッド・ハンドルを構築するために使用する必要のある保護された呼び出し。
      relinkAndInvoke - 再リンクおよび呼び出しメソッド・ハンドル。 これは、コールバックとしてDynamicLinkerによって提供されるコール・サイトのメソッド型に一致するメソッド・ハンドルです。 このコール・サイトは、渡された引数でターゲットを呼び出せない究極のフォールバックとして使用する必要があります。 フォールバック・メソッドは、呼び出されると、呼び出しのために適切なターゲットGuardedInvocationを取得し、その後relink(GuardedInvocation, MethodHandle)またはresetAndRelink(GuardedInvocation, MethodHandle)を呼び出して、最後にターゲットを呼び出すような方法です。