Abstract offset formatting and consistently print offsets in hex. R=sgjesse Change-Id: Ieb73227e9670df3d3fd42ca3599047cfbb278a00
diff --git a/src/main/java/com/android/tools/r8/code/Const.java b/src/main/java/com/android/tools/r8/code/Const.java index 301f982..2f63777 100644 --- a/src/main/java/com/android/tools/r8/code/Const.java +++ b/src/main/java/com/android/tools/r8/code/Const.java
@@ -41,12 +41,12 @@ } public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", 0x" + StringUtils.hexString(decodedValue(), 8) + + return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 8) + " (" + decodedValue() + ")"); } public String toSmaliString(ClassNameMapper naming) { - return formatSmaliString("v" + AA + ", 0x" + StringUtils.hexString(decodedValue(), 8) + + return formatSmaliString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 8) + " # " + decodedValue()); }
diff --git a/src/main/java/com/android/tools/r8/code/Const16.java b/src/main/java/com/android/tools/r8/code/Const16.java index aa00341..baf2ca7 100644 --- a/src/main/java/com/android/tools/r8/code/Const16.java +++ b/src/main/java/com/android/tools/r8/code/Const16.java
@@ -42,7 +42,7 @@ @Override public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", 0x" + StringUtils.hexString(decodedValue(), 4) + + return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 4) + " (" + decodedValue() + ")"); }
diff --git a/src/main/java/com/android/tools/r8/code/Const4.java b/src/main/java/com/android/tools/r8/code/Const4.java index 26da02a..b907e78 100644 --- a/src/main/java/com/android/tools/r8/code/Const4.java +++ b/src/main/java/com/android/tools/r8/code/Const4.java
@@ -41,12 +41,12 @@ } public String toString(ClassNameMapper naming) { - return formatString("v" + A + ", 0x" + StringUtils.hexString(decodedValue(), 1) + + return formatString("v" + A + ", " + StringUtils.hexString(decodedValue(), 1) + " (" + decodedValue() + ")"); } public String toSmaliString(ClassNameMapper naming) { - return formatSmaliString("v" + A + ", 0x" + StringUtils.hexString(decodedValue(), 2) + + return formatSmaliString("v" + A + ", " + StringUtils.hexString(decodedValue(), 2) + " # " + decodedValue()); }
diff --git a/src/main/java/com/android/tools/r8/code/ConstHigh16.java b/src/main/java/com/android/tools/r8/code/ConstHigh16.java index 3245fa9..d3a4264 100644 --- a/src/main/java/com/android/tools/r8/code/ConstHigh16.java +++ b/src/main/java/com/android/tools/r8/code/ConstHigh16.java
@@ -41,12 +41,12 @@ } public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", 0x" + StringUtils.hexString(decodedValue(), 8) + + return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 8) + " (" + decodedValue() + ")"); } public String toSmaliString(ClassNameMapper naming) { - return formatSmaliString("v" + AA + ", 0x" + StringUtils.hexString(decodedValue(), 8) + + return formatSmaliString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 8) + " # " + decodedValue()); }
diff --git a/src/main/java/com/android/tools/r8/code/ConstWide.java b/src/main/java/com/android/tools/r8/code/ConstWide.java index 7323f9b..002a377 100644 --- a/src/main/java/com/android/tools/r8/code/ConstWide.java +++ b/src/main/java/com/android/tools/r8/code/ConstWide.java
@@ -41,12 +41,12 @@ } public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", 0x" + StringUtils.hexString(decodedValue(), 16) + + return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + " (" + decodedValue() + ")"); } public String toSmaliString(ClassNameMapper naming) { - return formatSmaliString("v" + AA + ", 0x" + StringUtils.hexString(decodedValue(), 16) + + return formatSmaliString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + "L # " + decodedValue()); }
diff --git a/src/main/java/com/android/tools/r8/code/ConstWide16.java b/src/main/java/com/android/tools/r8/code/ConstWide16.java index edd93fc..b593491 100644 --- a/src/main/java/com/android/tools/r8/code/ConstWide16.java +++ b/src/main/java/com/android/tools/r8/code/ConstWide16.java
@@ -41,13 +41,13 @@ } public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", 0x" + StringUtils.hexString(decodedValue(), 16) + + return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + " (" + decodedValue() + ")"); } public String toSmaliString(ClassNameMapper naming) { return formatSmaliString( - "v" + AA + ", 0x" + StringUtils.hexString(decodedValue(), 16) + "L # " + decodedValue()); + "v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + "L # " + decodedValue()); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/ConstWide32.java b/src/main/java/com/android/tools/r8/code/ConstWide32.java index 540e840..5c4fc7b 100644 --- a/src/main/java/com/android/tools/r8/code/ConstWide32.java +++ b/src/main/java/com/android/tools/r8/code/ConstWide32.java
@@ -41,13 +41,13 @@ } public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", 0x" + StringUtils.hexString(decodedValue(), 16) + + return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + " (" + decodedValue() + ")"); } public String toSmaliString(ClassNameMapper naming) { return formatSmaliString( - "v" + AA + ", 0x" + StringUtils.hexString(decodedValue(), 16) + " # " + decodedValue()); + "v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + " # " + decodedValue()); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/ConstWideHigh16.java b/src/main/java/com/android/tools/r8/code/ConstWideHigh16.java index 864a079..182b39a 100644 --- a/src/main/java/com/android/tools/r8/code/ConstWideHigh16.java +++ b/src/main/java/com/android/tools/r8/code/ConstWideHigh16.java
@@ -40,12 +40,12 @@ } public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", 0x" + StringUtils.hexString(decodedValue(), 16) + + return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + " (" + decodedValue() + ")"); } public String toSmaliString(ClassNameMapper naming) { - return formatSmaliString("v" + AA + ", 0x" + StringUtils.hexString(decodedValue(), 16) + + return formatSmaliString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + "L # " + decodedValue()); }
diff --git a/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java b/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java index 1f69d9c..885a8af 100644 --- a/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java +++ b/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java
@@ -80,8 +80,7 @@ public String toSmaliString(ClassNameMapper naming) { StringBuilder builder = new StringBuilder(); builder.append(" "); - builder.append(".array-data"); - builder.append(" 0x"); + builder.append(".array-data "); builder.append(StringUtils.hexString(element_width, 1)); builder.append(" # "); builder.append(element_width); @@ -93,7 +92,6 @@ int value = (data[i] >> j * 8) & 0xff; if (i * 2 + j < size) { builder.append(" "); - builder.append("0x"); builder.append(StringUtils.hexString(value, 2)); builder.append(" # "); builder.append(value); @@ -109,7 +107,6 @@ value = (Short.toUnsignedLong(data[i]) << (16 * (i % (element_width / 2)))) | value; if ((((i + 1) * 2) % element_width) == 0) { builder.append(" "); - builder.append("0x"); builder.append(StringUtils.hexString(value, element_width * 2)); builder.append(" # "); builder.append(value);
diff --git a/src/main/java/com/android/tools/r8/code/Format10t.java b/src/main/java/com/android/tools/r8/code/Format10t.java index e5d2952..8d65d2b 100644 --- a/src/main/java/com/android/tools/r8/code/Format10t.java +++ b/src/main/java/com/android/tools/r8/code/Format10t.java
@@ -40,8 +40,7 @@ } public String toString(ClassNameMapper naming) { - String relative = AA >= 0 ? ("+" + AA) : Integer.toString(AA); - return formatString(relative + " (" + (getOffset() + AA) + ")"); + return formatString(formatRelativeOffset(AA)); } public String toSmaliString(ClassNameMapper naming) {
diff --git a/src/main/java/com/android/tools/r8/code/Format20t.java b/src/main/java/com/android/tools/r8/code/Format20t.java index b3e3627..75721a3 100644 --- a/src/main/java/com/android/tools/r8/code/Format20t.java +++ b/src/main/java/com/android/tools/r8/code/Format20t.java
@@ -40,7 +40,7 @@ } public String toString(ClassNameMapper naming) { - return formatString("" + AAAA + " (" + (getOffset() + AAAA) + ")"); + return formatString("" + AAAA + " " + formatRelativeOffset(AAAA)); } public String toSmaliString(ClassNameMapper naming) {
diff --git a/src/main/java/com/android/tools/r8/code/Format21s.java b/src/main/java/com/android/tools/r8/code/Format21s.java index db148bd..cc5d6c0 100644 --- a/src/main/java/com/android/tools/r8/code/Format21s.java +++ b/src/main/java/com/android/tools/r8/code/Format21s.java
@@ -51,7 +51,7 @@ } public String toSmaliString(ClassNameMapper naming) { - return formatSmaliString("v" + AA + ", 0x" + StringUtils.hexString(BBBB, 4) + " # " + BBBB); + return formatSmaliString("v" + AA + ", " + StringUtils.hexString(BBBB, 4) + " # " + BBBB); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format21t.java b/src/main/java/com/android/tools/r8/code/Format21t.java index 26f7650..6e91554 100644 --- a/src/main/java/com/android/tools/r8/code/Format21t.java +++ b/src/main/java/com/android/tools/r8/code/Format21t.java
@@ -62,7 +62,7 @@ } public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", +" + BBBB + " (" + (getOffset() + BBBB) + ")"); + return formatString("v" + AA + ", " + formatRelativeOffset(BBBB)); } public String toSmaliString(ClassNameMapper naming) {
diff --git a/src/main/java/com/android/tools/r8/code/Format22b.java b/src/main/java/com/android/tools/r8/code/Format22b.java index 8aeae42..1164b03 100644 --- a/src/main/java/com/android/tools/r8/code/Format22b.java +++ b/src/main/java/com/android/tools/r8/code/Format22b.java
@@ -56,7 +56,7 @@ public String toSmaliString(ClassNameMapper naming) { return formatSmaliString( - "v" + AA + ", v" + BB + ", 0x" + StringUtils.hexString(CC, 2) + " # " + CC); + "v" + AA + ", v" + BB + ", " + StringUtils.hexString(CC, 2) + " # " + CC); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format22s.java b/src/main/java/com/android/tools/r8/code/Format22s.java index eef5fa5..85fbeab 100644 --- a/src/main/java/com/android/tools/r8/code/Format22s.java +++ b/src/main/java/com/android/tools/r8/code/Format22s.java
@@ -56,7 +56,7 @@ public String toSmaliString(ClassNameMapper naming) { return formatSmaliString( - "v" + A + ", v" + B + ", 0x" + StringUtils.hexString(CCCC, 4) + " # " + CCCC); + "v" + A + ", v" + B + ", " + StringUtils.hexString(CCCC, 4) + " # " + CCCC); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format22t.java b/src/main/java/com/android/tools/r8/code/Format22t.java index 3ff5190..0a4d664 100644 --- a/src/main/java/com/android/tools/r8/code/Format22t.java +++ b/src/main/java/com/android/tools/r8/code/Format22t.java
@@ -66,7 +66,7 @@ } public String toString(ClassNameMapper naming) { - return formatString("v" + A + ", v" + B + ", +" + CCCC + " (" + (getOffset() + CCCC) + ")"); + return formatString("v" + A + ", v" + B + ", " + formatRelativeOffset(CCCC)); } public String toSmaliString(ClassNameMapper naming) {
diff --git a/src/main/java/com/android/tools/r8/code/Format30t.java b/src/main/java/com/android/tools/r8/code/Format30t.java index 77cb49d..098863c 100644 --- a/src/main/java/com/android/tools/r8/code/Format30t.java +++ b/src/main/java/com/android/tools/r8/code/Format30t.java
@@ -39,7 +39,7 @@ } public String toString(ClassNameMapper naming) { - return formatString("" + AAAAAAAA); + return formatString(formatOffset(AAAAAAAA)); } public String toSmaliString(ClassNameMapper naming) {
diff --git a/src/main/java/com/android/tools/r8/code/Format31t.java b/src/main/java/com/android/tools/r8/code/Format31t.java index ec41ed4..87106f0 100644 --- a/src/main/java/com/android/tools/r8/code/Format31t.java +++ b/src/main/java/com/android/tools/r8/code/Format31t.java
@@ -58,7 +58,7 @@ } public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", +" + BBBBBBBB + " (" + (getOffset() + BBBBBBBB) + ")"); + return formatString("v" + AA + ", " + formatRelativeOffset(BBBBBBBB)); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Instruction.java b/src/main/java/com/android/tools/r8/code/Instruction.java index 6b61845..617642c 100644 --- a/src/main/java/com/android/tools/r8/code/Instruction.java +++ b/src/main/java/com/android/tools/r8/code/Instruction.java
@@ -142,9 +142,18 @@ return 0; } + static String formatOffset(int offset) { + return StringUtils.hexString(offset, 2); + } + + String formatRelativeOffset(int offset) { + String relativeString = offset >= 0 ? ("+" + offset) : Integer.toString(offset); + return formatOffset(getOffset() + offset) + " (" + relativeString + ")"; + } + String formatString(String left) { StringBuilder builder = new StringBuilder(); - StringUtils.appendLeftPadded(builder, Integer.toString(getOffset()), 6); + StringUtils.appendLeftPadded(builder, formatOffset(getOffset()), 6); builder.append(": "); StringUtils.appendRightPadded(builder, getName(), 20); builder.append(left == null ? "" : left);
diff --git a/src/main/java/com/android/tools/r8/code/PackedSwitchPayload.java b/src/main/java/com/android/tools/r8/code/PackedSwitchPayload.java index a3e2d15..5032ab0 100644 --- a/src/main/java/com/android/tools/r8/code/PackedSwitchPayload.java +++ b/src/main/java/com/android/tools/r8/code/PackedSwitchPayload.java
@@ -94,7 +94,6 @@ StringBuilder builder = new StringBuilder(); builder.append(" "); builder.append(".packed-switch "); - builder.append("0x"); builder.append(StringUtils.hexString(first_key, 8)); builder.append(" # "); builder.append(first_key);
diff --git a/src/main/java/com/android/tools/r8/code/SparseSwitchPayload.java b/src/main/java/com/android/tools/r8/code/SparseSwitchPayload.java index 328e6d2..e0e1280 100644 --- a/src/main/java/com/android/tools/r8/code/SparseSwitchPayload.java +++ b/src/main/java/com/android/tools/r8/code/SparseSwitchPayload.java
@@ -103,7 +103,6 @@ builder.append("\n"); for (int i = 0; i < keys.length; i++) { builder.append(" "); - builder.append("0x"); builder.append(StringUtils.hexString(keys[i], 8)); builder.append(" -> :label_"); builder.append(payloadUser.getOffset() + targets[i]);
diff --git a/src/main/java/com/android/tools/r8/graph/DexCode.java b/src/main/java/com/android/tools/r8/graph/DexCode.java index 7915df3..8bd13f0 100644 --- a/src/main/java/com/android/tools/r8/graph/DexCode.java +++ b/src/main/java/com/android/tools/r8/graph/DexCode.java
@@ -193,7 +193,7 @@ int instructionNumber = 0; for (Instruction insn : instructions) { while (debugInfo != null && debugInfo.address == insn.getOffset()) { - builder.append(" ").append(debugInfo).append("\n"); + builder.append(" ").append(debugInfo.toString(false)).append("\n"); debugInfo = debugInfoIterator.hasNext() ? debugInfoIterator.next() : null; } StringUtils.appendLeftPadded(builder, Integer.toString(instructionNumber++), 5); @@ -353,9 +353,9 @@ public String toString() { return "[" - + startAddress + + StringUtils.hexString(startAddress, 2) + " .. " - + (startAddress + instructionCount - 1) + + StringUtils.hexString(startAddress + instructionCount - 1, 2) + "] -> " + handlerIndex; } @@ -420,12 +420,12 @@ builder.append(" "); builder.append(pair.type); builder.append(" -> "); - builder.append(pair.addr); + builder.append(StringUtils.hexString(pair.addr, 2)); builder.append("\n"); } if (catchAllAddr != NO_HANDLER) { builder.append(" default -> "); - builder.append(catchAllAddr); + builder.append(StringUtils.hexString(catchAllAddr, 2)); builder.append("\n"); } builder.append(" ]");
diff --git a/src/main/java/com/android/tools/r8/graph/DexDebugEntry.java b/src/main/java/com/android/tools/r8/graph/DexDebugEntry.java index de7b544..f083794 100644 --- a/src/main/java/com/android/tools/r8/graph/DexDebugEntry.java +++ b/src/main/java/com/android/tools/r8/graph/DexDebugEntry.java
@@ -33,8 +33,15 @@ @Override public String toString() { + return toString(true); + } + + public String toString(boolean withPcPrefix) { StringBuilder builder = new StringBuilder(); - builder.append("pc 0x").append(StringUtils.hexString(address, 2)); + if (withPcPrefix) { + builder.append("pc "); + } + builder.append(StringUtils.hexString(address, 2)); builder.append(", line ").append(line); if (sourceFile != null) { builder.append(", file ").append(sourceFile);
diff --git a/src/main/java/com/android/tools/r8/utils/StringUtils.java b/src/main/java/com/android/tools/r8/utils/StringUtils.java index 8404703..ea81b10 100644 --- a/src/main/java/com/android/tools/r8/utils/StringUtils.java +++ b/src/main/java/com/android/tools/r8/utils/StringUtils.java
@@ -158,11 +158,11 @@ assert(0 <= width && width <= 8); String hex = Integer.toHexString(value); if (value >= 0) { - return zeroPrefixString(hex, width); + return "0x" + zeroPrefixString(hex, width); } else { // Negative ints are always formatted as 8 characters. assert(hex.length() == 8); - return hex; + return "0x" + hex; } } @@ -170,11 +170,11 @@ assert(0 <= width && width <= 16); String hex = Long.toHexString(value); if (value >= 0) { - return zeroPrefixString(hex, width); + return "0x" + zeroPrefixString(hex, width); } else { // Negative longs are always formatted as 16 characters. assert(hex.length() == 16); - return hex; + return "0x" + hex; } }