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

インタフェースRelinkableCallSite

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

public interface RelinkableCallSite
DynamicLinkerによって管理されるコール・サイトのインタフェース。 Dynalinkのユーザーは、このインタフェースをコール・サイト実装として実装する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)を起動し、最後にターゲットを起動するようなものです。