如何计算 MethodVariableAccess 中的局部变量索引?
How to count local variable indexes in MethodVariableAccess?
根据 [1],在方法框架中,局部变量数组包含对被调用实例的引用、参数以及方法代码中使用的任何其他变量。另外,long
和 double
值占用两个局部变量。
当使用 Byte Buddy 通过堆栈操作生成方法的代码时,MethodVariableAccess.OffsetLoading
索引 long
和 double
值是否进入单个索引或是否需要,如使用 ASM直接考虑这些类型的值来计算局部变量索引?
[1] https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.6.1
MethodVariableAccess.OffsetLoading
访问一个未命名为 index 的偏移量以准确区分。如果数组中包含 long
或 double
类型,则这占两个插槽。 Byte Buddy 使用此抽象与 ASM 交互,其中调用相应访问者需要相同的偏移量。
根据 [1],在方法框架中,局部变量数组包含对被调用实例的引用、参数以及方法代码中使用的任何其他变量。另外,long
和 double
值占用两个局部变量。
当使用 Byte Buddy 通过堆栈操作生成方法的代码时,MethodVariableAccess.OffsetLoading
索引 long
和 double
值是否进入单个索引或是否需要,如使用 ASM直接考虑这些类型的值来计算局部变量索引?
[1] https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.6.1
MethodVariableAccess.OffsetLoading
访问一个未命名为 index 的偏移量以准确区分。如果数组中包含 long
或 double
类型,则这占两个插槽。 Byte Buddy 使用此抽象与 ASM 交互,其中调用相应访问者需要相同的偏移量。