Print InnerClasses/EnclosingMethod in disassembly
Change-Id: I2cff4b1bced681b47f64bbdad2046436fcfcd5d1
diff --git a/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java b/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java
index 491178a..bd6c452 100644
--- a/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java
+++ b/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java
@@ -85,6 +85,32 @@
for (DexType value : clazz.interfaces.values) {
ps.println("# Implements: '" + value.toSourceString() + "'");
}
+ if (!clazz.getInnerClasses().isEmpty()) {
+ ps.println("# InnerClasses:");
+ for (InnerClassAttribute innerClassAttribute : clazz.getInnerClasses()) {
+ ps.println(
+ "# Outer: "
+ + (innerClassAttribute.getOuter() != null
+ ? innerClassAttribute.getOuter().toSourceString()
+ : "-")
+ + ", inner: "
+ + innerClassAttribute.getInner().toSourceString()
+ + ", inner name: "
+ + innerClassAttribute.getInnerName()
+ + ", access: "
+ + Integer.toHexString(innerClassAttribute.getAccess()));
+ }
+ }
+ EnclosingMethodAttribute enclosingMethodAttribute = clazz.getEnclosingMethodAttribute();
+ if (enclosingMethodAttribute != null) {
+ ps.println("# EnclosingMethod:");
+ if (enclosingMethodAttribute.getEnclosingClass() != null) {
+ ps.println("# Class: " + enclosingMethodAttribute.getEnclosingClass().toSourceString());
+ } else {
+ ps.println(
+ "# Method: " + enclosingMethodAttribute.getEnclosingMethod().toSourceString());
+ }
+ }
}
ps.println();
}