Example usage for org.objectweb.asm Opcodes ACC_INTERFACE

List of usage examples for org.objectweb.asm Opcodes ACC_INTERFACE

Introduction

In this page you can find the example usage for org.objectweb.asm Opcodes ACC_INTERFACE.

Prototype

int ACC_INTERFACE

To view the source code for org.objectweb.asm Opcodes ACC_INTERFACE.

Click Source Link

Usage

From source file:org.glassfish.pfl.tf.tools.enhancer.Transformer.java

License:Open Source License

public byte[] evaluate(final byte[] arg) {
    final ClassNode cn = new ClassNode();
    final ClassReader cr = new ClassReader(arg);
    cr.accept(cn, ClassReader.SKIP_FRAMES);

    // Ignore annotations and interfaces.
    if (util.hasAccess(cn.access, Opcodes.ACC_ANNOTATION) || util.hasAccess(cn.access, Opcodes.ACC_INTERFACE)) {
        return null;
    }//from   ww  w.  ja  v  a 2  s  . c o  m

    try {
        ecd = new EnhancedClassDataASMImpl(util, annotationNames, cn);

        // If this class is not annotated as a traced class, ignore it.
        if (!ecd.isTracedClass()) {
            return null;
        }

        processTimers();

        byte[] phase1 = null;
        if ((mode == EnhanceTool.ProcessingMode.UpdateSchemas)
                || (mode == EnhanceTool.ProcessingMode.TraceEnhance)) {
            phase1 = util.transform(false, arg, new UnaryFunction<ClassVisitor, ClassAdapter>() {
                public ClassAdapter evaluate(ClassVisitor arg) {
                    return new ClassEnhancer(util, ecd, arg);
                }
            });
        }

        // Only communication from part 1 to part2 is a byte[] and
        // the EnhancedClassData.  A runtime version can be regenerated
        // as above from the byte[] from the class file as it is presented
        // to a ClassFileTransformer.
        //     Implementation note: runtime would keep byte[] stored of
        //     original version whenever tracing is enabled, so that
        //     disabling tracing simply means using a ClassFileTransformer
        //     to get back to the original code.
        //
        // Then add tracing code (part 2).
        //     This is a pure visitor using the AdviceAdapter.
        //     It must NOT modify its input visitor (or you get an
        //     infinite series of calls to onMethodExit...)

        if (mode == EnhanceTool.ProcessingMode.TraceEnhance) {
            final byte[] phase2 = util.transform(util.getDebug(), phase1,
                    new UnaryFunction<ClassVisitor, ClassAdapter>() {

                        public ClassAdapter evaluate(ClassVisitor arg) {
                            return new ClassTracer(util, ecd, arg);
                        }
                    });

            return phase2;
        } else {
            return phase1;
        }
    } catch (TraceEnhancementException exc) {
        if (util.getDebug()) {
            util.info(1, "Could not enhance file: " + exc);
        }

        return null;
    }
}

From source file:org.gradle.initialization.DefaultLegacyTypesSupport.java

License:Apache License

@Override
public byte[] generateSyntheticClass(String name) {
    ClassWriter visitor = new ClassWriter(0);
    visitor.visit(Opcodes.V1_7,/*w ww . j  ava  2 s. co  m*/
            Opcodes.ACC_PUBLIC | Opcodes.ACC_SYNTHETIC | Opcodes.ACC_INTERFACE | Opcodes.ACC_ABSTRACT,
            name.replace('.', '/'), null, OBJECT_TYPE.getInternalName(), null);
    visitor.visitEnd();
    return visitor.toByteArray();
}

From source file:org.jacoco.core.analysis.DataflowAnalyzer.java

License:Open Source License

/**
 * Analyzes the class given as a ASM reader.
 * /*from   ww  w  .j ava2 s  .  c o  m*/
 * @param reader
 *            reader with class definitions
 */
@Override
public void analyzeClass(final ClassReader reader) {
    final ClassNode cn = new ClassNode(Opcodes.ASM5);
    reader.accept(cn, ClassReader.EXPAND_FRAMES);
    // do not analyze interfaces
    if ((cn.access & Opcodes.ACC_INTERFACE) != 0) {
        return;
    }

    final boolean[] probes = getProbes(CRC64.checksum(reader.b));

    if (probes == null) {
        return;
    }

    final ClassAnalyzer analyzer = new ClassAnalyzer(cn, probes, stringPool);

    analyzer.visit(cn);
    coverageVisitor.visitCoverage(analyzer.getCoverage());
}

