Комментарии 5
Спасибо за этот справочник. Может быть пригодится.
Нужно отметить, что не все из перечисленных методов являются интринсиками в прямом смысле, то есть, вовсе не обязательно, что JIT подставляет вместо вызова особый код. Некоторые компилируются как обычные Java методы, а их упоминание в
Например,
vmSymbols.hpp
обусловлено необходимостью отличить их в рантайме по другой причине.Например,
Method.invoke
отмечен, чтобы не учитывать его в security check при обходе стека. Наличие Throwable.fillInStackTrace
служит хинтом для Escape Analysys, а Unsafe.park/unpark
и вовсе напрасно отмечены.Их упоминание в vmSymbols.hpp обусловлено необходимостью отличить их в рантайме по другой причине.Выглядит костыльно. Дополню статью этим комментарием.
Throwable.fillInStackTrace
начиная с JDK 9 вовсе убрали из списка интринсиков.О да, насчёт fillInStackTrace
совсем не удивлён. Нам его тоже приходится специально обрабатывать, например, при выводе чистоты методов по байткоду. Слишком уж он вездесущ, чтобы его просто проигнорировать.
Про интринсик
опубликовал разбор задачи с JBreak: Разбор перформансных задач с JBreak (часть 4).
_dpow java.lang.Math.pow(double, double)
опубликовал разбор задачи с JBreak: Разбор перформансных задач с JBreak (часть 4).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Полный перечень intrinsic-функций в HotSpot в JDK 7, 8, 9 и 10