Spec-Zone.ru › OpenJDK 21

Класс 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, 2023, 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/21/docs/api/jdk.dynalink/jdk/dynalink/support/ChainedCallSite.html

Spec-Zone.ru

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