Разве оптимизация, объединяющая любые последовательно идущие секции синхронизации не нарушает стандарт Java?
Прежде всего, программист мой специально завершить секцию, чтобы дать возможность её захвата другому коду (крайне кривой способ, однако). А во-вторых, разве это формальное не нарушает модель памяти? Я, признаюсь, не читал последние версии, а там много изменили, но есть стойкое ощущение, что, по-крайней мере, с более старыми релизами должно быть противоречие.
[Перевод] Как работает Graal — JIT-компилятор JVM на Java