List of usage examples for org.objectweb.asm Opcodes ACC_SYNTHETIC
int ACC_SYNTHETIC
To view the source code for org.objectweb.asm Opcodes ACC_SYNTHETIC.
Click Source Link
From source file:org.evosuite.runtime.instrumentation.CreateClassResetClassAdapter.java
License:Open Source License
/** * Creates an empty __STATIC_RESET method where no <clinit> was found. *///from w ww .j a v a2 s .com private void createEmptyStaticReset() { logger.info("Creating brand-new static initializer in class " + className); MethodVisitor mv = cv.visitMethod(Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC | Opcodes.ACC_SYNTHETIC, ClassResetter.STATIC_RESET, "()V", null, null); mv.visitCode(); for (StaticField staticField : static_fields) { if (!finalFields.contains(staticField.name) && !staticField.name.startsWith("__cobertura") && !staticField.name.startsWith("$jacoco") && !staticField.name.startsWith("$VRc") // Old // Emma ) { logger.info("Adding bytecode for initializing field " + staticField.name); if (staticField.value != null) { mv.visitLdcInsn(staticField.value); } else { Type type = Type.getType(staticField.desc); switch (type.getSort()) { case Type.BOOLEAN: case Type.BYTE: case Type.CHAR: case Type.SHORT: case Type.INT: mv.visitInsn(Opcodes.ICONST_0); break; case Type.FLOAT: mv.visitInsn(Opcodes.FCONST_0); break; case Type.LONG: mv.visitInsn(Opcodes.LCONST_0); break; case Type.DOUBLE: mv.visitInsn(Opcodes.DCONST_0); break; case Type.ARRAY: case Type.OBJECT: mv.visitInsn(Opcodes.ACONST_NULL); break; } } mv.visitFieldInsn(Opcodes.PUTSTATIC, className, staticField.name, staticField.desc); } } mv.visitInsn(Opcodes.RETURN); mv.visitMaxs(0, 0); mv.visitEnd(); }
From source file:org.evosuite.runtime.instrumentation.KillSwitchClassAdapter.java
License:Open Source License
@Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); // Don't touch bridge and synthetic methods if ((access & Opcodes.ACC_SYNTHETIC) > 0 || (access & Opcodes.ACC_BRIDGE) > 0) { return mv; }/* w w w . j a va 2 s . com*/ if (name.equals("<clinit>")) { //should not stop a static initializer return mv; } return new KillSwitchMethodAdapter(mv, name, desc); }
From source file:org.evosuite.runtime.instrumentation.LoopCounterClassAdapter.java
License:Open Source License
@Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); // Don't touch bridge and synthetic methods if ((access & Opcodes.ACC_SYNTHETIC) > 0 || (access & Opcodes.ACC_BRIDGE) > 0) { return mv; }/* w w w .ja va 2 s .c o m*/ if (name.equals("<clinit>")) { //should not stop a static initializer return mv; } return new LoopCounterMethodAdapter(mv, name, desc); }
From source file:org.evosuite.symbolic.instrument.AccessFlags.java
License:Open Source License
static boolean isSynthetic(int access) { return is(access, Opcodes.ACC_SYNTHETIC); }
From source file:org.fluidity.composition.maven.AbstractAnnotationProcessorMojo.java
License:Apache License
@SuppressWarnings({ "ResultOfMethodCallIgnored", "MismatchedQueryAndUpdateOfCollection" }) private void processClasses(final Logger log, final ClassLoader loader, final File classesDirectory, final Map<String, Map<String, Collection<String>>> serviceProviderMap, final Map<String, Collection<String>> componentMap, final Map<String, Collection<String>> componentGroupMap) throws IOException, ClassNotFoundException, MojoExecutionException { final DirectoryScanner scanner = new DirectoryScanner(); scanner.setBasedir(classesDirectory); scanner.setIncludes(new String[] { "**/*.class" }); scanner.addDefaultExcludes();// w w w . java2 s. c o m scanner.scan(); final ClassRepository repository = new ClassRepository(loader); final Set<String> publicApis = new HashSet<>(); final Map<String, Collection<String>> serviceProviders = new HashMap<>(); for (final String fileName : scanner.getIncludedFiles()) { final String className = fileName.substring(0, fileName.length() - ClassLoaders.CLASS_SUFFIX.length()) .replace(File.separatorChar, '.'); final String componentPackage = className.substring(0, className.lastIndexOf(".") + 1); final String bindingClassName = componentPackage + GENERATED_PACKAGE_BINDINGS + projectName; if (className.equals(bindingClassName)) { new File(classesDirectory, fileName).delete(); } else { final ClassReader classData = repository.reader(className); assert classData != null : className; final Map<String, Set<String>> serviceProviderApis = new HashMap<>(); class ClassFlags { boolean ignored; boolean component; boolean group; boolean dependent; Type scope; } final ClassFlags flags = new ClassFlags(); final ClassProcessor processor = new ClassProcessor() { public ClassVisitor visitor(final ClassReader reader) { return new ClassVisitor(ASM5) { private final Type serviceProviderType = Type.getType(ServiceProvider.class); private final Type componentType = Type.getType(Component.class); private final Type componentGroupType = Type.getType(ComponentGroup.class); private final String name = ClassReaders.internalName(className); private boolean original; @Override public void visit(final int version, final int access, final String name, final String signature, final String superName, final String[] interfaces) { original = this.name.equals(name); super.visit(version, access, name, signature, superName, interfaces); } @Override public FieldVisitor visitField(final int access, final String name, final String desc, final String signature, final Object value) { if ((access & Opcodes.ACC_SYNTHETIC) != 0) { flags.dependent = name.startsWith("this$"); } return super.visitField(access, name, desc, signature, value); } @Override public AnnotationVisitor visitAnnotation(final String desc, final boolean visible) { final Type type = Type.getType(desc); if (serviceProviderType.equals(type)) { return new ServiceProviderProcessor(repository, reader, processor -> { final String _type = processor.type(); Set<String> list = serviceProviderApis.get(_type); if (list == null) { serviceProviderApis.put(_type, list = new HashSet<>()); } list.addAll(processor.apiSet()); if (_type.equals(ServiceProviders.TYPE)) { publicApis.addAll(list); } }); } else if (componentType.equals(type)) { return new ComponentProcessor(processor -> { if (original) { flags.ignored = !processor.isAutomatic(); flags.scope = processor.scope(); } flags.component = !ClassReaders.isAbstract(classData) && !ClassReaders.isInterface(classData); }); } else if (componentGroupType.equals(type)) { return new ComponentProcessor(processor -> flags.group = !flags.dependent); } else { return null; } } }; } public boolean run(final ClassReader classData) throws IOException, MojoExecutionException { try { classData.accept(visitor(classData), ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES | ClassReader.SKIP_CODE); // components and service providers are always concrete classes that can be instantiated on their own final boolean instantiable = !ClassReaders.isAbstract(classData); if (instantiable) { processAncestry(this, classData, repository); } return instantiable; } catch (final Exceptions.Wrapper e) { throw e.rethrow(IOException.class).rethrow(MojoExecutionException.class); } } }; if (processClass(classData, processor)) { final Map<String, Collection<String>> providerMap = providerMap(PackageBindings.SERVICE_TYPE, serviceProviderMap); final String externalName = ClassReaders.externalName(classData); if (flags.scope != null) { if (flags.ignored) { log.warn("Superfluous 'automatic = false' setting for scoped component %s", externalName); } addServiceProvider(providerMap(Component.SCOPE, serviceProviderMap), flags.scope.getClassName(), externalName); } else if (!flags.ignored) { if (flags.component) { addBinding(bindingClassName, externalName, providerMap, componentMap); } if (flags.group) { addBinding(bindingClassName, externalName, providerMap, componentGroupMap); } } if (!flags.dependent) { for (final Map.Entry<String, Set<String>> entry : serviceProviderApis.entrySet()) { final Set<String> providerNames = entry.getValue(); addServiceProviders(className, providerNames, providerMap(entry.getKey(), serviceProviderMap)); for (final String api : providerNames) { addServiceProvider(serviceProviders, api, className); } } } } } } for (final String className : publicApis) { final Collection<String> providers = serviceProviders.get(className); if (providers != null) { for (final String provider : providers) { makePublic(provider, classesDirectory, repository); } } else { assert ClassReaders.isAbstract(repository.reader(ClassReaders.externalName(className))) : className; } } }
From source file:org.formulacompiler.compiler.internal.build.bytecode.AbstractGenerator.java
License:Open Source License
protected final void genMethods(List _methods) { for (Object o : _methods) { MethodNode mtd = (MethodNode) o; if ((mtd.access & Opcodes.ACC_SYNTHETIC) == 0) { genMethod(mtd);//from w w w .j av a2 s. c om } } }
From source file:org.freud.analysed.classbytecode.parser.asm.AsmElement.java
License:Apache License
@Override public boolean isSynthetic() { return isAccessModifier(Opcodes.ACC_SYNTHETIC); }
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,/*from ww w .j a va 2 s. c o 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.AnalyzerTest.java
License:Open Source License
@Test public void should_ignore_synthetic_classes() throws Exception { final ClassWriter cw = new ClassWriter(0); cw.visit(Opcodes.V1_5, Opcodes.ACC_SYNTHETIC, "Foo", null, "java/lang/Object", null); cw.visitEnd();/*from w ww . j av a 2s.c o m*/ final byte[] bytes = cw.toByteArray(); analyzer.analyzeClass(bytes, ""); assertTrue(classes.isEmpty()); }
From source file:org.jacoco.core.internal.analysis.ClassAnalyzer.java
License:Open Source License
@Override public MethodProbesVisitor visitMethod(final int access, final String name, final String desc, final String signature, final String[] exceptions) { InstrSupport.assertNotInstrumented(name, coverage.getName()); // TODO: Use filter hook if ((access & Opcodes.ACC_SYNTHETIC) != 0) { return null; }//from w w w . j av a 2s . c o m return new MethodAnalyzer(stringPool.get(name), stringPool.get(desc), stringPool.get(signature), probes) { @Override public void visitEnd() { super.visitEnd(); final IMethodCoverage methodCoverage = getCoverage(); if (methodCoverage.getInstructionCounter().getTotalCount() > 0) { // Only consider methods that actually contain code coverage.addMethod(methodCoverage); } } }; }