List of usage examples for org.objectweb.asm Opcodes ACC_PRIVATE
int ACC_PRIVATE
To view the source code for org.objectweb.asm Opcodes ACC_PRIVATE.
Click Source Link
From source file:graph.Modifier.java
License:Apache License
/** * Returns an EnumSet of the modifiers, based on the given bit field (where * the bit values are defined as in the class file format). * * @param access Integer bit field giving access modifiers. * @return Set of modifiers./*from ww w. j av a 2 s . com*/ */ public static EnumSet<Modifier> getSet(int access) { EnumSet<Modifier> modifiers = EnumSet.noneOf(Modifier.class); if ((access & Opcodes.ACC_PUBLIC) != 0) { modifiers.add(Modifier.PUBLIC); } if ((access & Opcodes.ACC_PROTECTED) != 0) { modifiers.add(Modifier.PROTECTED); } if ((access & Opcodes.ACC_PRIVATE) != 0) { modifiers.add(Modifier.PRIVATE); } if ((access & Opcodes.ACC_STATIC) != 0) { modifiers.add(Modifier.STATIC); } if ((access & Opcodes.ACC_FINAL) != 0) { modifiers.add(Modifier.FINAL); } if ((access & Opcodes.ACC_SUPER) != 0) { modifiers.add(Modifier.SUPER); } if ((access & Opcodes.ACC_INTERFACE) != 0) { modifiers.add(Modifier.INTERFACE); } if ((access & Opcodes.ACC_ABSTRACT) != 0) { modifiers.add(Modifier.ABSTRACT); } if ((access & Opcodes.ACC_SYNTHETIC) != 0) { modifiers.add(Modifier.SYNTHETIC); } if ((access & Opcodes.ACC_ANNOTATION) != 0) { modifiers.add(Modifier.ANNOTATION); } if ((access & Opcodes.ACC_ENUM) != 0) { modifiers.add(Modifier.ENUM); } if ((access & Opcodes.ACC_VOLATILE) != 0) { modifiers.add(Modifier.VOLATILE); } if ((access & Opcodes.ACC_TRANSIENT) != 0) { modifiers.add(Modifier.TRANSIENT); } if ((access & Opcodes.ACC_SYNCHRONIZED) != 0) { modifiers.add(Modifier.SYNCHRONIZED); } if ((access & Opcodes.ACC_BRIDGE) != 0) { modifiers.add(Modifier.BRIDGE); } if ((access & Opcodes.ACC_VARARGS) != 0) { modifiers.add(Modifier.VARARGS); } if ((access & Opcodes.ACC_NATIVE) != 0) { modifiers.add(Modifier.NATIVE); } if ((access & Opcodes.ACC_STRICT) != 0) { modifiers.add(Modifier.STRICT); } return modifiers; }
From source file:io.awacs.plugin.stacktrace.ClassTransformer.java
License:Apache License
public void visit(ClassNode cn) { cn.check(Opcodes.ASM5);/*w w w . j a v a 2 s .c om*/ //?? List<MethodNode> appended = new ArrayList<>(cn.methods.size()); //?? for (Object mn : cn.methods) { MethodNode src = (MethodNode) mn; // if (!filterMethod(cn, src)) { continue; } boolean terminated = isTerminatedMethod(src); if (terminated) { //copy exceptions String[] exceptions = null; if (src.exceptions != null) { exceptions = new String[src.exceptions.size()]; for (int i = 0; i < src.exceptions.size(); i++) { exceptions[i] = src.exceptions.get(i).toString(); } } //declare method MethodNode proxy = new MethodNode(src.access, src.name, src.desc, src.signature, exceptions); appended.add(proxy); //copy method annotations List<AnnotationNode> methodAnns = null; if (src.visibleAnnotations != null) { methodAnns = new ArrayList<>(src.visibleAnnotations.size()); methodAnns.addAll(src.visibleAnnotations); } proxy.visibleAnnotations = methodAnns; //copy parameter annotations List[] parameterAnns = null; if (src.visibleParameterAnnotations != null) { parameterAnns = new List[src.visibleParameterAnnotations.length]; System.arraycopy(src.visibleParameterAnnotations, 0, parameterAnns, 0, src.visibleParameterAnnotations.length); } proxy.visibleParameterAnnotations = parameterAnns; //clear origin method's annotation and change name int _slash = cn.name.lastIndexOf('/'); //?? src.name = src.name + "_origin_" + cn.name.substring(_slash + 1); src.access = src.access & ~Opcodes.ACC_PUBLIC | Opcodes.ACC_PRIVATE; src.visibleAnnotations = null; src.visibleLocalVariableAnnotations = null; transformTerminatedMethod(src, proxy, cn); } else { transformPlainMethod(src, cn); } } cn.methods.addAll(appended); }
From source file:io.syncframework.optimizer.OControllerClassVisitor.java
License:Apache License
/** * Add code to the end of the class. We are adding the IController methods * @see org.objectweb.asm.ClassVisitor#visitEnd() *//* w w w . j a va2 s . com*/ @Override public void visitEnd() { // // private static Map<String,Boolean> _asActions; // { // private static Ljava/util/Map; _asActions FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC, "_asActions", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Boolean;>;", null); fv.visitEnd(); } // // private static Map<String,Class<?>> _asConverters; // { FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC, "_asConverters", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;", null); fv.visitEnd(); } // // private static Map<String,Class<?>[]> _asInterceptors; // { FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC, "_asInterceptors", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;[Ljava/lang/Class<*>;>;", null); fv.visitEnd(); } // // private static Map<String,Class<?>> _asParameters; // { FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC, "_asParameters", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;", null); fv.visitEnd(); } if (!createdStaticMethod) { MethodVisitor mv = cv.visitMethod(Opcodes.ACC_STATIC, "<clinit>", "()V", null, null); mv.visitCode(); mv = new OControllerStaticMethodVisitor(mv, reflector); mv.visitInsn(Opcodes.RETURN); mv.visitMaxs(0, 0); mv.visitEnd(); } createUrlMethod(); createContextMethod("_asApplicationContext", Type.getDescriptor(ApplicationContext.class), reflector.getApplicationContext()); createContextMethod("_asErrorContext", Type.getDescriptor(ErrorContext.class), reflector.getErrorContext()); createContextMethod("_asCookieContext", Type.getDescriptor(CookieContext.class), reflector.getCookieContext()); createContextMethod("_asMessageContext", Type.getDescriptor(MessageContext.class), reflector.getMessageContext()); createContextMethod("_asRequestContext", Type.getDescriptor(RequestContext.class), reflector.getRequestContext()); createContextMethod("_asSessionContext", Type.getDescriptor(SessionContext.class), reflector.getSessionContext()); createParametersMethod(); createParametersSetterMethod(); createParametersGetterMethod(); createParameterConverterMethod(); createActionMethod(); createActionInterceptorsMethod(); createActionIsDefinedMethod(); }
From source file:io.syncframework.optimizer.OInterceptorClassVisitor.java
License:Apache License
/** * Add code to the end of the class. We are adding the IController methods * @see org.objectweb.asm.ClassVisitor#visitEnd() *//*from w ww . ja v a 2s . c o m*/ @Override public void visitEnd() { // // private static Map<String,Class<?>> _asConverters; // { FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC, "_asConverters", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;", null); fv.visitEnd(); } // // private static Map<String,Class<?>> _asParameters; // { FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC, "_asParameters", "Ljava/util/Map;", "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;", null); fv.visitEnd(); } createStaticMethod(); if (!createdStaticMethod) { MethodVisitor mv = cv.visitMethod(Opcodes.ACC_STATIC, "<clinit>", "()V", null, null); mv.visitCode(); mv = new OInterceptorStaticMethodVisitor(mv, reflector); mv.visitInsn(Opcodes.RETURN); mv.visitMaxs(0, 0); mv.visitEnd(); } createContextMethod("_asApplicationContext", Type.getDescriptor(ApplicationContext.class), reflector.getApplicationContext()); createContextMethod("_asErrorContext", Type.getDescriptor(ErrorContext.class), reflector.getErrorContext()); createContextMethod("_asCookieContext", Type.getDescriptor(CookieContext.class), reflector.getCookieContext()); createContextMethod("_asMessageContext", Type.getDescriptor(MessageContext.class), reflector.getMessageContext()); createContextMethod("_asRequestContext", Type.getDescriptor(RequestContext.class), reflector.getRequestContext()); createContextMethod("_asSessionContext", Type.getDescriptor(SessionContext.class), reflector.getSessionContext()); createParametersMethod(); createParametersSetterMethod(); createParametersGetterMethod(); createParameterConverterMethod(); createBeforeMethod(); createAfterMethod(); }
From source file:jaspex.speculation.CreateSpeculativeMethodVisitor.java
License:Open Source License
private static MethodVisitor createNextMethodVisitor(int access, String name, String desc, String signature, String[] exceptions, ClassVisitor cv) { if (name.endsWith("$transactional")) { name = name.replace("$transactional", "$speculative"); // Mtodo original podia ser nativo, mas o $speculative no access &= ~Opcodes.ACC_NATIVE; // Todos os mtodos $speculative devem ser public (seno o codegen falha com java.lang.IllegalAccessError) access = access & ~Opcodes.ACC_PRIVATE & ~Opcodes.ACC_PROTECTED | Opcodes.ACC_PUBLIC; }// w ww .j ava 2 s. c o m return cv.visitMethod(access, name, desc, signature, exceptions); }
From source file:jaspex.speculation.SpeculativeTransformer.java
License:Open Source License
public byte[] createSpeculativeMethods(ClassReader cr) { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); ClassVisitor cv = cw;//from w ww . j a v a2 s .c o m // Tornar classe public: para o codegen funcionar, todas as classes tm que ser pblicas // (todos os mtodos $speculative tambm j so public) if (!_JDKClass) cv = new ClassVisitor(Opcodes.ASM4, cv) { @Override public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { access = access & ~Opcodes.ACC_PRIVATE & ~Opcodes.ACC_PROTECTED | Opcodes.ACC_PUBLIC; cv.visit(version, access, name, signature, superName, interfaces); } }; // Visitor que adiciona fields e mtodos para o -detectlocal cv = new InjectDetectLocalClassVisitor(cv); // Criar verses $speculative de mtodos cv = new GenericMethodVisitorAdapter(cv, CreateSpeculativeMethodVisitor.class, currentClass, _JDKClass); // Marcar constructores com SpeculativeCtorMarker cv = new GenericMethodVisitorAdapter(cv, SpeculativeCtorMethodVisitor.class); // Potencialmente substituir alguns dos mtodos com verses internas do JaSPEx cv = new GenericMethodVisitorAdapter(cv, MethodReplacerMethodVisitor.class, currentClass, _JDKClass); // Resolver problema com o acesso a mtodos privados cv = new GenericMethodVisitorAdapter(cv, FixPrivateMethodAccessMethodVisitor.class, currentClass, _JDKClass); // Injectar overloads para a todos os mtodos que so herdados de superclasses no-transactificveis // Nota: Deve estar na pipeline *antes* do CreateSpeculativeMethodVisitor if (!_JDKClass) cv = new InjectOverloadsClassVisitor(cv, currentClass); cr.accept(cv, 0); // Criar verses non-speculative dos mtodos, que funcionam transaccionalmente, mas no // fazem spawn de especulaes new ClassReader(cw.toByteArray()).accept(new CreateNonSpeculativeMethodsClassVisitor(cw), 0); return cw.toByteArray(); }
From source file:jasy.lang.ASMCompiler.java
private static int getAccessModifier(JasyParser.AccessModifierContext ctx, JasyParser.ModStaticContext statCtx) { int mod = Opcodes.ACC_PRIVATE; if (ctx != null) { switch (((TerminalNode) ctx.getChild(0)).getSymbol().getType()) { case JasyLexer.ACC_MOD_PRIVATE: mod = Opcodes.ACC_PRIVATE;//from ww w.ja v a 2s .c o m break; case JasyLexer.ACC_MOD_PROTECTED: mod = Opcodes.ACC_PROTECTED; break; case JasyLexer.ACC_MOD_PUBLIC: mod = Opcodes.ACC_PUBLIC; break; } } if (statCtx != null) return mod | Opcodes.ACC_STATIC; return mod; }
From source file:jasy.SourceToAstTest.java
private static Predicate<FieldAST> fIsPrivate() { return f -> f.selector.accessModifier == Opcodes.ACC_PRIVATE; }
From source file:jpcsp.Allegrex.compiler.CodeBlock.java
License:Open Source License
private void addNonStaticMethods(CompilerContext context, ClassVisitor cv) { MethodVisitor mv;/*from ww w.j a v a 2s. c om*/ // public int exec(int returnAddress, int alternativeReturnAddress, boolean isJump) throws Exception; mv = cv.visitMethod(Opcodes.ACC_PUBLIC, context.getExecMethodName(), context.getExecMethodDesc(), null, exceptions); mv.visitCode(); mv.visitMethodInsn(Opcodes.INVOKESTATIC, getClassName(), context.getStaticExecMethodName(), context.getStaticExecMethodDesc()); mv.visitInsn(Opcodes.IRETURN); mv.visitMaxs(1, 1); mv.visitEnd(); // private static IExecutable e; FieldVisitor fv = cv.visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC, context.getReplaceFieldName(), executableDescriptor, null, null); fv.visitEnd(); // public void setExecutable(IExecutable e); mv = cv.visitMethod(Opcodes.ACC_PUBLIC, context.getReplaceMethodName(), context.getReplaceMethodDesc(), null, exceptions); mv.visitCode(); mv.visitVarInsn(Opcodes.ALOAD, 1); mv.visitFieldInsn(Opcodes.PUTSTATIC, getClassName(), context.getReplaceFieldName(), executableDescriptor); mv.visitInsn(Opcodes.RETURN); mv.visitMaxs(1, 2); mv.visitEnd(); // public IExecutable getExecutable(); mv = cv.visitMethod(Opcodes.ACC_PUBLIC, context.getGetMethodName(), context.getGetMethodDesc(), null, exceptions); mv.visitCode(); mv.visitFieldInsn(Opcodes.GETSTATIC, getClassName(), context.getReplaceFieldName(), executableDescriptor); mv.visitInsn(Opcodes.ARETURN); mv.visitMaxs(1, 1); mv.visitEnd(); }
From source file:lapin.comp.asm.ASMByteCodeGenerator.java
License:Open Source License
private void generateFields(Env env) { Iterator it;/*from w w w. ja v a 2 s. c o m*/ // fields for static subr (singleton) instance _cw.visitField(Opcodes.ACC_STATIC + Opcodes.ACC_VOLATILE, "SELF", toTypeDescriptor(super.classInfo.classname()), null, null).visitEnd(); // fields for constants it = constTable.keySet().iterator(); while (it.hasNext()) { Object key = it.next(); // key: const object String val = Data.string(constTable.get(key)); _cw.visitField(Opcodes.ACC_PRIVATE, val, TYPE_OBJECT.getDescriptor(), null, null).visitEnd(); } // fields for vars it = varTable.keySet().iterator(); while (it.hasNext()) { Object key = it.next(); // key: symbol (var) String val = Data.string(varTable.get(key)); _cw.visitField(Opcodes.ACC_PRIVATE, val, TYPE_SYMBOL.getDescriptor(), null, null).visitEnd(); } // fields for lls it = llTable.keySet().iterator(); while (it.hasNext()) { Object key = it.next(); // key: lambdaList String val = Data.string(llTable.get(key)); _cw.visitField(Opcodes.ACC_PRIVATE, val, TYPE_LAMBDA_LIST.getDescriptor(), null, null).visitEnd(); } }