- 既知のすべての実装クラス:
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)
を呼び出して、最後にターゲットを呼び出すような方法です。
-