LINUX.ORG.RU

История изменений

Исправление stevejobs, (текущая версия) :

Ты видел что-нибудь в Java, что выполняется без оверхеда? :D Вопрос только в его размере: у интринсик он минимальный, у спринга - гигантский.

Контекст функции во всех примерах выше передаётся (разными способами). Если менять со стороны компилятора - у тебя всегда есть ссылка на текущий фрейм (что в голом хотспоте, что в граале). Если менять со стороны клиента - джава-агент знает кучу разной инфы о функции, которую собирается менять. Спринг вообще твой бин собирает из разных кусков

Если совсем уж упарываться, то можно сделать то же самое, что делает джит (бинарные шаблоны, куда ты подставляешь нужный код), но это уже явно не на пару дней

Исходная версия stevejobs, :

Ты видел что-нибудь в Java, что выполняется без оверхеда? :D Вопрос только в его размере: у интринсик он минимальный, у агента - гигантский.

Контекст функции во всех примерах выше передаётся (разными способами). Если менять со стороны компилятора - у тебя всегда есть ссылка на текущий фрейм (что в голом хотспоте, что в граале). Если менять со стороны клиента - джава-агент знает кучу разной инфы о функции, которую собирается менять.

Если совсем уж упарываться, то можно сделать то же самое, что делает джит (бинарные шаблоны, куда ты подставляешь нужный код), но это уже явно не на пару дней