3

我正在通过newLocalfrom添加新的本地人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。

生成的代码虽然有效。我只是想了解这里发生了什么魔法以及为什么。

谢谢

4

1 回答 1

3
于 2018-05-03T08:46:35.630 回答