Основываясь на моем кратком чтении исходного кода для компилятора javac
в Java 8, нет мест , где он будет выдавать POP2
для извлечения значений категории 1 из стека,Если необходимо извлечь два значения категории 1, то компилятором будет выдано два POP
байт-кода.
Предостережения:
- Я смотрел только одну версию OpenJDK
javac
компилятор - существуют другие (не Sun / Oracle) Java-компиляторы байт-кода
- байт-коды могут быть сгенерированы или изменены другими способами .... включая обфускаторы кода!
Вероятно, поведение всплывающих двух значений POP2
использовалось в ранних компиляторах байт-кода Java до появления компиляторов JIT.Но теперь, когда у нас есть JIT-компиляторы, в байт-кодовых компиляторах нет смысла , "оптимизирующих" два POP
байт-кода до POP2
.