有没有一种方法可以告诉ASM我不想对特定的方法使用SKIP_CODE选项?例如,如果我有这样一个非常大的类:
public class Large
{
public void doManyThings() { /* ... */ }
public void methodWithLongBytecode() { /* ... */ }
public @inline void inlinableMethod() { /* ... */ }
}我的编译器花了很多时间在代码不需要的方法上,因为它们无论如何都不能内联。但是,我仍然希望能够读取inlineableMethod,以便编译器可以将它的字节码内联到调用者中。是否有一种方法在使用SKIP_CODE ASM5.0.3读取类时暂时“禁用”标志
发布于 2015-05-19 20:50:41
很遗憾,我不会。如果查看ClassReader,可以看到SKIP_CODE属性只解释一次,然后存储在局部变量中。因此,即使通过反射地更改标志,也可以跳过所有方法或不跳过所有方法。但是,通过从null返回visitMethod,您可以指示不要完全解释方法。
https://stackoverflow.com/questions/30329827
复制相似问题