Spec-Zone.ru › OpenJDK 25

Интерфейс RelinkableCallSite

Все известные классы, реализующие интерфейс:
AbstractRelinkableCallSite, ChainedCallSite, SimpleRelinkableCallSite
public interface RelinkableCallSite
Интерфейс для точек вызова, управляемых объектом DynamicLinker. Пользователи Dynalink должны использовать подклассы CallSite, которые также реализуют этот интерфейс, в качестве реализаций точек вызова. Для немедленного использования доступен подкласс SimpleRelinkableCallSite, реализующий стратегию мономорфного встроенного кэширования, а также ChainedCallSite, реализующий стратегию полиморфного встроенного кэширования и сохраняющий цепочку ранее связанных дескрипторов методов. После связывания с объектом DynamicLinker с помощью его метода DynamicLinker.link(RelinkableCallSite) перенастраиваемая точка вызова будет управляться этим объектом.
Начиная с:
9

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

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

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

initialize

void initialize(MethodHandle relinkAndInvoke)
Вызывается динамическим связывателем для инициализации перенастраиваемой точки вызова путем установки дескриптора метода перенастройки и вызова. Реализация точки вызова должна установить этот дескриптор метода в качестве целевого с помощью CallSite.setTarget(MethodHandle). Перенастройка и вызов — это начальный дескриптор метода, устанавливаемый методом DynamicLinker.link(RelinkableCallSite). При первом вызове точки вызова он приводит к ее перенастройке на соответствующую цель с учетом аргументов, после чего вызывается эта связанная цель (отсюда и название). Этот протокол связывания фактически откладывает связывание до момента вызова точки вызова с фактическими аргументами и тем самым позволяет связывателям принимать более тонкие решения о связывании на основании этих аргументов, а не только статического типа метода точки вызова.
Параметры:
relinkAndInvoke — дескриптор метода перенастройки и вызова, предоставляемый Dynalink.

getDescriptor

CallSiteDescriptor getDescriptor()
Возвращает дескриптор этой точки вызова.
Возвращает:
дескриптор этой точки вызова.

relink

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

resetAndRelink

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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/jdk.dynalink/jdk/dynalink/RelinkableCallSite.html

Spec-Zone.ru

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