Pull to refresh

Comments 5

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

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

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

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

Sign up to leave a comment.

Articles

Change theme settings