Que código Java forçará o javac 1.6 a usar os opcodes 'swap' e 'nop'?
Estou trabalhando em uma implementação JVM amadora e tentando garantir uma cobertura de teste para todos os códigos de operação nas especificações. Eu consegui isso até os últimos, masnop
eswap
me iludiram. Por exemplo, aqui está uma função simples que pode usarswap
:
static int do_swap() {
int a = 56;
int b = 32;
return b%a;
}
Mas o bytecode produzido porjavac 1.6
vita a troca no lugar do armazenamento loca
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
Alguma ideia