ASM字节码工程库中MethodVisitor类的visitLocalVariable()方法是做什么的?

2024-02-07

我在应用程序中使用 ASM(第一次)来创建 Java 类文件。这是我正在编写的编译器的后端。

我阅读了 ASM 文档的相关部分,并对堆栈映射框架有疑问。 ASM 表示,如果使用适当的标志初始化类编写器,它可以自动计算这些帧。我的问题是,这是否意味着我不必自己对方法访问者调用访问本地变量()方法?我不确定该方法的作用。文档确实说,如果自动计算帧,我不需要调用访问帧()方法,但它对访问本地变量()方法保持沉默。


visitLocalVariable()描述或定义debug信息存储在LocalVariableTable http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.13 and LocalVariableTypeTable http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.14的属性Code属性。它们不是正常操作所必需的,并且与存储在StackMapTable.

换句话说,除非你想提供调试信息,否则你永远不需要调用visitLocalVariable(),无论堆栈映射帧是否自动计算。


请注意这些属性中存储的信息的差异。LocalVariable[Type]Table存储局部变量的名称和[通用]类型及其与源级语言有关的范围。StackMapTable存储有关字节码验证器的 JVM 类型系统的局部变量和操作数堆栈条目的类型信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASM字节码工程库中MethodVisitor类的visitLocalVariable()方法是做什么的? 的相关文章

随机推荐