我正在通过newLocal
from添加新的本地人LocalVariableSorter
。我要添加局部变量的方法是一个带有长参数的实例方法。我要添加两个本地人;一长一物。示例代码中没有其他本地变量。
结果,我预计会有以下插槽/索引:
0 - this
1 - the long param
3 - my 1st local added via `newLocal` - using two slots as it is a long
5 - my 2nd local added via `newLocal`
我得到的回报newLocal
是 3 和 7。为什么会有这么大的差距?
更奇怪的是,当我xSTORE
使用这些索引添加指令并使用 javap 检查结果时,它向我显示:
LSTORE 5
ASTORE 8
注意:不仅值与我传递给 xSTORE 指令的值不同,而且它们之间的差距现在是 3 而不是之前的 4。
生成的代码虽然有效。我只是想了解这里发生了什么魔法以及为什么。
谢谢