Package org.objectweb.asm

Examples of org.objectweb.asm.ClassVisitor


            crLookahead.accept(new AlreadyAddedMethodAdapter(addedMethods), true);

            // -- Phase 1 -- type change
            final ClassWriter writerPhase1 = AsmHelper.newClassWriter(true);
            final ClassReader readerPhase1 = new ClassReader(bytecode);
            ClassVisitor reversedChainPhase1 = writerPhase1;
            reversedChainPhase1 = new AddMixinMethodsVisitor(reversedChainPhase1, classInfo, context, addedMethods);
            reversedChainPhase1 = new AddInterfaceVisitor(reversedChainPhase1, classInfo, context);
            reversedChainPhase1 = new AddSerialVersionUidVisitor(reversedChainPhase1, classInfo, context, true);
            readerPhase1.accept(reversedChainPhase1, Attributes.getDefaultAttributes(), false);
            final byte[] bytesPhase1 = writerPhase1.toByteArray();

            // update the class info
            classInfo = AsmClassInfo.newClassInfo(bytesPhase1, loader);

            // -- Phase 2 -- advices
            final ClassWriter writerPhase2 = AsmHelper.newClassWriter(true);
            final ClassReader readerPhase2 = new ClassReader(bytesPhase1);
            ClassVisitor reversedChainPhase2 = writerPhase2;
            reversedChainPhase2 = new InstanceLevelAspectVisitor(reversedChainPhase2, classInfo, context);
            reversedChainPhase2 = new MethodExecutionVisitor(reversedChainPhase2, classInfo, context, addedMethods);
            reversedChainPhase2 = new ConstructorBodyVisitor(reversedChainPhase2, classInfo, context, addedMethods);
            reversedChainPhase2 = new HandlerVisitor(reversedChainPhase2, loader, classInfo, context, catchLabels);
            if (!filterForCall) {
                reversedChainPhase2 = new MethodCallVisitor(reversedChainPhase2, loader, classInfo, context);
                reversedChainPhase2 = new ConstructorCallVisitor(
                        reversedChainPhase2, loader, classInfo, context, newInvocationsByCallerMemberHash
                );
            }
            if (!filterForGetSet) {
                reversedChainPhase2 = new FieldSetFieldGetVisitor(reversedChainPhase2, loader, classInfo, context);
                reversedChainPhase2 = new FieldWrapperVisitor(reversedChainPhase2, classInfo, context, addedMethods);
            }
            reversedChainPhase2 = new MethodWrapperVisitor(reversedChainPhase2, classInfo, context, addedMethods);
            readerPhase2.accept(reversedChainPhase2, Attributes.getDefaultAttributes(), false);
            final byte[] bytesPhase2 = writerPhase2.toByteArray();

            context.setCurrentBytecode(bytesPhase2);

            // -- Phase 3 -- serialUID and JoinPoint initialization
            if (context.isAdvised()) {
                final ClassWriter writerPhase3 = AsmHelper.newClassWriter(true);
                ClassReader readerPhase3 = new ClassReader(bytesPhase2);
                ClassVisitor reversedChainPhase3 = writerPhase3;
                reversedChainPhase3 = new AddSerialVersionUidVisitor(reversedChainPhase3, classInfo, context, false);
                reversedChainPhase3 = new JoinPointInitVisitor(reversedChainPhase3, context);
                readerPhase3.accept(reversedChainPhase3, Attributes.getDefaultAttributes(), false);
                final byte[] bytesPhase3 = writerPhase3.toByteArray();
View Full Code Here


            // TODO should we provide some option to do JITgen at weave time instead of load time ?
            //            Class joinPointBase = JoinPointCompiler.compileJoinPointBase(className, loader);

            // register the Adapter from last to first
            // TODO could we avoid object creation
            ClassVisitor first = cw;
            first = new JoinPointInitClassAdapter(first, context);
            first = new WrapperMethodClassAdapter(first, classInfo, context);
            first = new MethodExecutionClassAdapter(first, loader, classInfo, context);
            first = new MethodCallClassAdapter(first, loader, classInfo, context);
            first = new FieldSetGetClassAdapter(first, loader, classInfo, context);
View Full Code Here

    // adapts the class on the fly
    try {
      //modify class
      ClassReader cr = new ClassReader(is);
      ClassWriter cw = new ClassWriter(0);
      ClassVisitor cv = new ClassModifierClassAdapter(cw, modifier);
      modifier.setClassWriter(cw);
      cr.accept(cv, 0);
      modifiedClassBytes = cw.toByteArray();
     
    } catch (Exception e) {
View Full Code Here

      return true;
    }
   
    final boolean[] exist = new boolean[]{false};
   
    ClassVisitor cv = new EmptyVisitor(){
      @Override
      public MethodVisitor visitMethod(int access, String name,
          String desc, String signature, String[] exceptions) {
        if(name.equals(ASConstant.CLINIT)){
          exist[0] = true;
View Full Code Here

    public byte[] instrumentClass(byte[] bytes) throws IOException {
        ClassReader cr = new ClassReader(bytes);
        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS/* | ClassWriter.COMPUTE_FRAMES*/);
        try {
            ClassVisitor ci = (ClassVisitor) INSTRUMENTER_CONSTRUCTOR.newInstance(projectData != null ? projectData : ProjectData.getGlobalProjectData(), cw, Collections.EMPTY_LIST, Collections.EMPTY_LIST);
            cr.accept(ci, 0);
            if (((Boolean) IS_INSTRUMENTED_METHOD.invoke(ci)).booleanValue()) return cw.toByteArray();
        } catch (Throwable t) {
            throw (IOException) new IOException(t.getMessage()).initCause(t);
        }
View Full Code Here

        ClassWriter cw = new ClassWriter( 0 );

        Remapper packageRemapper =
            new SimpleRemapper( HELP_MOJO_CLASS_NAME, packageAsDirectory + '/' + HELP_MOJO_CLASS_NAME );
        ClassVisitor cv = new RemappingClassAdapter( cw, packageRemapper );

        try
        {
            cr.accept( cv, ClassReader.EXPAND_FRAMES );
        }
View Full Code Here

        // optimization note: per ASM docs COMPUTE_FRAMES makes code generation 2x slower,
        // so we may investigate manual computation options, although that's likely a
        // pain.
        ClassWriter writer = new ClassWriter(reader, ClassWriter.COMPUTE_FRAMES);

        ClassVisitor visitor = visitorFactory.createVisitor(className, writer);
        if (visitor == null) {
            // per instrumentation docs, if no transformation occured, we must return null
            return null;
        }
View Full Code Here

   *
   * @param reader
   *            reader with class definitions
   */
  public void analyzeClass(final ClassReader reader) {
    final ClassVisitor visitor = createAnalyzingVisitor(CRC64
        .checksum(reader.b));
    reader.accept(visitor, 0);
  }
View Full Code Here

   *
   * @param reader
   *            reader with class definitions
   */
  public void analyzeClass(final ClassReader reader) {
    final ClassVisitor visitor = createAnalyzingVisitor(CRC64
        .checksum(reader.b));
    reader.accept(visitor, 0);
  }
View Full Code Here

   *
   * @param reader
   *            reader with class definitions
   */
  public void analyzeClass(final ClassReader reader) {
    final ClassVisitor visitor = createAnalyzingVisitor(CRC64
        .checksum(reader.b));
    reader.accept(visitor, 0);
  }
View Full Code Here

TOP

Related Classes of org.objectweb.asm.ClassVisitor

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.