Examples of CodeEmitter


Examples of net.sf.cglib.core.CodeEmitter

        }
    }
   
    public CodeEmitter begin_method(int access, Signature sig, Type[]
    exceptions, Attribute attrs) {
        final CodeEmitter emitter = super.begin_method(access, sig,
        exceptions, attrs);
       
        if (sig.getName().equals(Constants.CONSTRUCTOR_NAME)) {
            return new CodeEmitter(emitter) {
                public void visitInsn(int opcode) {
                    if (opcode == Constants.RETURN) {
                        load_this();
                        invoke(info);
                    }
View Full Code Here

Examples of net.sf.cglib.core.CodeEmitter

          if (Modifier.isAbstract(method.getModifiers())) {
            MethodInfo methodInfo = ReflectUtils.getMethodInfo(method);
            Signature signature = methodInfo.getSignature();
            Type returnType = signature.getReturnType();

            CodeEmitter e = ce.begin_method(method.getModifiers() & ~Modifier.ABSTRACT,
                signature, methodInfo.getExceptionTypes(),
                methodInfo.getAttribute());

            e.zero_or_null(returnType);
            e.return_value();

            Type[] argumentTypes = methodInfo.getSignature().getArgumentTypes();
            int size = 0;
            if (argumentTypes != null) {
              for (int i = 0; i < argumentTypes.length; i++) {
                size += argumentTypes[i].getSize();
              }
            }

            // 1 is for this
            e.visitMaxs(returnType.getSize(), size + 1);

            e.end_method();
          }
        }

        ce.end_class();
      }
View Full Code Here

Examples of net.sf.cglib.core.CodeEmitter

            if (Modifier.isAbstract(method.getModifiers())) {
              MethodInfo methodInfo = ReflectUtils.getMethodInfo(method);
              Signature signature = methodInfo.getSignature();
              Type returnType = signature.getReturnType();

              CodeEmitter e = ce.begin_method(method.getModifiers() & ~Modifier.ABSTRACT,
                  signature, methodInfo.getExceptionTypes(),
                  methodInfo.getAttribute());

              e.zero_or_null(returnType);
              e.return_value();

              Type[] argumentTypes = methodInfo.getSignature().getArgumentTypes();
              int size = 0;
              if (argumentTypes != null) {
                for (int i = 0; i < argumentTypes.length; i++) {
                  size += argumentTypes[i].getSize();
                }
              }

              // 1 is for this
              e.visitMaxs(returnType.getSize(), size + 1);

              e.end_method();
            }
          }

          ce.end_class();
        }
View Full Code Here

