Какой код Java заставит javac 1.6 использовать коды операций 'swap' и 'nop'?
Я работаю над любительской реализацией JVM и пытаюсь убедиться, что у меня есть тестовое покрытие для всех кодов операций в спецификации. Я получил это до последних нескольких, ноnop
а такжеswap
ускользал от меня Например, вот простая функция, которая может использоватьswap
:
static int do_swap() {
int a = 56;
int b = 32;
return b%a;
}
Но байт-код производитсяjavac 1.6
избегает подмены вместо локального хранилища:
static int do_swap();
Code:
0: bipush 56
2: istore_0
3: bipush 32
5: istore_1
6: iload_1
7: iload_0
8: irem
9: ireturn
Есть идеи?