private static TypeReference adjustType(final TypeReference type, final int flags) { if (testAny(flags, FLAG_BOOLEAN_PROHIBITED) && type == BuiltinTypes.Boolean) { return BuiltinTypes.Integer; } return type; }
private static TypeReference adjustType(final TypeReference type, final int flags) { if (testAny(flags, FLAG_BOOLEAN_PROHIBITED) && type == BuiltinTypes.Boolean) { return BuiltinTypes.Integer; } return type; }
public static long fromStandardFlags(final long accessFlags, final Kind kind) { long flags = accessFlags; if (testAny(accessFlags, ACC_SUPER)) { flags |= (kind == Kind.Class || kind == Kind.InnerClass ? SUPER : SYNCHRONIZED); } if (testAny(accessFlags, ACC_BRIDGE)) { flags |= (kind == Kind.Field ? VOLATILE : BRIDGE); } if (testAny(accessFlags, ACC_VARARGS)) { flags |= (kind == Kind.Field ? TRANSIENT : VARARGS); } return flags; }
private static TypeReference adjustType(final TypeReference type, final int flags) { if (testAny(flags, FLAG_BOOLEAN_PROHIBITED) && type == BuiltinTypes.Boolean) { return BuiltinTypes.Integer; } return type; }
@Override public boolean isCompoundType() { return Flags.testAny(getFlags(), Flags.COMPOUND); }
@Override public final boolean isFinal() { return Flags.testAny(getFlags(), Flags.FINAL); }
@Override public final boolean isStatic() { return Flags.testAny(getFlags(), Flags.STATIC); }
@Override public final boolean isNonPublic() { return !Flags.testAny(getFlags(), Flags.PUBLIC); }
@Override public boolean isCompoundType() { return Flags.testAny(getFlags(), Flags.COMPOUND); }
public ClassFields(TypeDefinition td, FieldStats fieldStats, MethodStats methodStats) { this.ms = methodStats; for (FieldDefinition fd : td.getDeclaredFields()) { fields.put(new MemberInfo(fd), fd); int flags = fieldStats.getFlags(fd); if(Flags.testAny(flags, FieldStats.WRITE_CONSTRUCTOR) && !Flags.testAny(flags, FieldStats.WRITE_CLASS | FieldStats.WRITE_PACKAGE | FieldStats.WRITE_OUTSIDE) && !Annotations.hasAnnotation(fd, true)) { initializedInCtor.add(fd); } } }
private int tweakForSerialization(FieldDefinition fd, TypeDefinition td) { // Probably field is kept for backwards serialization compatibility if(!fd.isStatic() && Types.isInstance(td, "java/io/Serializable")) { return 10; } if(Flags.testAny(fd.getFlags(), Flags.TRANSIENT)) { return 30; } return 0; }
private void visitMethod(MethodData mdata, MethodDefinition md) { MethodBody body = md.getBody(); if (Flags.testAny(md.getFlags(), Flags.NATIVE)) { mdata.flags |= METHOD_MAY_HAVE_SIDE_EFFECT | METHOD_MAY_RETURN_NORMALLY | METHOD_MAY_THROW | METHOD_NON_TRIVIAL | METHOD_SUPPORTED; } if (body != null) { visitBody(mdata, body); } }
@FieldVisitor public void visitField(FieldDefinition fd, FieldContext fc) { if(!Flags.testAny(fd.getFlags(), Flags.VOLATILE | Flags.FINAL | Flags.TRANSIENT | Flags.STATIC)) { fc.report("NonFinalFieldInImmutableClass", 0); } } }
private int computePriority(FieldDefinition field, MethodDefinition md, NodeChain parents) { int priority = 0; JvmType type = field.getFieldType().getSimpleType(); if (type != JvmType.Long && type != JvmType.Double) priority += 10; if (Flags.testAny(md.getFlags(), Flags.SYNCHRONIZED) || parents.isSynchronized()) priority += 30; return priority; }
public static void processType(@NotNull final TypeDefinition type) { VerifyArgument.notNull(type, "type"); if (Flags.testAny(type.getFlags(), Flags.DEOBFUSCATED)) { return; } type.setFlags(type.getFlags() | Flags.DEOBFUSCATED); flagAnonymousEnumDefinitions(type); }
private void checkFieldRead(Expression expr, MethodContext mc) { if (Nodes.isFieldRead(expr)) { FieldDefinition fd = ((FieldReference) expr.getOperand()).resolve(); if (fd != null && !Flags.testAny(fd.getFlags(), Flags.VOLATILE)) { mc.report("SpinLoopOnField", 0, expr, Roles.FIELD.create(fd)); } } } }
public static void processType(@NotNull final TypeDefinition type) { VerifyArgument.notNull(type, "type"); if (Flags.testAny(type.getFlags(), Flags.DEOBFUSCATED)) { return; } type.setFlags(type.getFlags() | Flags.DEOBFUSCATED); flagAnonymousEnumDefinitions(type); }
@AstVisitor(nodes=AstNodes.EXPRESSIONS) public void visitCode(Expression expr, NodeChain nc, MethodContext mc, MethodDefinition md, TypeDefinition td) { if(expr.getCode() == AstCode.PutField) { FieldDefinition fd = ((FieldReference) expr.getOperand()).resolve(); if (fd.getDeclaringType().isEquivalentTo(td) && !nc.isSynchronized() && !Flags.testAny(fd.getFlags(), Flags.VOLATILE) && reportedFields.add(fd)) { mc.report("MutableServletField", 0, expr); } } } }
public static void processType(@NotNull final TypeDefinition type) { VerifyArgument.notNull(type, "type"); if (Flags.testAny(type.getFlags(), Flags.DEOBFUSCATED)) { return; } type.setFlags(type.getFlags() | Flags.DEOBFUSCATED); flagAnonymousEnumDefinitions(type); }