Package org.nutz.repo.org.objectweb.asm

Examples of org.nutz.repo.org.objectweb.asm.Label


    for (int i = 0; i < methodArray.length; i++) {
      Method method = methodArray[i];
      mv.visitVarInsn(ILOAD, 1);
      visitX(i);
      Label l0 = new Label();
      mv.visitJumpInsn(IF_ICMPNE, l0);
      mv.visitVarInsn(ALOAD, 0);
      Type[] args = Type.getArgumentTypes(method);
      for (int j = 0; j < args.length; j++) {
        mv.visitVarInsn(ALOAD, 2);
View Full Code Here


    this.returnType = Type.getReturnType(desc);
  }

  void enhandMethod_Void() {
    mv.visitCode();
    Label l0 = new Label();
    Label l1 = new Label();
    Label l2 = new Label();
    mv.visitTryCatchBlock(l0, l1, l2, "java/lang/Throwable");
    mv.visitLabel(l0);
    mv.visitTypeInsn(NEW, "org/nutz/aop/InterceptorChain");
    mv.visitInsn(DUP);
    visitX(methodIndex);
    mv.visitVarInsn(ALOAD, 0);
    mv.visitFieldInsn(GETSTATIC, myName, AsmClassAgent.MethodArray_FieldName, "[Ljava/lang/reflect/Method;");
    visitX(methodIndex);
    mv.visitInsn(AALOAD);
    mv.visitFieldInsn(GETSTATIC, myName, AsmClassAgent.MethodInterceptorList_FieldName, "[Ljava/util/List;");
    visitX(methodIndex);
    mv.visitInsn(AALOAD);
    loadArgsAsArray();
    mv.visitMethodInsnINVOKESPECIAL,
              "org/nutz/aop/InterceptorChain",
              "<init>",
              "(ILjava/lang/Object;Ljava/lang/reflect/Method;Ljava/util/List;[Ljava/lang/Object;)V");
    mv.visitMethodInsnINVOKEVIRTUAL,
              "org/nutz/aop/InterceptorChain",
              "doChain",
              "()Lorg/nutz/aop/InterceptorChain;");

    {
      if (Type.getReturnType(desc).equals(Type.VOID_TYPE)) {
        mv.visitInsn(POP);
      } else {
        mv.visitMethodInsnINVOKEVIRTUAL,
                  "org/nutz/aop/InterceptorChain",
                  "getReturn",
                  "()Ljava/lang/Object;");
        AsmHelper.checkCast(returnType,mv);
        returnIt();
      }
    }

    mv.visitLabel(l1);
    Label l3 = new Label();
    mv.visitJumpInsn(GOTO, l3);
    mv.visitLabel(l2);
    mv.visitVarInsn(ASTORE, 3);
    mv.visitVarInsn(ALOAD, 3);
    // mv.visitMethodInsn(INVOKESTATIC, "org/nutz/lang/Lang", "wrapThrow",
View Full Code Here

        for (int i = 0; i < methodArray.length; i++) {
            Method method = methodArray[i];
            mv.visitVarInsn(ILOAD, 1);
            visitX(i);
            Label l0 = new Label();
            mv.visitJumpInsn(IF_ICMPNE, l0);
            mv.visitVarInsn(ALOAD, 0);
            Type[] args = Type.getArgumentTypes(method);
            for (int j = 0; j < args.length; j++) {
                mv.visitVarInsn(ALOAD, 2);
View Full Code Here

        this.returnType = Type.getReturnType(desc);
    }

    void enhandMethod_Void() {
        mv.visitCode();
        Label l0 = new Label();
        Label l1 = new Label();
        Label l2 = new Label();
        mv.visitTryCatchBlock(l0, l1, l2, "java/lang/Throwable");
        mv.visitLabel(l0);
        mv.visitTypeInsn(NEW, "org/nutz/aop/InterceptorChain");
        mv.visitInsn(DUP);
        visitX(methodIndex);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitFieldInsn(GETSTATIC, myName, AsmClassAgent.MethodArray_FieldName, "[Ljava/lang/reflect/Method;");
        visitX(methodIndex);
        mv.visitInsn(AALOAD);
        mv.visitFieldInsn(GETSTATIC, myName, AsmClassAgent.MethodInterceptorList_FieldName, "[Ljava/util/List;");
        visitX(methodIndex);
        mv.visitInsn(AALOAD);
        loadArgsAsArray();
        mv.visitMethodInsn(    INVOKESPECIAL,
                            "org/nutz/aop/InterceptorChain",
                            "<init>",
                            "(ILjava/lang/Object;Ljava/lang/reflect/Method;Ljava/util/List;[Ljava/lang/Object;)V");
        mv.visitMethodInsn(    INVOKEVIRTUAL,
                            "org/nutz/aop/InterceptorChain",
                            "doChain",
                            "()Lorg/nutz/aop/InterceptorChain;");

        {
            if (Type.getReturnType(desc).equals(Type.VOID_TYPE)) {
                mv.visitInsn(POP);
            } else {
                mv.visitMethodInsn(    INVOKEVIRTUAL,
                                    "org/nutz/aop/InterceptorChain",
                                    "getReturn",
                                    "()Ljava/lang/Object;");
                AsmHelper.checkCast(returnType,mv);
                returnIt();
            }
        }

        mv.visitLabel(l1);
        Label l3 = new Label();
        mv.visitJumpInsn(GOTO, l3);
        mv.visitLabel(l2);
        mv.visitVarInsn(ASTORE, 3);
        mv.visitVarInsn(ALOAD, 3);
        // mv.visitMethodInsn(INVOKESTATIC, "org/nutz/lang/Lang", "wrapThrow",
View Full Code Here

    mv.visitCode();

    for (int i = 0; i < methodNames.length; i++) {
      mv.visitVarInsn(ILOAD, 2);
      visitX(i);
      Label l0 = new Label();
      mv.visitJumpInsn(IF_ICMPNE, l0);
      if (!Modifier.isStatic(modifies[i])) {
        mv.visitVarInsn(ALOAD, 1);
        returnType = Type.getObjectType(enhancedSuperName);
        checkCast();
View Full Code Here

  public void createInokeConstructor(Constructor<?>[] constructors) {
    mv.visitCode();
    for (int i = 0; i < constructors.length; i++) {
      mv.visitVarInsn(ILOAD, 1);
      visitX(i);
      Label l0 = new Label();
      mv.visitJumpInsn(IF_ICMPNE, l0);
      mv.visitTypeInsn(NEW, enhancedSuperName);
      mv.visitInsn(DUP);

      Type args[] = Type.getArgumentTypes(Type.getConstructorDescriptor(constructors[i]));
View Full Code Here

TOP

Related Classes of org.nutz.repo.org.objectweb.asm.Label

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.