summaryrefslogtreecommitdiff
path: root/src/proguard/shrink/UsagePrinter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/proguard/shrink/UsagePrinter.java')
-rw-r--r--src/proguard/shrink/UsagePrinter.java46
1 files changed, 27 insertions, 19 deletions
diff --git a/src/proguard/shrink/UsagePrinter.java b/src/proguard/shrink/UsagePrinter.java
index 294b9e1..69df7fa 100644
--- a/src/proguard/shrink/UsagePrinter.java
+++ b/src/proguard/shrink/UsagePrinter.java
@@ -2,7 +2,7 @@
* ProGuard -- shrinking, optimization, obfuscation, and preverification
* of Java bytecode.
*
- * Copyright (c) 2002-2009 Eric Lafortune (eric@graphics.cornell.edu)
+ * Copyright (c) 2002-2013 Eric Lafortune (eric@graphics.cornell.edu)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
@@ -21,6 +21,8 @@
package proguard.shrink;
import proguard.classfile.*;
+import proguard.classfile.attribute.*;
+import proguard.classfile.attribute.visitor.AttributeVisitor;
import proguard.classfile.util.*;
import proguard.classfile.visitor.*;
@@ -38,7 +40,8 @@ import java.io.PrintStream;
public class UsagePrinter
extends SimplifiedVisitor
implements ClassVisitor,
- MemberVisitor
+ MemberVisitor,
+ AttributeVisitor
{
private final UsageMarker usageMarker;
private final boolean printUnusedItems;
@@ -121,7 +124,6 @@ implements ClassVisitor,
printClassNameHeader();
ps.println(" " +
- lineNumberRange(programClass, programField) +
ClassUtil.externalFullFieldDescription(
programField.getAccessFlags(),
programField.getName(programClass),
@@ -136,9 +138,10 @@ implements ClassVisitor,
{
printClassNameHeader();
- ps.println(" " +
- lineNumberRange(programClass, programMethod) +
- ClassUtil.externalFullMethodDescription(
+ ps.print("====");
+ ps.print(" ");
+ programMethod.attributesAccept(programClass, this);
+ ps.println(ClassUtil.externalFullMethodDescription(
programClass.getName(),
programMethod.getAccessFlags(),
programMethod.getName(programClass),
@@ -147,6 +150,24 @@ implements ClassVisitor,
}
+ // Implementations for AttributeVisitor.
+
+ public void visitAnyAttribute(Clazz clazz, Attribute attribute) {}
+
+
+ public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)
+ {
+ codeAttribute.attributesAccept(clazz, method, this);
+ }
+
+
+ public void visitLineNumberTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LineNumberTableAttribute lineNumberTableAttribute)
+ {
+ ps.print(lineNumberTableAttribute.getLowestLineNumber() + ":" +
+ lineNumberTableAttribute.getHighestLineNumber() + ":");
+ }
+
+
// Small utility methods.
/**
@@ -161,17 +182,4 @@ implements ClassVisitor,
className = null;
}
}
-
-
- /**
- * Returns the line number range of the given class member, followed by a
- * colon, or just an empty String if no range is available.
- */
- private static String lineNumberRange(ProgramClass programClass, ProgramMember programMember)
- {
- String range = programMember.getLineNumberRange(programClass);
- return range != null ?
- (range + ":") :
- "";
- }
}