Интерфейс RelinkableCallSite
- Все известные классы, реализующие интерфейс:
AbstractRelinkableCallSite, ChainedCallSite, SimpleRelinkableCallSite
public interface RelinkableCallSite
Интерфейс для точек вызова, управляемых объектом
DynamicLinker. Пользователи Dynalink должны использовать подклассы CallSite, которые также реализуют этот интерфейс, в качестве реализаций точек вызова. Для немедленного использования доступен подкласс SimpleRelinkableCallSite, реализующий стратегию мономорфного встроенного кэширования, а также ChainedCallSite, реализующий стратегию полиморфного встроенного кэширования и сохраняющий цепочку ранее связанных дескрипторов методов. После связывания с объектом DynamicLinker с помощью его метода DynamicLinker.link(RelinkableCallSite) перенастраиваемая точка вызова будет управляться этим объектом.- Начиная с:
- 9
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
CallSiteDescriptor |
getDescriptor() |
Возвращает дескриптор этой точки вызова. |
void |
initialize |
Вызывается динамическим связывателем для инициализации перенастраиваемой точки вызова путем установки дескриптора метода перенастройки и вызова. |
void |
relink |
Этот метод вызывается динамическим связывателем каждый раз при перенастройке точки вызова (однако исключение см. в описании resetAndRelink(GuardedInvocation, MethodHandle)). |
void |
resetAndRelink |
Этот метод вызывается динамическим связывателем каждый раз при перенастройке точки вызова, и связыватель хочет, чтобы точка вызова отбросила все предыдущее состояние связывания (этим он отличается от 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)и, наконец, вызывает цель.
© 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