List of usage examples for org.objectweb.asm Opcodes ACC_INTERFACE
int ACC_INTERFACE
To view the source code for org.objectweb.asm Opcodes ACC_INTERFACE.
Click Source Link
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(); }