Example usage for org.objectweb.asm MethodVisitor visitLabel

List of usage examples for org.objectweb.asm MethodVisitor visitLabel

Introduction

In this page you can find the example usage for org.objectweb.asm MethodVisitor visitLabel.

Prototype

public void visitLabel(final Label label) 

Source Link

Document

Visits a label.

Usage

From source file:org.chromium.bytecode.CustomResourcesClassAdapter.java

License:Open Source License

/**
 * Generates:/*from  ww  w . j  a  v a 2 s  .  c om*/
 *
 * <pre>
 * public Context createConfigurationContext(Configuration configuration) {
 *   // createConfigurationContext does not exist before API level 17.
 *   if (Build.VERSION.SDK_INT < 17) return null;
 *   if (!BuildHooksAndroid.isEnabled()) return super.createConfigurationContext(configuration);
 *   return BuildHooksAndroid.createConfigurationContext(
 *          super.createConfigurationContext(configuration));
 * }
 * </pre>
 * }
 */
private void delegateCreateConfigurationContext() {
    String methodName = "createConfigurationContext";
    String methodDescriptor = TypeUtils.getMethodDescriptor(CONTEXT, CONFIGURATION);
    MethodVisitor mv = super.visitMethod(ACC_PUBLIC, methodName, methodDescriptor, null, null);
    mv.visitCode();
    mv.visitFieldInsn(GETSTATIC, "android/os/Build$VERSION", "SDK_INT", INT);
    mv.visitIntInsn(BIPUSH, 17);
    Label l0 = new Label();
    mv.visitJumpInsn(IF_ICMPGE, l0);
    mv.visitInsn(ACONST_NULL);
    mv.visitInsn(ARETURN);
    mv.visitLabel(l0);
    mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
    mv.visitMethodInsn(INVOKESTATIC, BUILD_HOOKS_ANDROID, IS_ENABLED_METHOD, IS_ENABLED_DESCRIPTOR, false);
    Label l1 = new Label();
    mv.visitJumpInsn(IFNE, l1);
    mv.visitVarInsn(ALOAD, 0);
    mv.visitVarInsn(ALOAD, 1);
    mv.visitMethodInsn(INVOKESPECIAL, mSuperClassName, methodName, methodDescriptor, false);
    mv.visitInsn(ARETURN);
    mv.visitLabel(l1);
    mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
    mv.visitVarInsn(ALOAD, 0);
    mv.visitVarInsn(ALOAD, 1);
    mv.visitMethodInsn(INVOKESPECIAL, mSuperClassName, methodName, methodDescriptor, false);
    mv.visitMethodInsn(INVOKESTATIC, BUILD_HOOKS_ANDROID, methodName,
            TypeUtils.getMethodDescriptor(CONTEXT, CONTEXT), false);
    mv.visitInsn(ARETURN);
    mv.visitMaxs(2, 2);
    mv.visitEnd();
}

From source file:org.chromium.bytecode.CustomResourcesClassAdapter.java

License:Open Source License

/**
 * Generates:/*from   w  w  w  . j  a v a 2 s.  c  om*/
 *
 * <pre>
 * public void setTheme(int theme) {
 *   if (!BuildHooksAndroid.isEnabled()) {
 *     super.setTheme(theme);
 *     return;
 *   }
 *   BuildHooksAndroid.setTheme(this, theme);
 * }
 * </pre>
 */
private void delegateSetTheme() {
    String methodName = "setTheme";
    String methodDescriptor = TypeUtils.getMethodDescriptor(VOID, INT);
    String buildHooksMethodDescriptor = TypeUtils.getMethodDescriptor(VOID, CONTEXT, INT);
    MethodVisitor mv = super.visitMethod(ACC_PUBLIC, methodName, methodDescriptor, null, null);
    mv.visitCode();
    mv.visitMethodInsn(INVOKESTATIC, BUILD_HOOKS_ANDROID, IS_ENABLED_METHOD, IS_ENABLED_DESCRIPTOR, false);
    Label l0 = new Label();
    mv.visitJumpInsn(IFNE, l0);
    mv.visitVarInsn(ALOAD, 0);
    mv.visitVarInsn(ILOAD, 1);
    mv.visitMethodInsn(INVOKESPECIAL, mSuperClassName, methodName, methodDescriptor, false);
    mv.visitInsn(RETURN);
    mv.visitLabel(l0);
    mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
    mv.visitVarInsn(ALOAD, 0);
    mv.visitVarInsn(ILOAD, 1);
    mv.visitMethodInsn(INVOKESTATIC, BUILD_HOOKS_ANDROID, methodName, buildHooksMethodDescriptor, false);
    mv.visitInsn(RETURN);
    mv.visitMaxs(2, 2);
    mv.visitEnd();
}

