Класс AbstractRelinkableCallSite
java.lang.Object
java.lang.invoke.CallSite
java.lang.invoke.MutableCallSite
jdk.dynalink.support.AbstractRelinkableCallSite
- Все реализуемые интерфейсы:
RelinkableCallSite
- Прямые известные подклассы:
ChainedCallSite, SimpleRelinkableCallSite
public abstract class AbstractRelinkableCallSite extends MutableCallSite implements RelinkableCallSite
Базовая реализация
RelinkableCallSite в виде MutableCallSite. Она хранит CallSiteDescriptor, переданный конструктору, и предоставляет корректную реализацию метода initialize(MethodHandle). Подклассы должны предоставлять методы RelinkableCallSite.relink(GuardedInvocation, MethodHandle) и RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle).- Начиная с:
- 9
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создает новую абстрактную перенастраиваемую точку вызова. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
CallSiteDescriptor |
getDescriptor() |
Возвращает дескриптор этой точки вызова. |
void |
initialize |
Вызывается динамическим компоновщиком для инициализации перенастраиваемой точки вызова путем установки дескриптора метода перенастройки и вызова. |
Методы, объявленные в классе MutableCallSite
dynamicInvoker, getTarget, setTarget, syncAll | Модификатор и тип | Метод | Описание |
|---|---|---|
final MethodHandle |
dynamicInvoker() |
Создает дескриптор метода, эквивалентный инструкции invokedynamic, связанной с этой точкой вызова. |
final MethodHandle |
getTarget() |
Возвращает целевой метод точки вызова, который ведет себя как обычное поле MutableCallSite. |
void |
setTarget |
Обновляет целевой метод этой точки вызова как обычную переменную. |
static void |
syncAll |
Выполняет операцию синхронизации для каждой точки вызова в указанном массиве, заставляя все остальные потоки отбросить ранее загруженные кэшированные значения, полученные из цели любой из этих точек вызова. |
Методы, объявленные в классе CallSite
type | Модификатор и тип | Метод | Описание |
|---|---|---|
MethodType |
type() |
Возвращает тип цели этой точки вызова. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо истечения определенного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо истечения определенного промежутка реального времени. |
Методы, объявленные в интерфейсе RelinkableCallSite
relink, resetAndRelink | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
relink |
Этот метод вызывается динамическим компоновщиком при каждой перенастройке точки вызова (исключение см. в описании RelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle)). |
void |
resetAndRelink |
Этот метод вызывается динамическим компоновщиком при каждой перенастройке точки вызова, и при этом компоновщик хочет, чтобы точка вызова отбросила все предыдущее состояние связывания (этим он отличается от RelinkableCallSite.relink(GuardedInvocation, MethodHandle)). |
Подробное описание конструкторов
AbstractRelinkableCallSite
protected AbstractRelinkableCallSite(CallSiteDescriptor descriptor)
Создает новую абстрактную перенастраиваемую точку вызова.
- Параметры:
-
descriptor— дескриптор этой точки вызова, который будет возвращен методомgetDescriptor(). ТипCallSite.type()точки вызова будет равенCallSiteDescriptor.getMethodType()дескриптора. - Исключения:
-
NullPointerException— еслиdescriptorимеет значение null.
Подробное описание методов
getDescriptor
public CallSiteDescriptor getDescriptor()
Описание скопировано из интерфейса:
RelinkableCallSiteВозвращает дескриптор этой точки вызова.
- Определен в:
-
getDescriptorв интерфейсеRelinkableCallSite - Возвращает:
- дескриптор этой точки вызова.
initialize
public void initialize(MethodHandle relinkAndInvoke)
Описание скопировано из интерфейса:
RelinkableCallSiteВызывается динамическим компоновщиком для инициализации перенастраиваемой точки вызова путем установки дескриптора метода перенастройки и вызова. Реализация точки вызова должна установить этот дескриптор метода в качестве цели с помощью
CallSite.setTarget(MethodHandle). Дескриптор метода перенастройки и вызова — это начальный дескриптор метода, установленный методом DynamicLinker.link(RelinkableCallSite), который при первом вызове точки вызова приводит к ее перенастройке на подходящую цель на основе аргументов, после чего вызывается связанная цель (отсюда и название). Этот протокол связывания фактически откладывает связывание до тех пор, пока точка вызова не будет вызвана с фактическими аргументами, и тем самым позволяет компоновщикам принимать более точные решения о связывании на основе этих аргументов, а не только статического типа метода точки вызова.- Определен в:
-
initializeв интерфейсеRelinkableCallSite - Параметры:
-
relinkAndInvoke— дескриптор метода перенастройки и вызова, предоставленный Dynalink.
© 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.