Обновить
0
0

Пользователь

Отправить сообщение
Здесь не очевидно, что в x может прилететь из другого треда. И вот тут и проблема: согласно java memory model, этого может никогда и не произойти. И компилятор имеет право так считать. А может и произойти.

Это называется undefined behavior, это когда чего-то делать нельзя, но программист всё равно это делает. Компилятор имеет право делать вид, будто UB никогда не происходит, что очень сильно развязывает ему руки в плане оптимизаций. Как следствие, когда программист пытается делать то, чего делать нельзя, в общем случае это заканчивается плохо.
2. Там же С++

А какая разница, оптимизация одна и та же — обычный constant propagation.
(справедливости ради, самые известные компиляторы, насколько я знаю, так не делают)

Если компилятор докажет, что x нигде не меняется — очень даже делает.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность