Java有一条dup2_x2
指令,根据documentation,该指令具有以下行为:
复制操作数堆栈上最上面的一个或两个值,并按原始顺序将复制的值插入操作数堆栈.
javac
是否使用此指令生成字节码?它的潜在用例是什么?
Java有一条dup2_x2
指令,根据documentation,该指令具有以下行为:
复制操作数堆栈上最上面的一个或两个值,并按原始顺序将复制的值插入操作数堆栈.
javac
是否使用此指令生成字节码?它的潜在用例是什么?
例如,下面的代码
public static Long example1(Long[] array, int i, long l) {
return array[i]=l;
}
public static long example2(long[] array, int i, long l) {
return array[i]=l;
}
编译成
public static java.lang.Long example1(java.lang.Long[], int, long);
Code:
0: aload_0
1: iload_1
2: lload_2
3: invokestatic #1 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
6: dup_x2
7: aastore
8: areturn
public static long example2(long[], int, long);
Code:
0: aload_0
1: iload_1
2: lload_2
3: dup2_x2
4: lastore
5: lreturn