From source file:org.jacoco.core.internal.analysis.dua.DuaClassAnalyzer.java

License:Open Source License

public void analyze() {
    int methodId = 0;
    for (final MethodNode method : methods) {
        // Does not instrument:
        // 1. Abstract methods
        if ((method.access & Opcodes.ACC_ABSTRACT) != 0) {
            continue;
        }//from www  .  j a va 2 s.  c  o  m
        // 2. Interfaces
        if ((method.access & Opcodes.ACC_INTERFACE) != 0) {
            continue;
        }
        // 3. Synthetic methods
        if ((method.access & Opcodes.ACC_SYNTHETIC) != 0) {
            continue;
        }
        // 4. Static class initialization
        if (method.name.equals("<clinit>")) {
            continue;
        }

        visitMethod(method, methodId++);
    }
}

From source file:org.jacoco.core.internal.flow.ClassProbesAdapter.java

License:Open Source License

@Override
public void visit(final int version, final int access, final String name, final String signature,
        final String superName, final String[] interfaces) {
    interfaceType = (access & Opcodes.ACC_INTERFACE) != 0;
    super.visit(version, access, name, signature, superName, interfaces);
}

From source file:org.jacoco.core.internal.flow.ClassProbesAdapterTest.java

License:Open Source License

@Test
public void testVisitInterfaceMethod() {
    final MockVisitor mv = new MockVisitor() {
        @Override/*ww w  . j  av  a2s.  c  o  m*/
        public MethodProbesVisitor visitMethod(int access, String name, String desc, String signature,
                String[] exceptions) {
            class MockMethodVisitor extends MethodProbesVisitor {
                @Override
                public void visitProbe(int probeId) {
                }

                @Override
                public void visitJumpInsnWithProbe(int opcode, Label label, int probeId) {
                }

                @Override
                public void visitInsnWithProbe(int opcode, int probeId) {
                }

                @Override
                public void visitTableSwitchInsnWithProbes(int min, int max, Label dflt, Label[] labels) {
                }

                @Override
                public void visitLookupSwitchInsnWithProbes(Label dflt, int[] keys, Label[] labels) {
                }
            }
            return new MockMethodVisitor();
        }
    };
    final ClassProbesAdapter adapter = new ClassProbesAdapter(mv);
    adapter.visit(Opcodes.V1_5, Opcodes.ACC_INTERFACE, "Foo", null, "java/lang/Object", null);
    writeMethod(adapter);

    assertEquals(1, mv.count);
    adapter.visitEnd();
    assertEquals(1, mv.count);
}

From source file:org.jacoco.core.internal.instr.ClassInstrumenter.java

License:Open Source License

@Override
public void visit(final int version, final int access, final String name, final String signature,
        final String superName, final String[] interfaces) {
    this.className = name;
    withFrames = (version & 0xff) >= Opcodes.V1_6;
    if ((access & Opcodes.ACC_INTERFACE) == 0) {
        this.probeArrayStrategy = new ClassTypeStrategy();
    } else {/*from   ww  w.  ja va 2 s  .co  m*/
        this.probeArrayStrategy = new InterfaceTypeStrategy();
    }
    super.visit(version, access, name, signature, superName, interfaces);
}

From source file:org.jacoco.core.internal.instr.ProbeArrayStrategyFactory.java

License:Open Source License

private static boolean isInterfaceOrModule(final ClassReader reader) {
    return (reader.getAccess() & (Opcodes.ACC_INTERFACE | Opcodes.ACC_MODULE)) != 0;
}

From source file:org.jacoco.core.internal.instr.ProbeArrayStrategyFactoryTest.java

License:Open Source License

@Test
public void testInterface7() {
    final IProbeArrayStrategy strategy = test(Opcodes.V1_7, Opcodes.ACC_INTERFACE, true, false, true);
    assertEquals(LocalProbeArrayStrategy.class, strategy.getClass());
    assertNoDataField();/* w w  w  . ja v  a2s.co m*/
    assertNoInitMethod();
}

From source file:org.jacoco.core.internal.instr.ProbeArrayStrategyFactoryTest.java

License:Open Source License

@Test
public void testEmptyInterface7() {
    final IProbeArrayStrategy strategy = test(Opcodes.V1_7, Opcodes.ACC_INTERFACE, false, false, false);
    assertEquals(NoneProbeArrayStrategy.class, strategy.getClass());
    assertNoDataField();//from ww w.  j av a2  s.  com
    assertNoInitMethod();
}