java.lang.Object
java.lang.invoke.CallSite
java.lang.invoke.MutableCallSite
jdk.dynalink.support.AbstractRelinkableCallSite
jdk.dynalink.support.ChainedCallSite
- すべての実装されたインタフェース:
RelinkableCallSite
public class ChainedCallSite extends AbstractRelinkableCallSite
ポリモーフィックなインライン・キャッシング戦略を実装する再リンク可能なコール・サイト。 それはリンクされていた最大8つの
GuardedInvocation
を記憶しており、各再リンク・リクエストでは、1つの呼び出しのメソッド・ハンドルのカスケード・チェーンが構築され、次のタスクに戻ります。 記憶された呼び出しの数は、サブクラスのgetMaxChainLength()
をオーバーライドすることによってカスタマイズできます。 この呼び出しサイトが新しい呼び出しで再リンクされ、チェーンの長さがすでに最大になっている場合、最も古い呼び出しを破棄します。 無効化されたスイッチ・ポイントを持つ呼び出しと、無効化された例外がトリガーされた呼び出しは、チェーンから賢く削除されます。 呼び出しは並べ替えられません。直近にリンクされたメソッド・ハンドルは常にチェーンの始めにあり、最後にリンクされていないメソッド・ハンドルは常に最後にあります。 コール・サイトは、同時に複数のスレッドで安全に再リンクできます。 リンクの競合条件は、失われたスレッドで生成されたGuardedInvocation
をチェーンに組み込むことなくスローすることによって解決されるため、同じ引数に対して繰り返しリンクする可能性があります。 -
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 ChainedCallSite(CallSiteDescriptor descriptor)
新しい連鎖呼び出しサイトを作成します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 protected int
getMaxChainLength()
チェーン内のメソッド・ハンドルの最大数。クラス java.lang.invoke.MutableCallSiteで宣言されたメソッド
getTarget, setTarget, syncAll
クラス java.lang.invoke.CallSiteで宣言されたメソッド
dynamicInvoker, type
クラス java.lang.Objectで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
インタフェース jdk.dynalink.RelinkableCallSiteで宣言されたメソッド
getDescriptor, initialize, relink, resetAndRelink
-
コンストラクタの詳細
-
ChainedCallSite
public ChainedCallSite(CallSiteDescriptor descriptor)新しい連鎖呼び出しサイトを作成します。- パラメータ:
descriptor
- コール・サイトの記述子。
-
-
メソッドの詳細
-
getMaxChainLength
protected int getMaxChainLength()チェーン内のメソッド・ハンドルの最大数。 デフォルトは8です。 値を変更する必要がある場合は、サブクラスでオーバーライドできます。- 戻り値:
- チェーン内のメソッド・ハンドルの最大数。 戻り値がチェックされ、オーバーライドが1より小さい値を返した場合は、
RuntimeException
がスローされます。
-