- 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
がスローされます。
-
-