Java源码示例:proguard.classfile.VisitorAccepter

示例1
/**
 * Removes all VisitorAccepter objects that are not marked as being used
 * from the given array.
 * @return the new number of VisitorAccepter objects.
 */
private int shrinkArray(VisitorAccepter[] array, int length)
{
    int counter = 0;

    // Shift the used objects together.
    for (int index = 0; index < length; index++)
    {
        if (usageMarker.isUsed(array[index]))
        {
            array[counter++] = array[index];
        }
    }

    // Clear the remaining array elements.
    for (int index = counter; index < length; index++)
    {
        array[index] = null;
    }

    return counter;
}
 
示例2
private void checkCause(VisitorAccepter visitorAccepter)
{
    if (ShortestUsageMarker.this.isUsed(visitorAccepter))
    {
        ShortestUsageMark shortestUsageMark = ShortestUsageMarker.this.getShortestUsageMark(visitorAccepter);

        // Check the class of this mark, if any
        isRecursing = shortestUsageMark.isCausedBy(checkClass);

        // Check the causing class or method, if still necessary.
        if (!isRecursing)
        {
            shortestUsageMark.acceptClassVisitor(this);
            shortestUsageMark.acceptMemberVisitor(this);
        }
    }
}
 
示例3
private void printReason(VisitorAccepter visitorAccepter)
{
    if (shortestUsageMarker.isUsed(visitorAccepter))
    {
        ShortestUsageMark shortestUsageMark = shortestUsageMarker.getShortestUsageMark(visitorAccepter);

        // Print the reason for keeping this class.
        ps.print("  " + shortestUsageMark.getReason());

        // Print the class or method that is responsible, with its reasons.
        shortestUsageMark.acceptClassVisitor(this);
        shortestUsageMark.acceptMemberVisitor(this);
    }
    else
    {
        ps.println("  is not being kept.\n");
    }
}
 
示例4
/**
 * Removes all VisitorAccepter objects that are not marked as being used
 * from the given array.
 * @return the new number of VisitorAccepter objects.
 */
private static int shrinkArray(VisitorAccepter[] array, int length)
{
    int counter = 0;

    // Shift the used objects together.
    for (int index = 0; index < length; index++)
    {
        if (AttributeUsageMarker.isUsed(array[index]))
        {
            array[counter++] = array[index];
        }
    }

    // Clear the remaining array elements.
    for (int index = counter; index < length; index++)
    {
        array[index] = null;
    }

    return counter;
}
 
示例5
protected void markAsUsed(VisitorAccepter visitorAccepter)
{
    Object visitorInfo = visitorAccepter.getVisitorInfo();

    ShortestUsageMark shortestUsageMark =
        visitorInfo != null                           &&
        visitorInfo instanceof ShortestUsageMark &&
        !((ShortestUsageMark)visitorInfo).isCertain() &&
        !currentUsageMark.isShorter((ShortestUsageMark)visitorInfo) ?
            new ShortestUsageMark((ShortestUsageMark)visitorInfo, true):
            currentUsageMark;

    visitorAccepter.setVisitorInfo(shortestUsageMark);
}
 
示例6
protected boolean shouldBeMarkedAsUsed(VisitorAccepter visitorAccepter)
{
    Object visitorInfo = visitorAccepter.getVisitorInfo();

    return //!(visitorAccepter instanceof Clazz &&
           //  isCausedBy(currentUsageMark, (Clazz)visitorAccepter)) &&
           (visitorInfo == null                           ||
           !(visitorInfo instanceof ShortestUsageMark)   ||
           !((ShortestUsageMark)visitorInfo).isCertain() ||
           currentUsageMark.isShorter((ShortestUsageMark)visitorInfo));
}
 
示例7
protected boolean isUsed(VisitorAccepter visitorAccepter)
{
    Object visitorInfo = visitorAccepter.getVisitorInfo();

    return visitorInfo != null                      &&
           visitorInfo instanceof ShortestUsageMark &&
           ((ShortestUsageMark)visitorInfo).isCertain();
}
 
示例8
protected boolean shouldBeMarkedAsPossiblyUsed(VisitorAccepter visitorAccepter)
{
    Object visitorInfo = visitorAccepter.getVisitorInfo();

    return visitorInfo == null                         ||
           !(visitorInfo instanceof ShortestUsageMark) ||
           (!((ShortestUsageMark)visitorInfo).isCertain() &&
            currentUsageMark.isShorter((ShortestUsageMark)visitorInfo));
}
 
示例9
protected boolean isPossiblyUsed(VisitorAccepter visitorAccepter)
{
    Object visitorInfo = visitorAccepter.getVisitorInfo();

    return visitorInfo != null                      &&
           visitorInfo instanceof ShortestUsageMark &&
           !((ShortestUsageMark)visitorInfo).isCertain();
}
 
示例10
/**
 * Assigns a fixed new name to the given class member.
 * @param member the class member.
 * @param name   the new name.
 */
static void setFixedNewMemberName(Member member, String name)
{
    VisitorAccepter lastVisitorAccepter = MethodLinker.lastVisitorAccepter(member);

    if (!(lastVisitorAccepter instanceof LibraryMember) &&
        !(lastVisitorAccepter instanceof MyFixedName))
    {
        lastVisitorAccepter.setVisitorInfo(new MyFixedName(name));
    }
    else
    {
        lastVisitorAccepter.setVisitorInfo(name);
    }
}
 
