Что касается многоуровневой последовательности компиляции JVM, происходит ли изолированная оптимизация метода перед внедJAVA

Программисты JAVA общаются здесь
Anonymous
Что касается многоуровневой последовательности компиляции JVM, происходит ли изолированная оптимизация метода перед внед

Сообщение Anonymous »

Многоуровневые шаги, предоставленные Oracle:

Мне кажется, что ...
Я не буду определять. контекст вызовов) ... до на самом деле происходит инлингация. это.
Итак, я бы предположил, что независимое изолированное профилирование происходит на уровне метода, что в конечном итоге приводит к изолированным оптимизациям ... до , имея право на внедрение. JIT работает/оптимизирует на основанной на контексте . сначала .
Реальная разница будет:
Профилирование/оптимизация:

[*] сверху вниз?
или снизу вверх? /> < /ul>
Теперь ... Я не нашел более детального объяснения ... но я бы предположил, что «INLINING» Шаг является частью процесса C1 или C2.
, но, возможно, оптимизация, такие как Устранение мертвой ветви < /strong> также является частью C1 и C2, так как они могут возникнуть непосредственно на уровне подхода. Вставка ... не «прямой вызов», который был бы классифицирован как девиртуализация ... но не внедряющий для перспективы.void extremelyHotPath() {
obj.something();
obj2.something();
obj3.something();
obj4.something();
obj5.something();
obj6.something();
}
// ---> obj scope
final boolean flag = false;
void doSomething() {
if (flag) throw new IllegalStateException();
}

Итак, если JIT выполняет оптимизацию «сверху вниз» ... Устранение мертвого ветви будет сделано после
Inlining.void extremelyHotPath() {
if (obj.flag) throw new IllegalStateException();
if (obj2.flag) throw new IllegalStateException();
if (obj3.flag) throw new IllegalStateException();
if (obj4.flag) throw new IllegalStateException();
if (obj5.flag) throw new IllegalStateException();
if (obj6.flag) throw new IllegalStateException();
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... tion-occur

Вернуться в «JAVA»