Package org.objectweb.asm

Examples of org.objectweb.asm.MethodVisitor


    cv.visitSource("Bean.java", null);
    FieldVisitor fv = cv.visitField(ACC_PRIVATE, "f", "I", null, null);
    if (fv != null) {
      fv.visitEnd();
    }
    MethodVisitor mv;
    mv = cv.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
    if (mv != null) {
      mv.visitCode();
      mv.visitVarInsn(ALOAD, 0);
      mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>",
          "()V");
      mv.visitInsn(RETURN);
      mv.visitMaxs(1, 1);
      mv.visitEnd();
    }
    mv = cv.visitMethod(ACC_PUBLIC, "getF", "()I", null, null);
    if (mv != null) {
      mv.visitCode();
      mv.visitVarInsn(ALOAD, 0);
      mv.visitFieldInsn(GETFIELD, "pkg/Bean", "f", "I");
      mv.visitInsn(IRETURN);
      mv.visitMaxs(1, 1);
      mv.visitEnd();
    }
    mv = cv.visitMethod(ACC_PUBLIC, "setF", "(I)V", null, null);
    if (mv != null) {
      mv.visitCode();
      mv.visitVarInsn(ALOAD, 0);
      mv.visitVarInsn(ILOAD, 1);
      mv.visitFieldInsn(PUTFIELD, "pkg/Bean", "f", "I");
      mv.visitInsn(RETURN);
      mv.visitMaxs(2, 2);
      mv.visitEnd();
    }
    mv = cv.visitMethod(ACC_PUBLIC, "checkAndSetF", "(I)V", null, null);
    if (mv != null) {
      mv.visitCode();
      mv.visitVarInsn(ILOAD, 1);
      Label label = new Label();
      mv.visitJumpInsn(IFLT, label);
      mv.visitVarInsn(ALOAD, 0);
      mv.visitVarInsn(ILOAD, 1);
      mv.visitFieldInsn(PUTFIELD, "pkg/Bean", "f", "I");
      Label end = new Label();
      mv.visitJumpInsn(GOTO, end);
      mv.visitLabel(label);
      mv.visitFrame(F_SAME, 0, null, 0, null);
      mv.visitTypeInsn(NEW, "java/lang/IllegalArgumentException");
      mv.visitInsn(DUP);
      mv.visitMethodInsn(INVOKESPECIAL,
          "java/lang/IllegalArgumentException", "<init>", "()V");
      mv.visitInsn(ATHROW);
      mv.visitLabel(end);
      mv.visitFrame(F_SAME, 0, null, 0, null);
      mv.visitInsn(RETURN);
      mv.visitMaxs(2, 2);
      mv.visitEnd();
    }
    cv.visitEnd();
    return cw.toByteArray();
  }
View Full Code Here


                                   String signature,
                                   String[] exceptions) {
    currentMethodName   = name;
    currentMethodDesc   = desc;
    currentMethodAccess = access;
    MethodVisitor mv = cv.visitMethod(access, name, desc, signature, exceptions);
    if (mv != null) {
      mv = new ReplaceMethodAdapter(mv, this);
    }
    return mv;
  }
View Full Code Here

       
        @Override
        public MethodVisitor visitMethod(int access, String name, String desc,
                String signature, String[] exceptions)
        {
            MethodVisitor result = super.visitMethod(access, name, desc, signature, exceptions);
            Integer fieldId = _subjectAnalysisDataContainer._referringMethods.get(composeReferringMethodId(name, desc));
            if(fieldId != null){
                result = new ReferringMethodTransformer(result,access, name, desc, fieldId);
            }
            return result;
View Full Code Here

                }
               
                Field field = ownerClassDescriptor.getFieldForName(nextVar);
                Type returnType = Type.getType(field.getType());
                org.objectweb.asm.commons.Method method = new org.objectweb.asm.commons.Method(methodName,returnType,new Type[0]);
                MethodVisitor mv = super.visitMethod(ACC_PUBLIC, methodName, method.getDescriptor(), null, null);
                int fieldId = ownerClassDescriptor.getFieldIDForName(nextVar);
                writeVarInitCondition(mv, fieldId, nextVar, field.getType());
                writeReturn(mv, field);
                _subjectAnalysisDataContainer._referringMethods.put(composeReferringMethodId(methodName, method.getDescriptor()), fieldId);
                _subjectAnalysisDataContainer._syntheticReferringMethods.put(nextVar, method);
View Full Code Here

        }

        public MethodVisitor visitMethod(int acc, String name, String desc,
                String signature, String[] exceptions)
        {
            MethodVisitor mv = cv.visitMethod(acc, name, desc, signature,
                    exceptions);
            if (_methodName.equals(name) && _matchMethodDesc.equals(desc))
            {
                if (!_transform) {
                    mv = _predicateMethodAdapter = new ReferringMethodsExtractor(_predicateClass.getInternalName(), acc, name,
View Full Code Here

        @Override
        public MethodVisitor visitMethod(int access, String name, String desc,
                String signature, String[] exceptions)
        {
            MethodVisitor result = super.visitMethod(access, name, desc,
                    signature, exceptions);
            String nameId = composeReferringMethodId(name, desc);
            if (_predicateAnalysisDataContainer._referringMethods.containsKey(nameId))
            {
                result = new PredicateSubjectFieldAccessMethodAdapter(_predicateSubjectClassName, access, name, desc, result);
View Full Code Here

    @Deprecated
    private ClassWriter createCtor(String namePath) throws Exception {
        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
        cw.visit(V1_4, ACC_PUBLIC + ACC_SUPER, namePath, null, SUPER_CLASS, null);
        MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
        mv.visitCode();
        mv.visitVarInsn(ALOAD, 0);
        mv.visitMethodInsn(INVOKESPECIAL, SUPER_CLASS, "<init>", "()V");
        Label line = new Label();
        mv.visitLineNumber(0, line);
        mv.visitInsn(RETURN);
        mv.visitMaxs(1, 1);
        mv.visitEnd();
        return cw;
    }
View Full Code Here

    @Deprecated
    private ClassWriter createCtorFast(String namePath) throws Exception {
        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
        cw.visit(V1_4, ACC_PUBLIC + ACC_SUPER, namePath, null, FAST_SUPER_CLASS, null);
        MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
        mv.visitCode();
        mv.visitVarInsn(ALOAD, 0);
        mv.visitMethodInsn(INVOKESPECIAL, FAST_SUPER_CLASS, "<init>", "()V");
        Label line = new Label();
        mv.visitLineNumber(0, line);
        mv.visitInsn(RETURN);
        mv.visitMaxs(1, 1);
        mv.visitEnd();
        return cw;
    }
View Full Code Here

        }
    }

    @Deprecated
    private MethodVisitor startCall(ClassWriter cw) {
        MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "call", CALL_SIG, null, null);
       
        mv.visitCode();
        Label line = new Label();
        mv.visitLineNumber(0, line);
        mv.visitVarInsn(ALOAD, 1);
        mv.visitTypeInsn(CHECKCAST, typePath);
        return mv;
    }
View Full Code Here

        return mv;
    }

    @Deprecated
    private MethodVisitor startCallS(ClassWriter cw) {
        MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "call", CALL_SIG, null, null);
       
        mv.visitCode();
        Label line = new Label();
        mv.visitLineNumber(0, line);
        mv.visitVarInsn(ALOAD, 1);
        checkCast(mv, IRubyObject.class);
        return mv;
    }
View Full Code Here

TOP

Related Classes of org.objectweb.asm.MethodVisitor

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.