示例11
/**
 * Returns whether the new name of the given class member is fixed.
 * @param member the class member.
 * @return whether its new name is fixed.
 */
static boolean hasFixedNewMemberName(Member member)
{
    VisitorAccepter lastVisitorAccepter = MethodLinker.lastVisitorAccepter(member);

    return lastVisitorAccepter instanceof LibraryMember ||
           lastVisitorAccepter instanceof MyFixedName;
}
 
示例12
/**
 * Marks the given visitor accepter as being used.
 */
protected void markAsUsed(VisitorAccepter visitorAccepter)
{
    visitorAccepter.setVisitorInfo(USED);
}
 
示例13
/**
 * Returns whether the given visitor accepter should still be marked as
 * being used.
 */
protected boolean shouldBeMarkedAsUsed(VisitorAccepter visitorAccepter)
{
    return visitorAccepter.getVisitorInfo() != USED;
}
 
示例14
/**
 * Returns whether the given visitor accepter has been marked as being used.
 */
protected boolean isUsed(VisitorAccepter visitorAccepter)
{
    return visitorAccepter.getVisitorInfo() == USED;
}
 
示例15
/**
 * Marks the given visitor accepter as possibly being used.
 */
protected void markAsPossiblyUsed(VisitorAccepter visitorAccepter)
{
    visitorAccepter.setVisitorInfo(POSSIBLY_USED);
}
 
示例16
/**
 * Returns whether the given visitor accepter should still be marked as
 * possibly being used.
 */
protected boolean shouldBeMarkedAsPossiblyUsed(VisitorAccepter visitorAccepter)
{
    return visitorAccepter.getVisitorInfo() != USED &&
           visitorAccepter.getVisitorInfo() != POSSIBLY_USED;
}
 
示例17
/**
 * Returns whether the given visitor accepter has been marked as possibly
 * being used.
 */
protected boolean isPossiblyUsed(VisitorAccepter visitorAccepter)
{
    return visitorAccepter.getVisitorInfo() == POSSIBLY_USED;
}
 
示例18
/**
 * Clears any usage marks from the given visitor accepter.
 */
protected void markAsUnused(VisitorAccepter visitorAccepter)
{
    visitorAccepter.setVisitorInfo(null);
}
 
示例19
protected void markAsPossiblyUsed(VisitorAccepter visitorAccepter)
{
    visitorAccepter.setVisitorInfo(new ShortestUsageMark(currentUsageMark, false));
}
 
示例20
protected ShortestUsageMark getShortestUsageMark(VisitorAccepter visitorAccepter)
{
    Object visitorInfo = visitorAccepter.getVisitorInfo();

    return (ShortestUsageMark)visitorInfo;
}
 
示例21
private String visitorInfo(VisitorAccepter visitorAccepter)
{
    return visitorAccepter.getVisitorInfo() == null ? "-" : "+";
}
 
示例22
private void clean(VisitorAccepter visitorAccepter)
{
    visitorAccepter.setVisitorInfo(null);
}
 
示例23
private static void markAsKept(VisitorAccepter visitorAccepter)
{
    visitorAccepter.setVisitorInfo(KEPT);
}
 
示例24
public static boolean isKept(VisitorAccepter visitorAccepter)
{
    return MethodLinker.lastVisitorAccepter(visitorAccepter).getVisitorInfo() == KEPT;
}
 
示例25
/**
 * Marks the given VisitorAccepter as being used.
 * In this context, the VisitorAccepter will be a Utf8Constant object.
 */
private static void markAsUsed(VisitorAccepter visitorAccepter)
{
    visitorAccepter.setVisitorInfo(USED);
}
 
示例26
/**
 * Returns whether the given VisitorAccepter has been marked as being used.
 * In this context, the VisitorAccepter will be a Utf8Constant object.
 */
static boolean isUsed(VisitorAccepter visitorAccepter)
{
    return visitorAccepter.getVisitorInfo() == USED;
}
 
示例27
/**
 * Marks the given VisitorAccepter as being used.
 * In this context, the VisitorAccepter will be a NameAndTypeConstant object.
 */
private static void markAsUsed(VisitorAccepter visitorAccepter)
{
    visitorAccepter.setVisitorInfo(USED);
}
 
示例28
/**
 * Returns whether the given VisitorAccepter has been marked as being used.
 * In this context, the VisitorAccepter will be a NameAndTypeConstant object.
 */
static boolean isUsed(VisitorAccepter visitorAccepter)
{
    return visitorAccepter.getVisitorInfo() == USED;
}
 
示例29
/**
 * Marks the given VisitorAccepter as being used (or useful).
 * In this context, the VisitorAccepter will be an Attribute object.
 */
private static void markAsUsed(VisitorAccepter visitorAccepter)
{
    visitorAccepter.setVisitorInfo(USED);
}
 
示例30
/**
 * Returns whether the given VisitorAccepter has been marked as being used.
 * In this context, the VisitorAccepter will be an Attribute object.
 */
static boolean isUsed(VisitorAccepter visitorAccepter)
{
    return visitorAccepter.getVisitorInfo() == USED;
}