Почему HotSpot оптимизирует следующее с помощью подъема?

В «Эффективной Java» автор упомянул, что

while (!done) i++;

может быть оптимизирован с помощью HotSpot в

if (!done) {
    while (true) i++;
}


. Я очень смущен этим. Переменная done обычно не является const , почему компилятор может оптимизировать таким образом?

20
задан informatik01 28 March 2018 в 11:07
поделиться