- 既知のすべての実装クラス:
AbstractRelinkableCallSite
,ChainedCallSite
,SimpleRelinkableCallSite
public interface RelinkableCallSite
DynamicLinker
によって管理されるコール・サイトのインタフェース。 Dynalinkのユーザーは、このインタフェースをコール・サイト実装として実装するCallSite
のサブクラスを使用する必要があります。 多相インライン・キャッシング戦略を実装し、以前にリンクされた一連のメソッド・ハンドルを保持する、単相インライン・キャッシング戦略とChainedCallSite
を実装する、すぐに使用できるSimpleRelinkableCallSite
サブクラスがあります。 再リンク可能コール・サイトは、DynamicLinker.link(RelinkableCallSite)
メソッドを使用して関連付けられると、DynamicLinker
オブジェクトによって管理されます。 - 導入されたバージョン:
- 9
-
メソッドのサマリー
修飾子と型メソッド説明このコール・サイトの記述子を返します。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
-
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)
を起動し、最後にターゲットを起動するようなものです。
-