如何在MethodVariableAccess中计算局部变量索引



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

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

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

MethodVariableAccess.OffsetLoading访问一个不命名为index的偏移量,以准确区分。如果array中存在longdouble类型,则占用2个槽位。Byte Buddy使用这个抽象与ASM交互,其中调用相应的访问者需要相同的偏移量。

相关内容

  • 没有找到相关文章

最新更新