From source file:org.chromium.bytecode.CustomResourcesClassAdapter.java

License:Open Source License

/**
 * Generates://  www  . ja v  a 2 s  .co m
 *
 * <pre>
 * public returnType methodName() {
 *   if (!BuildHooksAndroid.isEnabled()) return super.methodName();
 *   return BuildHooksAndroid.methodName(this);
 * }
 * </pre>
 */
private void delegateGet(String methodName, String returnType) {
    String getMethodDescriptor = TypeUtils.getMethodDescriptor(returnType);
    String buildHooksGetMethodDescriptor = TypeUtils.getMethodDescriptor(returnType, CONTEXT);
    MethodVisitor mv = super.visitMethod(ACC_PUBLIC, methodName, getMethodDescriptor, null, null);
    mv.visitCode();
    mv.visitMethodInsn(INVOKESTATIC, BUILD_HOOKS_ANDROID, IS_ENABLED_METHOD, IS_ENABLED_DESCRIPTOR, false);
    Label l0 = new Label();
    mv.visitJumpInsn(IFNE, l0);
    mv.visitVarInsn(ALOAD, 0);
    mv.visitMethodInsn(INVOKESPECIAL, mSuperClassName, methodName, getMethodDescriptor, false);
    mv.visitInsn(ARETURN);
    mv.visitLabel(l0);
    mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
    mv.visitVarInsn(ALOAD, 0);
    mv.visitMethodInsn(INVOKESTATIC, BUILD_HOOKS_ANDROID, methodName, buildHooksGetMethodDescriptor, false);
    mv.visitInsn(ARETURN);
    mv.visitMaxs(1, 1);
    mv.visitEnd();
}

From source file:org.codehaus.aspectwerkz.aspect.container.LazyPerXFactoryCompiler.java

License:Open Source License

