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.