openjdk.ruOpenJDK на русском

JEP draft: Simplified bootstrap method invocation

Упрощённый вызов bootstrap-методов

ОтветственныйJohn Rose
ТипFeature
ОбластьJDK
СтатусDraft
Компонентhotspot / runtime
Создан2020/06/24 18:42
Обновлён2024/07/10 00:04
Задача8248257

ЧЕРНОВИК ЧЕРНОВИК ЧЕРНОВИК

Я хочу переработать вызов BSM, чтобы перенести больше логики в библиотеки, а оставшиеся части, которые связывает JVM, сделать менее зависимыми от разрешения и более символьными. Основная идея — единственный uber-BSM, который определён в JVMS (как статический API вызова из JVM в библиотеку) и реализован вне JVMS. Он будет передавать ровно столько необработанной, неразрешённой информации, сколько нужно библиотеке для реализации текущих (indy/condy) и будущих API, связанных с BSM. Отказавшись от разрешения аргументов BSM, мы (a) уменьшим трудности с использованием BSM в java.base (иначе кто будет выполнять bootstrap для самих bootstrap-методов?) и (b) позволим BSM точнее воспроизводить жёстко заданные в JVM механизмы связывания.

Я считаю, что обе цели важны, чтобы с помощью BSM расширять species для Valhalla.

Вероятно, это следующий шаг после JDK-8210685, поскольку его цель — упростить спецификацию JVM и перенести больше решений об API на уровень единого глобального uber-BSM, определённого в библиотеке. Существующие обращения к BSM в JVMS будут переписаны так, чтобы просто указывать базовые (неразрешённые) аргументы единственного uber-BSM. Понадобится какая-то более низкоуровневая рефлексия (без разрешения) для class-файла, с которым работает BSM. Это тема отдельного JEP или RFE.