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;
}