Examples of net.sf.cglib.core.CodeEmitter

            throw new IllegalArgumentException(method + " illegal signature");
        }
    }
   
    public CodeEmitter begin_method(int access, Signature sig, Type[] exceptions) {
        final CodeEmitter emitter = super.begin_method(access, sig, exceptions);
        if (sig.getName().equals(Constants.CONSTRUCTOR_NAME)) {
            return new CodeEmitter(emitter) {
                public void visitInsn(int opcode) {
                    if (opcode == Constants.RETURN) {
                        load_this();
                        invoke(info);
                    }
View Full Code Here

Examples of net.sf.cglib.core.CodeEmitter

/*    */   private String getFieldName(int index) {
/* 45 */     return "FIELD_" + index;
/*    */   }
/*    */
/*    */   private void generateConstructor(Object[] arrays) {
/* 49 */     CodeEmitter e = begin_method(1, CSTRUCT_OBJECT_ARRAY, null, null);
/* 50 */     e.load_this();
/* 51 */     e.super_invoke_constructor();
/* 52 */     e.load_this();
/* 53 */     e.load_arg(0);
/* 54 */     e.super_putfield("a", Constants.TYPE_OBJECT_ARRAY);
/* 55 */     for (int i = 0; i < arrays.length; i++) {
/* 56 */       Type type = Type.getType(arrays[i].getClass());
/* 57 */       declare_field(2, getFieldName(i), type, null, null);
/* 58 */       e.load_this();
/* 59 */       e.load_arg(0);
/* 60 */       e.push(i);
/* 61 */       e.aaload();
/* 62 */       e.checkcast(type);
/* 63 */       e.putfield(getFieldName(i));
/*    */     }
/* 65 */     e.return_value();
/* 66 */     e.end_method();
/*    */   }
View Full Code Here

Examples of net.sf.cglib.core.CodeEmitter

/* 65 */     e.return_value();
/* 66 */     e.end_method();
/*    */   }
/*    */
/*    */   private void generateSwap(Object[] arrays) {
/* 70 */     CodeEmitter e = begin_method(1, SWAP, null, null);
/* 71 */     for (int i = 0; i < arrays.length; i++) {
/* 72 */       Type type = Type.getType(arrays[i].getClass());
/* 73 */       Type component = TypeUtils.getComponentType(type);
/* 74 */       Local T = e.make_local(type);
/*    */
/* 76 */       e.load_this();
/* 77 */       e.getfield(getFieldName(i));
/* 78 */       e.store_local(T);
/*    */
/* 80 */       e.load_local(T);
/* 81 */       e.load_arg(0);
/*    */
/* 83 */       e.load_local(T);
/* 84 */       e.load_arg(1);
/* 85 */       e.array_load(component);
/*    */
/* 87 */       e.load_local(T);
/* 88 */       e.load_arg(1);
/*    */
/* 90 */       e.load_local(T);
/* 91 */       e.load_arg(0);
/* 92 */       e.array_load(component);
/*    */
/* 94 */       e.array_store(component);
/* 95 */       e.array_store(component);
/*    */     }
/* 97 */     e.return_value();
/* 98 */     e.end_method();
/*    */   }
View Full Code Here

Examples of net.sf.cglib.core.CodeEmitter

/*  48 */     if (!TypeUtils.isInterface(access)) {
/*  49 */       super.begin_class(version, access, className, superType, TypeUtils.add(interfaces, ENABLED), sourceFile);
/*     */
/*  51 */       super.declare_field(130, "$CGLIB_READ_WRITE_CALLBACK", CALLBACK, null, null);
/*     */
/*  58 */       CodeEmitter e = super.begin_method(1, ENABLED_GET, null, null);
/*  59 */       e.load_this();
/*  60 */       e.getfield("$CGLIB_READ_WRITE_CALLBACK");
/*  61 */       e.return_value();
/*  62 */       e.end_method();
/*     */
/*  64 */       e = super.begin_method(1, ENABLED_SET, null, null);
/*  65 */       e.load_this();
/*  66 */       e.load_arg(0);
/*  67 */       e.putfield("$CGLIB_READ_WRITE_CALLBACK");
/*  68 */       e.return_value();
/*  69 */       e.end_method();
/*     */     } else {
/*  71 */       super.begin_class(version, access, className, superType, interfaces, sourceFile);
/*     */     }
/*     */   }
View Full Code Here

Examples of net.sf.cglib.core.CodeEmitter

/*     */     }
/*     */   }
/*     */
/*     */   private void addReadMethod(String name, Type type)
/*     */   {
/*  88 */     CodeEmitter e = super.begin_method(1, readMethodSig(name, type.getDescriptor()), null, null);
/*     */
/*  92 */     e.load_this();
/*  93 */     e.getfield(name);
/*  94 */     e.load_this();
/*  95 */     e.invoke_interface(ENABLED, ENABLED_GET);
/*  96 */     Label intercept = e.make_label();
/*  97 */     e.ifnonnull(intercept);
/*  98 */     e.return_value();
/*     */
/* 100 */     e.mark(intercept);
/* 101 */     Local result = e.make_local(type);
/* 102 */     e.store_local(result);
/* 103 */     e.load_this();
/* 104 */     e.invoke_interface(ENABLED, ENABLED_GET);
/* 105 */     e.load_this();
/* 106 */     e.push(name);
/* 107 */     e.load_local(result);
/* 108 */     e.invoke_interface(CALLBACK, readCallbackSig(type));
/* 109 */     if (!TypeUtils.isPrimitive(type)) {
/* 110 */       e.checkcast(type);
/*     */     }
/* 112 */     e.return_value();
/* 113 */     e.end_method();
/*     */   }
View Full Code Here

Examples of net.sf.cglib.core.CodeEmitter

/* 112 */     e.return_value();
/* 113 */     e.end_method();
/*     */   }
/*     */
/*     */   private void addWriteMethod(String name, Type type) {
/* 117 */     CodeEmitter e = super.begin_method(1, writeMethodSig(name, type.getDescriptor()), null, null);
/*     */
/* 121 */     e.load_this();
/* 122 */     e.dup();
/* 123 */     e.invoke_interface(ENABLED, ENABLED_GET);
/* 124 */     Label skip = e.make_label();
/* 125 */     e.ifnull(skip);
/*     */
/* 127 */     e.load_this();
/* 128 */     e.invoke_interface(ENABLED, ENABLED_GET);
/* 129 */     e.load_this();
/* 130 */     e.push(name);
/* 131 */     e.load_this();
/* 132 */     e.getfield(name);
/* 133 */     e.load_arg(0);
/* 134 */     e.invoke_interface(CALLBACK, writeCallbackSig(type));
/* 135 */     if (!TypeUtils.isPrimitive(type)) {
/* 136 */       e.checkcast(type);
/*     */     }
/* 138 */     Label go = e.make_label();
/* 139 */     e.goTo(go);
/* 140 */     e.mark(skip);
/* 141 */     e.load_arg(0);
/* 142 */     e.mark(go);
/* 143 */     e.putfield(name);
/* 144 */     e.return_value();
/* 145 */     e.end_method();
/*     */   }
View Full Code Here

Examples of net.sf.cglib.core.CodeEmitter

/* 144 */     e.return_value();
/* 145 */     e.end_method();
/*     */   }
/*     */
/*     */   public CodeEmitter begin_method(int access, Signature sig, Type[] exceptions, Attribute attrs) {
/* 149 */     return new CodeEmitter(super.begin_method(access, sig, exceptions, attrs)) {
/*     */       public void visitFieldInsn(int opcode, String owner, String name, String desc) {
/* 151 */         Type towner = TypeUtils.fromInternalName(owner);
/* 152 */         switch (opcode) {
/*     */         case 180:
/* 154 */           if (!InterceptFieldTransformer.this.filter.acceptRead(towner, name)) break;
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.