Как стать автором
Обновить

Комментарии 5

Спасибо за этот справочник. Может быть пригодится.
Нужно отметить, что не все из перечисленных методов являются интринсиками в прямом смысле, то есть, вовсе не обязательно, что JIT подставляет вместо вызова особый код. Некоторые компилируются как обычные Java методы, а их упоминание в vmSymbols.hpp обусловлено необходимостью отличить их в рантайме по другой причине.

Например, Method.invoke отмечен, чтобы не учитывать его в security check при обходе стека. Наличие Throwable.fillInStackTrace служит хинтом для Escape Analysys, а Unsafe.park/unpark и вовсе напрасно отмечены.
Их упоминание в vmSymbols.hpp обусловлено необходимостью отличить их в рантайме по другой причине.
Выглядит костыльно. Дополню статью этим комментарием.

Throwable.fillInStackTrace начиная с JDK 9 вовсе убрали из списка интринсиков.

О да, насчёт fillInStackTrace совсем не удивлён. Нам его тоже приходится специально обрабатывать, например, при выводе чистоты методов по байткоду. Слишком уж он вездесущ, чтобы его просто проигнорировать.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации