Spec-Zone.ru › OpenJDK 17

Класс ChainedCallSite

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, с которыми он был связан, и при каждом запросе переподключения строит каскадную цепочку обработчиков методов, переходя от одного вызова к следующему. Количество запоминаемых вызовов можно настроить, переопределив getMaxChainLength() в подклассе. Когда этот сайт вызова переподключается к новому вызову, а длина цепочки уже достигла максимума, он отбросит самый старый вызов. Вызовы с недействительными точками переключения и вызовы, для которых вызвало исключение, которое их делает недействительными, удаляются из цепочки немедленно. Вызовы никогда не переупорядочиваются; обработчик метода, который был связан последним, всегда находится в начале цепочки, а самый старый — в ее конце. К сайту вызова можно безопасно переподключаться из нескольких потоков одновременно. Конфликты ресурсов при подключении решаются путём отбрасывания GuardedInvocation, созданного в проигравшем потоке, без его включения в цепочку, поэтому это может привести к многократному подключению для одних и тех же аргументов.

Краткое описание конструкторов

Конструктор Описание
ChainedCallSite(CallSiteDescriptor descriptor)
Создаёт новый сайт вызова, построенный на цепочке.

Краткое описание методов

Модификатор и тип Метод Описание
protected int getMaxChainLength()
Максимальное количество обработчиков методов в цепочке.
void relink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
Этот метод вызывается динамическим линковщиком каждый раз, когда сайт вызова переподключается (но см. RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle) для исключения).
void resetAndRelink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
Этот метод вызывается динамическим линковщиком каждый раз, когда сайт вызова переподключается и линковщик хочет, чтобы сайт вызова отбросил любые предыдущие данные о связи (в этом отличие от RelinkableCallSite.relink(GuardedInvocation, MethodHandle)).

Методы, объявленные в классе jdk.dynalink.support.AbstractRelinkableCallSite

getDescriptor, initialize

Методы, объявленные в классе java.lang.invoke.MutableCallSite

dynamicInvoker, getTarget, setTarget, syncAll

Методы, объявленные в классе java.lang.invoke.CallSite

type

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

ChainedCallSite

public ChainedCallSite(CallSiteDescriptor descriptor)
Создаёт новый сайт вызова, построенный на цепочке.
Параметры:
descriptor - дескриптор сайта вызова.

Подробное описание методов

getMaxChainLength

protected int getMaxChainLength()
Максимальное количество обработчиков методов в цепочке. По умолчанию 8. Можно переопределить в подклассе, если требуется изменить значение.
Возвращает:
максимальное количество обработчиков методов в цепочке. Значение возврата проверяется, и если переопределение возвращает значение меньше 1, будет выброшено исключение RuntimeException.

relink

public void relink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
Описание скопировано из интерфейса: RelinkableCallSite
Этот метод вызывается динамическим линковщиком каждый раз, когда сайт вызова переподключается (но см. RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle) для исключения). Ему передаётся GuardedInvocation , который сайт вызова должен включить в свой целевой обработчик метода. Когда этот метод вызывается, сайту вызова разрешается сохранять другие неотклоненные вызовы для реализации полиморфных кешей вызовов и объединять их с этим вызовом, чтобы сформировать его конечную цель.
Параметры:
guardedInvocation - защищенный вызов, который сайт вызова должен включить в свой целевой обработчик метода.
relinkAndInvoke - обработчик метода для переподключения и вызова. Это обработчик метода, соответствующий типу метода сайта вызова, который предоставляется DynamicLinker в качестве обратного вызова. Он должен использоваться этим сайтом вызова в качестве окончательного резервного варианта, когда он не может вызвать свою цель с переданными аргументами. Резервный метод такой, что при его вызове он попытается получить подходящий целевой GuardedInvocation для вызова, а затем вызовет RelinkableCallSite.relink(GuardedInvocation, MethodHandle) или RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle), а затем вызовет цель.

resetAndRelink

public void resetAndRelink(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)
Описание скопировано из интерфейса: RelinkableCallSite
Этот метод вызывается динамическим линковщиком каждый раз, когда сайт вызова переподключается и линковщик хочет, чтобы сайт вызова отбросил любые предыдущие данные о связи (в этом отличие от RelinkableCallSite.relink(GuardedInvocation, MethodHandle)). Ему передаётся GuardedInvocation , который сайт вызова должен использовать для построения своего нового целевого обработчика метода. При вызове этого метода сайту вызова не рекомендуется сохранять предыдущее состояние, и он должен связать только текущий вызов.
Параметры:
guardedInvocation - защищённый вызов, который сайт вызова должен использовать для построения целевого обработчика метода.
relinkAndInvoke - обработчик метода для переподключения и вызова. Это обработчик метода, соответствующий типу метода сайта вызова, который предоставляется DynamicLinker в качестве обратного вызова. Он должен использоваться этим сайтом вызова в качестве окончательного резервного варианта, когда он не может вызвать свою цель с переданными аргументами. Резервный метод такой, что при его вызове он попытается получить подходящий целевой GuardedInvocation для вызова, а затем вызовет RelinkableCallSite.relink(GuardedInvocation, MethodHandle) или RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle), а затем вызовет цель.

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/jdk.dynalink/jdk/dynalink/support/ChainedCallSite.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API