0

根据 [1],在方法框架中,局部变量数组包含对被调用实例的引用、参数以及最后在方法代码中使用的任何其他变量。此外,longdouble值占用两个局部变量。

当使用 Byte Buddy 通过堆栈操作生成方法的代码时,MethodVariableAccess.OffsetLoading索引longdouble值是否会成为单个索引,或者是否需要像直接使用 ASM 那样考虑这些类型的值来计算本地 var 索引?

[1] https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.6.1

4

1 回答 1

1

MethodVariableAccess.OffsetLoading访问未命名为 index 的偏移量以准确区分。如果数组中包含longordouble类型,则这占两个插槽。Byte Buddy 使用此抽象与 ASM 交互,其中调用相应的访问者需要相同的偏移量。

于 2016-10-18T21:40:44.217 回答