- 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 intgetMaxChainLength()チェーン内のメソッド・ハンドルの最大数。-
クラスjava.lang.invokeで宣言されたメソッド。MutableCallSite
getTarget, setTarget, syncAll
-
クラスjava.lang.invokeで宣言されたメソッド。CallSite
dynamicInvoker, type
-
クラスjava.langで宣言されたメソッド。オブジェクト
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がスローされます。
-
-