类org.objectweb.asm.commons.AdviceAdapter源码实例Demo

下面列出了怎么用org.objectweb.asm.commons.AdviceAdapter的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: MRouter   文件: RouterInitGenerator.java
@Override
public MethodVisitor visitMethod(int access, final String name, final String desc, String signature, String[] exceptions) {
    MethodVisitor methodVisitor = cv.visitMethod(access, name, desc, signature, exceptions);
    return new AdviceAdapter(ASM5, methodVisitor, access, name, desc) {
        @Override
        protected void onMethodEnter() {
            super.onMethodEnter();

            if (name.equals(globalInfo.getRouterConfig().getRouterInitMethod())) {
                for (String clazz : globalInfo.getRouterComponents()) {
                    mv.visitMethodInsn(Opcodes.INVOKESTATIC,
                            clazz,
                            globalInfo.getRouterConfig().getRouterInitMethod(),
                            globalInfo.getRouterConfig().getRouterInitMethodDescriptor(),
                            false);
                }
            }
        }
    };

}
 
源代码2 项目: jvm-sandbox   文件: AsmCodeLock.java
/**
 * 用ASM构建代码锁
 *
 * @param aa             ASM
 * @param beginCodeArray 代码块开始特征数组
 *                       字节码流要求不能破坏执行堆栈
 * @param endCodeArray   代码块结束特征数组
 *                       字节码流要求不能破坏执行堆栈
 */
public AsmCodeLock(AdviceAdapter aa, int[] beginCodeArray, int[] endCodeArray) {
    if (null == beginCodeArray
            || null == endCodeArray
            || beginCodeArray.length != endCodeArray.length) {
        throw new IllegalArgumentException();
    }

    this.aa = aa;
    this.beginCodeArray = beginCodeArray;
    this.endCodeArray = endCodeArray;

}
 
源代码3 项目: jvm-sandbox   文件: EventWeaver.java
CallAsmCodeLock(AdviceAdapter aa) {
    super(
            aa,
            new int[]{
                    ICONST_2, POP
            },
            new int[]{
                    ICONST_3, POP
            }
    );
}
 
 类所在包
 类方法
 同包方法