有没有办法告诉ASM我不想要对特定方法使用SKIP_CODE
选项?例如,如果我有一个非常大的类:
public class Large
{
public void doManyThings() { /* ... */ }
public void methodWithLongBytecode() { /* ... */ }
public @inline void inlinableMethod() { /* ... */ }
}
我的编译器花了很多时间在不需要代码的方法上,因为它们无论如何也无法内联。但是,我仍然希望能够读取inlineableMethod
,以便编译器可以将其字节码内联到调用者中。有没有办法在课堂阅读期间使用 ASM 5.0.3 临时“禁用”SKIP_CODE
标志?
答案 0 :(得分:0)
不幸的是,没有。如果查看source code of a ASM ClassReader
,可以看到SKIP_CODE
属性被解释一次,然后存储在局部变量中。因此,即使通过反射改变标志,您也可以跳过所有方法或不跳过方法。但是,通过从null
返回visitMethod
,您可以指示不完全解释方法。