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