@Override public org.objectweb.asm.AnnotationVisitor visitAnnotation(final String desc, boolean visible) { AnnotationValue value = new AnnotationValue(desc); mBuilder.addAnnotation(desc, value); return value.getAnnotationVisitor(); }
@Override public org.objectweb.asm.AnnotationVisitor visitAnnotation(String desc, boolean isVisible) { if (cBuilder instanceof ClassInfo.Builder) { AnnotationValue value = new AnnotationValue(desc); ((ClassInfo.Builder) cBuilder).addAnnotation(desc, value); return value.getAnnotationVisitor(); } return null; }
@Override public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index) { mBuilder.setVariableHasName(index); }
@Override public org.objectweb.asm.AnnotationVisitor visitParameterAnnotation(int parameter, String desc, boolean visible) { AnnotationValue value = new AnnotationValue(desc); int shift = 0; if (parameterCount >= 0) { // if we have synthetic parameter, shift `parameter` value shift = new SignatureParser(methodDesc).getNumParameters() - parameterCount; } mBuilder.addParameterAnnotation(parameter + shift, desc, value); return value.getAnnotationVisitor(); }
private boolean analysisContextContained(XClass xclass) { AnnotatedObject ao = xclass; do { if (ao.getAnnotation(AnalysisContextContainedAnnotation) != null) { return true; } ao = ao.getContainingScope(); } while (ao != null); return false; } @Override
@Override public boolean isFinal() { return checkFlag(Const.ACC_FINAL); }
@Override public boolean isBridge() { return checkFlag(Const.ACC_BRIDGE); }
@Override public AnnotationVisitor visitArray(String name) { name = canonicalString(name); return new AnnotationArrayVisitor(name); }
@Override public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) { mBuilder.setUsesInvokeDynamic(); }
@Override public void visitSource(String arg0, String arg1) { if (cBuilder instanceof ClassInfo.Builder) { ((ClassInfo.Builder) cBuilder).setSource(arg0); } } }, ClassReader.SKIP_FRAMES);
public MethodInfo build() { if (variableHasName != 0) { variableIsSynthetic |= (~variableHasName); } return new MethodInfo(className, methodName, methodSignature, methodSourceSignature, accessFlags, isUnconditionalThrower, isUnsupported, usesConcurrency, hasBackBranch, isStub, isIdentity, usesInvokeDynamic, methodCallCount, exceptions, accessMethodForMethod, accessMethodForField, methodAnnotations, methodParameterAnnotations, variableIsSynthetic); }
@Override public int score(MethodInfo e) { return e.getMethodCallCount(); } };
static IdentityHashMap<MethodInfo, Void> getIdentitymethods() { return getDatabase().identityMethods; } static public IdentityHashMap<MethodInfo, Void> getInvokeDynamicMethods() {
@Override public org.objectweb.asm.AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible) { TypeReference typeRefObject = new TypeReference(typeRef); if (typeRefObject.getSort() == TypeReference.METHOD_FORMAL_PARAMETER) { // treat as parameter annotation AnnotationValue value = new AnnotationValue(desc); mBuilder.addParameterAnnotation(typeRefObject.getFormalParameterIndex(), desc, value); return value.getAnnotationVisitor(); } return null; } }
@Override public boolean isProtected() { return checkFlag(Const.ACC_PROTECTED); }
@Override public boolean isPublic() { return checkFlag(Const.ACC_PUBLIC); }
@Override public AnnotationVisitor visitArray(String name) { return new AnnotationArrayVisitor(result); }
@Override public boolean isPublic() { return checkFlag(Const.ACC_PUBLIC); }
@Override public boolean isDeprecated() { return checkFlag(Opcodes.ACC_DEPRECATED); }
@Override public boolean isSynthetic() { return checkFlag(Const.ACC_SYNTHETIC); }