Example #1
0
  /**
   * @param className
   * @param methodName
   * @param methodSignature
   * @param methodSourceSignature
   * @param isUnsupported
   * @param usesConcurrency TODO
   * @param isStub TODO
   * @param methodCallCount TODO
   * @param accessMethodFor TODO
   * @param isStatic
   */
  MethodInfo(
      @SlashedClassName String className,
      String methodName,
      String methodSignature,
      String methodSourceSignature,
      int accessFlags,
      boolean isUnconditionalThrower,
      boolean isUnsupported,
      boolean usesConcurrency,
      boolean hasBackBranch,
      boolean isStub,
      boolean isIdentity,
      int methodCallCount,
      @CheckForNull String[] exceptions,
      @CheckForNull MethodDescriptor accessMethodFor,
      Map<ClassDescriptor, AnnotationValue> methodAnnotations,
      Map<Integer, Map<ClassDescriptor, AnnotationValue>> methodParameterAnnotations) {
    super(className, methodName, methodSignature, (accessFlags & Constants.ACC_STATIC) != 0);
    this.accessFlags = accessFlags;
    this.exceptions = exceptions;
    if (exceptions != null)
      for (int i = 0; i < exceptions.length; i++)
        exceptions[i] = DescriptorFactory.canonicalizeString(exceptions[i]);
    this.methodSourceSignature = DescriptorFactory.canonicalizeString(methodSourceSignature);
    this.methodAnnotations = Util.immutableMap(methodAnnotations);
    this.methodParameterAnnotations = Util.immutableMap(methodParameterAnnotations);
    if (isUnconditionalThrower) unconditionalThrowers.put(this, null);
    if (isUnsupported) unsupportedMethods.put(this, null);
    if (accessMethodFor != null) MethodInfo.accessMethodFor.put(this, accessMethodFor);
    if (isIdentity) {
      MethodInfo.identifyMethods.put(this, null);
    }

    this.usesConcurrency = usesConcurrency;
    this.hasBackBranch = hasBackBranch;
    this.isStub = isStub;
    this.methodCallCount = methodCallCount;
  }