protected void createAspectOf() {
    m_cw.visitField(ACC_PRIVATE + ACC_STATIC, FACTORY_ASPECTS_FIELD_NAME, MAP_CLASS_SIGNATURE, null, null);

    m_clinit.visitTypeInsn(NEW, "java/util/WeakHashMap");
    m_clinit.visitInsn(DUP);/*  www .j ava2s  .c o  m*/
    m_clinit.visitMethodInsn(INVOKESPECIAL, "java/util/WeakHashMap", INIT_METHOD_NAME,
            NO_PARAM_RETURN_VOID_SIGNATURE);
    m_clinit.visitFieldInsn(PUTSTATIC, m_aspectFactoryClassName, FACTORY_ASPECTS_FIELD_NAME,
            MAP_CLASS_SIGNATURE);

    MethodVisitor cv = m_cw.visitMethod(ACC_PUBLIC + ACC_STATIC + ACC_FINAL, FACTORY_ASPECTOF_METHOD_NAME,
            "(" + getXSignature() + ")" + m_aspectClassSignature, null, null);

    cv.visitFieldInsn(GETSTATIC, m_aspectFactoryClassName, FACTORY_ASPECTS_FIELD_NAME, MAP_CLASS_SIGNATURE);
    cv.visitVarInsn(ALOAD, 0);//Class
    cv.visitMethodInsn(INVOKEINTERFACE, MAP_CLASS_NAME, "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
    cv.visitVarInsn(ASTORE, 1);
    cv.visitVarInsn(ALOAD, 1);
    Label ifBound = new Label();
    cv.visitJumpInsn(IFNONNULL, ifBound);
    if (m_hasAspectContainer) {
        cv.visitFieldInsn(GETSTATIC, m_aspectFactoryClassName, FACTORY_CONTAINER_FIELD_NAME,
                ASPECT_CONTAINER_CLASS_SIGNATURE);
        cv.visitMethodInsn(INVOKEINTERFACE, ASPECT_CONTAINER_CLASS_NAME, ASPECT_CONTAINER_ASPECTOF_METHOD_NAME,
                "(" + getXSignature() + ")Ljava/lang/Object;");
        cv.visitTypeInsn(CHECKCAST, m_aspectClassName);
    } else {
        cv.visitTypeInsn(NEW, m_aspectClassName);
        cv.visitInsn(DUP);
        cv.visitMethodInsn(INVOKESPECIAL, m_aspectClassName, INIT_METHOD_NAME, NO_PARAM_RETURN_VOID_SIGNATURE);
    }
    cv.visitVarInsn(ASTORE, 2);
    cv.visitFieldInsn(GETSTATIC, m_aspectFactoryClassName, FACTORY_ASPECTS_FIELD_NAME, MAP_CLASS_SIGNATURE);
    cv.visitVarInsn(ALOAD, 0);
    cv.visitVarInsn(ALOAD, 2);
    cv.visitMethodInsn(INVOKEINTERFACE, MAP_CLASS_NAME, "put",
            "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
    cv.visitVarInsn(ALOAD, 2);
    cv.visitInsn(ARETURN);

    cv.visitLabel(ifBound);
    cv.visitVarInsn(ALOAD, 1);
    cv.visitTypeInsn(CHECKCAST, m_aspectClassName);
    cv.visitInsn(ARETURN);
    cv.visitMaxs(0, 0);
}

From source file:org.codehaus.aspectwerkz.aspect.container.PerCflowXAspectFactoryCompiler.java

License:Open Source License

/**
 * Overrides the aspectOf() method to not do lazy aspect instantiation since controlled by bind()/unbind()
 *//*from ww w.j a v a  2  s  .co  m*/
protected void createAspectOf() {
    m_cw.visitField(ACC_PRIVATE + ACC_STATIC, "ASPECTS", MAP_CLASS_SIGNATURE, null, null);

    m_clinit.visitTypeInsn(NEW, MAP_CLASS_NAME);
    m_clinit.visitInsn(DUP);
    m_clinit.visitMethodInsn(INVOKESPECIAL, "java/util/WeakHashMap", INIT_METHOD_NAME, "()V");
    m_clinit.visitFieldInsn(PUTSTATIC, m_aspectFactoryClassName, "ASPECTS", MAP_CLASS_SIGNATURE);

    MethodVisitor cv = m_cw.visitMethod(ACC_PUBLIC + ACC_STATIC + ACC_FINAL, "aspectOf",
            "(" + getXSignature() + ")" + m_aspectClassSignature, null, null);

    cv.visitFieldInsn(GETSTATIC, m_aspectFactoryClassName, "ASPECTS", MAP_CLASS_SIGNATURE);
    cv.visitVarInsn(ALOAD, 0);//Thread
    cv.visitMethodInsn(INVOKEINTERFACE, MAP_CLASS_NAME, "get", "(Ljava/lang/Object;)Ljava/lang/Object;");
    cv.visitVarInsn(ASTORE, 1);
    cv.visitVarInsn(ALOAD, 1);
    Label ifBound = new Label();
    cv.visitJumpInsn(IFNONNULL, ifBound);
    cv.visitTypeInsn(NEW, Type.getInternalName(NoAspectBoundException.class));
    cv.visitInsn(DUP);
    cv.visitLdcInsn("Not bound");
    cv.visitLdcInsn(m_aspectQualifiedName);
    cv.visitMethodInsn(INVOKESPECIAL, NO_ASPECT_BOUND_EXCEPTION_CLASS_NAME, INIT_METHOD_NAME,
            "(Ljava/lang/String;Ljava/lang/String;)V");
    cv.visitInsn(ATHROW);

    cv.visitLabel(ifBound);
    cv.visitVarInsn(ALOAD, 1);
    cv.visitTypeInsn(CHECKCAST, m_aspectClassName);
    cv.visitInsn(ARETURN);

    // create an implicit Thread.currentThread no arg aspectOf() method
    cv = m_cw.visitMethod(ACC_STATIC + ACC_PUBLIC + ACC_FINAL, "aspectOf", "()" + m_aspectClassSignature, null,
            null);
    cv.visitMethodInsn(INVOKESTATIC, Type.getInternalName(Thread.class), "currentThread",
            "()Ljava/lang/Thread;");
    cv.visitMethodInsn(INVOKESTATIC, m_aspectFactoryClassName, "aspectOf",
            "(Ljava/lang/Thread;)" + getXSignature());
    cv.visitInsn(ARETURN);
    cv.visitMaxs(0, 0);
}

From source file:org.codehaus.aspectwerkz.aspect.container.PerJVMAspectFactoryCompiler.java

License:Open Source License

protected void createAspectOf() {
    m_cw.visitField(ACC_PRIVATE + ACC_STATIC, FACTORY_SINGLEASPECT_FIELD_NAME, m_aspectClassSignature, null,
            null);//from w w w . j av  a 2s  .c o  m

    MethodVisitor cv = m_cw.visitMethod(ACC_PUBLIC + ACC_STATIC + ACC_FINAL, FACTORY_ASPECTOF_METHOD_NAME,
            "()" + m_aspectClassSignature, null, null);

    cv.visitFieldInsn(GETSTATIC, m_aspectFactoryClassName, FACTORY_SINGLEASPECT_FIELD_NAME,
            m_aspectClassSignature);
    Label ifNonNull = new Label();
    cv.visitJumpInsn(IFNONNULL, ifNonNull);
    if (m_hasAspectContainer) {
        cv.visitFieldInsn(GETSTATIC, m_aspectFactoryClassName, FACTORY_CONTAINER_FIELD_NAME,
                ASPECT_CONTAINER_CLASS_SIGNATURE);
        cv.visitMethodInsn(INVOKEINTERFACE, ASPECT_CONTAINER_CLASS_NAME, ASPECT_CONTAINER_ASPECTOF_METHOD_NAME,
                ASPECT_CONTAINER_ASPECTOF_PERJVM_METHOD_SIGNATURE);
        cv.visitTypeInsn(CHECKCAST, m_aspectClassName);
    } else {
        cv.visitTypeInsn(NEW, m_aspectClassName);
        cv.visitInsn(DUP);
        cv.visitMethodInsn(INVOKESPECIAL, m_aspectClassName, INIT_METHOD_NAME, NO_PARAM_RETURN_VOID_SIGNATURE);
    }
    cv.visitFieldInsn(PUTSTATIC, m_aspectFactoryClassName, FACTORY_SINGLEASPECT_FIELD_NAME,
            m_aspectClassSignature);
    cv.visitLabel(ifNonNull);
    cv.visitFieldInsn(GETSTATIC, m_aspectFactoryClassName, FACTORY_SINGLEASPECT_FIELD_NAME,
            m_aspectClassSignature);
    cv.visitInsn(ARETURN);
    cv.visitMaxs(0, 0);
}

From source file:org.codehaus.aspectwerkz.aspect.container.PerJVMAspectFactoryCompiler.java

License:Open Source License

protected void createHasAspect() {
    MethodVisitor cv = m_cw.visitMethod(ACC_STATIC + ACC_PUBLIC + ACC_FINAL, FACTORY_HASASPECT_METHOD_NAME,
            NO_PARAM_RETURN_BOOLEAN_SIGNATURE, null, null);

    cv.visitFieldInsn(GETSTATIC, m_aspectFactoryClassName, FACTORY_SINGLEASPECT_FIELD_NAME,
            m_aspectClassSignature);//w  w  w  .j a  v a 2s  .  c o  m
    Label ifNonNull = new Label();
    cv.visitJumpInsn(IFNONNULL, ifNonNull);
    cv.visitInsn(ICONST_0);
    cv.visitInsn(IRETURN);
    cv.visitLabel(ifNonNull);
    cv.visitInsn(ICONST_1);
    cv.visitInsn(IRETURN);
    cv.visitMaxs(0, 0);
}

From source file:org.codehaus.aspectwerkz.aspect.container.PerObjectFactoryCompiler.java

License:Open Source License

protected void createAspectOf() {
    MethodVisitor cv = m_cw.visitMethod(ACC_PUBLIC + ACC_STATIC + ACC_FINAL, FACTORY_ASPECTOF_METHOD_NAME,
            "(Ljava/lang/Object;)" + m_aspectClassSignature, null, null);

    // instanceOf check
    cv.visitVarInsn(ALOAD, 0);// object
    cv.visitTypeInsn(INSTANCEOF, HAS_INSTANCE_LEVEL_ASPECT_INTERFACE_NAME);
    Label ifInstanceOf = new Label();
    cv.visitJumpInsn(IFNE, ifInstanceOf);
    cv.visitTypeInsn(NEW, Type.getInternalName(NoAspectBoundException.class));
    cv.visitInsn(DUP);/*from  www  .j  a va2s . c om*/
    cv.visitLdcInsn("Unimplemented interface");
    cv.visitLdcInsn(m_aspectQualifiedName);
    cv.visitMethodInsn(INVOKESPECIAL, NO_ASPECT_BOUND_EXCEPTION_CLASS_NAME, INIT_METHOD_NAME,
            "(Ljava/lang/String;Ljava/lang/String;)V");
    cv.visitInsn(ATHROW);
    cv.visitLabel(ifInstanceOf);

    cv.visitVarInsn(ALOAD, 0);
    cv.visitTypeInsn(CHECKCAST, HAS_INSTANCE_LEVEL_ASPECT_INTERFACE_NAME);
    cv.visitFieldInsn(GETSTATIC, m_aspectFactoryClassName, FACTORY_CLASS_FIELD_NAME, CLASS_CLASS_SIGNATURE);
    cv.visitMethodInsn(INVOKEINTERFACE, HAS_INSTANCE_LEVEL_ASPECT_INTERFACE_NAME,
            INSTANCE_LEVEL_GETASPECT_METHOD_NAME, INSTANCE_LEVEL_GETASPECT_METHOD_SIGNATURE);
    cv.visitVarInsn(ASTORE, 1);
    cv.visitVarInsn(ALOAD, 1);
    Label ifBound = new Label();
    cv.visitJumpInsn(IFNONNULL, ifBound);
    cv.visitTypeInsn(NEW, NO_ASPECT_BOUND_EXCEPTION_CLASS_NAME);
    cv.visitInsn(DUP);
    cv.visitLdcInsn("Not bound");
    cv.visitLdcInsn(m_aspectQualifiedName);
    cv.visitMethodInsn(INVOKESPECIAL, NO_ASPECT_BOUND_EXCEPTION_CLASS_NAME, INIT_METHOD_NAME,
            "(Ljava/lang/String;Ljava/lang/String;)V");
    cv.visitInsn(ATHROW);

    cv.visitLabel(ifBound);
    cv.visitVarInsn(ALOAD, 1);
    cv.visitTypeInsn(CHECKCAST, m_aspectClassName);
    cv.visitInsn(ARETURN);
    cv.visitMaxs(0, 0);
}

From source file:org.codehaus.aspectwerkz.aspect.container.PerObjectFactoryCompiler.java

License:Open Source License

protected void createHasAspect() {
    MethodVisitor cv = m_cw.visitMethod(ACC_PUBLIC + ACC_STATIC, FACTORY_HASASPECT_METHOD_NAME,
            "(Ljava/lang/Object;)Z", null, null);

    // instanceOf check
    cv.visitVarInsn(ALOAD, 0);// object
    cv.visitTypeInsn(INSTANCEOF, HAS_INSTANCE_LEVEL_ASPECT_INTERFACE_NAME);
    Label ifInstanceOf = new Label();
    cv.visitJumpInsn(IFNE, ifInstanceOf);
    cv.visitInsn(ICONST_0);/*from   w ww .ja v a2 s  . c  o m*/
    cv.visitInsn(IRETURN);
    cv.visitLabel(ifInstanceOf);

    cv.visitVarInsn(ALOAD, 0);
    cv.visitTypeInsn(CHECKCAST, HAS_INSTANCE_LEVEL_ASPECT_INTERFACE_NAME);
    cv.visitFieldInsn(GETSTATIC, m_aspectFactoryClassName, FACTORY_CLASS_FIELD_NAME, CLASS_CLASS_SIGNATURE);
    cv.visitMethodInsn(INVOKEINTERFACE, HAS_INSTANCE_LEVEL_ASPECT_INTERFACE_NAME,
            INSTANCE_LEVEL_HASASPECT_METHOD_NAME, INSTANCE_LEVEL_HASASPECT_METHOD_SIGNATURE);
    cv.visitInsn(IRETURN);
    cv.visitMaxs(0, 0);
}

From source file:org.codehaus.aspectwerkz.aspect.container.PerObjectFactoryCompiler.java

License:Open Source License

private void createBindMethod() {
    MethodVisitor cv = m_cw.visitMethod(ACC_PUBLIC + ACC_STATIC + ACC_FINAL, "bind",
            "(Ljava/lang/Object;)Ljava/lang/Object;", null, null);

    // instanceOf check
    cv.visitVarInsn(ALOAD, 0);// object
    cv.visitTypeInsn(INSTANCEOF, HAS_INSTANCE_LEVEL_ASPECT_INTERFACE_NAME);
    Label ifInstanceOf = new Label();
    cv.visitJumpInsn(IFNE, ifInstanceOf);
    cv.visitTypeInsn(NEW, NO_ASPECT_BOUND_EXCEPTION_CLASS_NAME);
    cv.visitInsn(DUP);//from   w w  w  .  j  av  a 2 s. co  m
    cv.visitLdcInsn("Unimplemented interface");
    cv.visitLdcInsn(m_aspectQualifiedName);
    cv.visitMethodInsn(INVOKESPECIAL, NO_ASPECT_BOUND_EXCEPTION_CLASS_NAME, INIT_METHOD_NAME,
            "(Ljava/lang/String;Ljava/lang/String;)V");
    cv.visitInsn(ATHROW);
    cv.visitLabel(ifInstanceOf);

    cv.visitVarInsn(ALOAD, 0);//object
    cv.visitTypeInsn(CHECKCAST, HAS_INSTANCE_LEVEL_ASPECT_INTERFACE_NAME);
    cv.visitFieldInsn(GETSTATIC, m_aspectFactoryClassName, FACTORY_CLASS_FIELD_NAME, CLASS_CLASS_SIGNATURE);
    cv.visitMethodInsn(INVOKEINTERFACE, HAS_INSTANCE_LEVEL_ASPECT_INTERFACE_NAME,
            INSTANCE_LEVEL_GETASPECT_METHOD_NAME, INSTANCE_LEVEL_GETASPECT_METHOD_SIGNATURE);
    cv.visitVarInsn(ASTORE, 1);
    cv.visitVarInsn(ALOAD, 1);
    Label ifAlreadyBound = new Label();
    cv.visitJumpInsn(IFNONNULL, ifAlreadyBound);

    // target instance and arg0 for bind call
    cv.visitVarInsn(ALOAD, 0);//object
    cv.visitTypeInsn(CHECKCAST, HAS_INSTANCE_LEVEL_ASPECT_INTERFACE_NAME);
    cv.visitFieldInsn(GETSTATIC, m_aspectFactoryClassName, FACTORY_CLASS_FIELD_NAME, CLASS_CLASS_SIGNATURE);

    if (m_hasAspectContainer) {
        cv.visitFieldInsn(GETSTATIC, m_aspectFactoryClassName, FACTORY_CONTAINER_FIELD_NAME,
                ASPECT_CONTAINER_CLASS_SIGNATURE);
        cv.visitVarInsn(ALOAD, 0);//associated object
        cv.visitMethodInsn(INVOKEINTERFACE, ASPECT_CONTAINER_CLASS_NAME, ASPECT_CONTAINER_ASPECTOF_METHOD_NAME,
                "(Ljava/lang/Object;)Ljava/lang/Object;");
        cv.visitTypeInsn(CHECKCAST, m_aspectClassName);
    } else {
        cv.visitTypeInsn(NEW, m_aspectClassName);
        cv.visitInsn(DUP);
        cv.visitMethodInsn(INVOKESPECIAL, m_aspectClassName, INIT_METHOD_NAME, NO_PARAM_RETURN_VOID_SIGNATURE);
    }
    cv.visitMethodInsn(INVOKEINTERFACE, HAS_INSTANCE_LEVEL_ASPECT_INTERFACE_NAME,
            INSTANCE_LEVEL_BINDASPECT_METHOD_NAME, INSTANCE_LEVEL_BINDASPECT_METHOD_SIGNATURE);
    cv.visitInsn(ARETURN);

    cv.visitLabel(ifAlreadyBound);
    cv.visitVarInsn(ALOAD, 1);
    cv.visitInsn(ARETURN);

    cv.visitMaxs(0, 0);
}