Remove more warnings Mostly missing @Overrides and missing generics. Change-Id: I6161d53827eb68ea7146ddacd3ee32c3edd3ce3c
diff --git a/src/main/java/com/android/tools/r8/compatdx/CompatDx.java b/src/main/java/com/android/tools/r8/compatdx/CompatDx.java index 09f3321..7da21b9 100644 --- a/src/main/java/com/android/tools/r8/compatdx/CompatDx.java +++ b/src/main/java/com/android/tools/r8/compatdx/CompatDx.java
@@ -310,7 +310,7 @@ maxIndexNumber = options.valueOf(spec.maxIndexNumber); } - public static DxCompatOptions parse(String[] args) throws DxParseError { + public static DxCompatOptions parse(String[] args) { Spec spec = new Spec(); return new DxCompatOptions(spec.parser.parse(args), spec); }
diff --git a/src/main/java/com/android/tools/r8/graph/DexDebugEvent.java b/src/main/java/com/android/tools/r8/graph/DexDebugEvent.java index 9381c90..8d64cf4 100644 --- a/src/main/java/com/android/tools/r8/graph/DexDebugEvent.java +++ b/src/main/java/com/android/tools/r8/graph/DexDebugEvent.java
@@ -21,10 +21,13 @@ } // Make sure all concrete subclasses implements toString, hashCode, and equals. + @Override abstract public String toString(); + @Override abstract public int hashCode(); + @Override abstract public boolean equals(Object other); public abstract void writeOn(DebugBytecodeWriter writer, ObjectToOffsetMapping mapping); @@ -35,6 +38,7 @@ public final int delta; + @Override public void writeOn(DebugBytecodeWriter writer, ObjectToOffsetMapping mapping) { writer.putByte(Constants.DBG_ADVANCE_PC); writer.putUleb128(delta); @@ -44,21 +48,24 @@ this.delta = delta; } + @Override public void addToBuilder(DexDebugEntryBuilder builder) { assert delta >= 0; builder.advancePC(delta); } - + @Override public String toString() { return "ADVANCE_PC " + delta; } + @Override public int hashCode() { return Constants.DBG_ADVANCE_PC + delta * 7; } + @Override public boolean equals(Object other) { return (other instanceof AdvancePC) && (delta == ((AdvancePC) other).delta); @@ -70,23 +77,28 @@ SetPrologueEnd() { } + @Override public void writeOn(DebugBytecodeWriter writer, ObjectToOffsetMapping mapping) { writer.putByte(Constants.DBG_SET_PROLOGUE_END); } + @Override public void addToBuilder(DexDebugEntryBuilder builder) { builder.endPrologue(); } + @Override public String toString() { return "SET_PROLOGUE_END"; } + @Override public int hashCode() { return Constants.DBG_SET_PROLOGUE_END; } + @Override public boolean equals(Object other) { return other instanceof SetPrologueEnd; } @@ -98,22 +110,27 @@ SetEpilogueBegin() { } + @Override public void writeOn(DebugBytecodeWriter writer, ObjectToOffsetMapping mapping) { writer.putByte(Constants.DBG_SET_EPILOGUE_BEGIN); } + @Override public void addToBuilder(DexDebugEntryBuilder builder) { builder.beginEpilogue(); } + @Override public String toString() { return "SET_EPILOGUE_BEGIN"; } + @Override public int hashCode() { return Constants.DBG_SET_EPILOGUE_BEGIN; } + @Override public boolean equals(Object other) { return other instanceof SetEpilogueBegin; } @@ -127,24 +144,29 @@ this.delta = delta; } + @Override public void writeOn(DebugBytecodeWriter writer, ObjectToOffsetMapping mapping) { writer.putByte(Constants.DBG_ADVANCE_LINE); writer.putSleb128(delta); } + @Override public void addToBuilder(DexDebugEntryBuilder builder) { builder.advanceLine(delta); } + @Override public String toString() { return "ADVANCE_LINE " + delta; } + @Override public int hashCode() { return Constants.DBG_ADVANCE_LINE + delta * 7; } + @Override public boolean equals(Object other) { return (other instanceof AdvanceLine) && (delta == ((AdvanceLine) other).delta); @@ -173,6 +195,7 @@ this(registerNum, local.name, local.type, local.signature); } + @Override public void writeOn(DebugBytecodeWriter writer, ObjectToOffsetMapping mapping) { writer.putByte(signature == null ? Constants.DBG_START_LOCAL @@ -194,14 +217,17 @@ } } + @Override public void addToBuilder(DexDebugEntryBuilder builder) { builder.startLocal(registerNum, name, type, signature); } + @Override public String toString() { return "START_LOCAL " + registerNum; } + @Override public int hashCode() { return Constants.DBG_START_LOCAL + registerNum * 7 @@ -210,6 +236,7 @@ + (signature == null ? 0 : signature.hashCode()) * 19; } + @Override public boolean equals(Object other) { if (!(other instanceof StartLocal)) { return false; @@ -236,24 +263,29 @@ this.registerNum = registerNum; } + @Override public void writeOn(DebugBytecodeWriter writer, ObjectToOffsetMapping mapping) { writer.putByte(Constants.DBG_END_LOCAL); writer.putUleb128(registerNum); } + @Override public void addToBuilder(DexDebugEntryBuilder builder) { builder.endLocal(registerNum); } + @Override public String toString() { return "END_LOCAL " + registerNum; } + @Override public int hashCode() { return Constants.DBG_END_LOCAL + registerNum * 7; } + @Override public boolean equals(Object other) { return (other instanceof EndLocal) && (registerNum == ((EndLocal) other).registerNum); @@ -268,24 +300,29 @@ this.registerNum = registerNum; } + @Override public void writeOn(DebugBytecodeWriter writer, ObjectToOffsetMapping mapping) { writer.putByte(Constants.DBG_RESTART_LOCAL); writer.putUleb128(registerNum); } + @Override public void addToBuilder(DexDebugEntryBuilder builder) { builder.restartLocal(registerNum); } + @Override public String toString() { return "RESTART_LOCAL " + registerNum; } + @Override public int hashCode() { return Constants.DBG_RESTART_LOCAL + registerNum * 7; } + @Override public boolean equals(Object other) { return (other instanceof RestartLocal) && (registerNum == ((RestartLocal) other).registerNum); @@ -308,6 +345,7 @@ this.fileName = fileName; } + @Override public void writeOn(DebugBytecodeWriter writer, ObjectToOffsetMapping mapping) { writer.putByte(Constants.DBG_SET_FILE); writer.putString(fileName); @@ -318,19 +356,23 @@ fileName.collectIndexedItems(collection); } + @Override public void addToBuilder(DexDebugEntryBuilder builder) { builder.setFile(fileName); } + @Override public String toString() { return "SET_FILE " + fileName.toString(); } + @Override public int hashCode() { return Constants.DBG_SET_FILE + fileName.hashCode() * 7; } + @Override public boolean equals(Object other) { return (other instanceof SetFile) && fileName.equals(((SetFile) other).fileName); @@ -346,10 +388,12 @@ this.value = value; } + @Override public void writeOn(DebugBytecodeWriter writer, ObjectToOffsetMapping mapping) { writer.putByte(value); } + @Override public void addToBuilder(DexDebugEntryBuilder builder) { int adjustedOpcode = value - Constants.DBG_FIRST_SPECIAL; int line = Constants.DBG_LINE_BASE + (adjustedOpcode % Constants.DBG_LINE_RANGE); @@ -367,15 +411,18 @@ return Constants.DBG_LINE_BASE + (adjustedOpcode % Constants.DBG_LINE_RANGE); } + @Override public String toString() { return "DEFAULT " + value; } + @Override public int hashCode() { return Constants.DBG_FIRST_SPECIAL + value * 7; } + @Override public boolean equals(Object other) { return (other instanceof Default) && (value == ((Default) other).value);
diff --git a/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java b/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java index 5236d12..ae669a2 100644 --- a/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java +++ b/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java
@@ -32,12 +32,14 @@ return builder.build(); } + @Override public int computeHashCode() { return startLine + Arrays.hashCode(parameters) * 7 + Arrays.hashCode(events) * 13; } + @Override public boolean computeEquals(Object other) { if (other instanceof DexDebugInfo) { DexDebugInfo o = (DexDebugInfo) other; @@ -63,6 +65,7 @@ collection.add(this); } + @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("DebugInfo (line " + startLine + ") events: [\n");
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedAnnotation.java b/src/main/java/com/android/tools/r8/graph/DexEncodedAnnotation.java index b421a9c..a8f41d6 100644 --- a/src/main/java/com/android/tools/r8/graph/DexEncodedAnnotation.java +++ b/src/main/java/com/android/tools/r8/graph/DexEncodedAnnotation.java
@@ -33,6 +33,7 @@ assert false; } + @Override public String toString() { return "Encoded annotation " + type + " " + Arrays.toString(elements); }
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java index 882bd99..3552cf7 100644 --- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java +++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -137,7 +137,7 @@ return emitted - rhs.emitted; } } - }; + } public void add(int original, int emitted) { list.add(new Mapping(original, emitted)); @@ -281,6 +281,7 @@ code = builder.build(method.getArity()); } + @Override public String toString() { return "Encoded method " + method; }
diff --git a/src/main/java/com/android/tools/r8/graph/DexField.java b/src/main/java/com/android/tools/r8/graph/DexField.java index 5616967..fa3d6ad 100644 --- a/src/main/java/com/android/tools/r8/graph/DexField.java +++ b/src/main/java/com/android/tools/r8/graph/DexField.java
@@ -115,6 +115,7 @@ return clazz; } + @Override public String toSmaliString() { return clazz.toSmaliString() + "->" + name + ":" + type.toSmaliString(); }
diff --git a/src/main/java/com/android/tools/r8/graph/DexMemberAnnotation.java b/src/main/java/com/android/tools/r8/graph/DexMemberAnnotation.java index 11a9396..7defdaa 100644 --- a/src/main/java/com/android/tools/r8/graph/DexMemberAnnotation.java +++ b/src/main/java/com/android/tools/r8/graph/DexMemberAnnotation.java
@@ -38,7 +38,7 @@ return true; } if (other instanceof DexMemberAnnotation) { - DexMemberAnnotation otherMember = (DexMemberAnnotation) other; + DexMemberAnnotation<?,?> otherMember = (DexMemberAnnotation<?,?>) other; return item.equals(otherMember.item) && annotations.equals(otherMember.annotations); } return false;
diff --git a/src/main/java/com/android/tools/r8/graph/DexMethod.java b/src/main/java/com/android/tools/r8/graph/DexMethod.java index f8b3c8c..cc8e0db 100644 --- a/src/main/java/com/android/tools/r8/graph/DexMethod.java +++ b/src/main/java/com/android/tools/r8/graph/DexMethod.java
@@ -50,12 +50,14 @@ return mapping.getOffsetFor(this); } + @Override public int computeHashCode() { return holder.hashCode() + proto.hashCode() * 7 + name.hashCode() * 31; } + @Override public boolean computeEquals(Object other) { if (other instanceof DexMethod) { DexMethod o = (DexMethod) other; @@ -124,10 +126,12 @@ return holder + "." + name; } + @Override public String toSmaliString() { return holder.toSmaliString() + "->" + name + proto.toSmaliString(); } + @Override public String toSourceString() { StringBuilder builder = new StringBuilder(); builder.append(proto.returnType.toSourceString());
diff --git a/src/main/java/com/android/tools/r8/graph/DexProto.java b/src/main/java/com/android/tools/r8/graph/DexProto.java index 946eb6a..69eaeb5 100644 --- a/src/main/java/com/android/tools/r8/graph/DexProto.java +++ b/src/main/java/com/android/tools/r8/graph/DexProto.java
@@ -18,12 +18,14 @@ this.parameters = parameters; } + @Override public int computeHashCode() { return shorty.hashCode() + returnType.hashCode() * 7 + parameters.hashCode() * 31; } + @Override public boolean computeEquals(Object other) { if (other instanceof DexProto) { DexProto o = (DexProto) other; @@ -34,6 +36,7 @@ return false; } + @Override public String toString() { return "Proto " + shorty + " " + returnType + " " + parameters; }
diff --git a/src/main/java/com/android/tools/r8/graph/DexString.java b/src/main/java/com/android/tools/r8/graph/DexString.java index 75a6d35..73339f1 100644 --- a/src/main/java/com/android/tools/r8/graph/DexString.java +++ b/src/main/java/com/android/tools/r8/graph/DexString.java
@@ -26,10 +26,12 @@ this.content = encode(string); } + @Override public int computeHashCode() { return size * 7 + Arrays.hashCode(content); } + @Override public boolean computeEquals(Object other) { if (other instanceof DexString) { DexString o = (DexString) other;
diff --git a/src/main/java/com/android/tools/r8/graph/DexType.java b/src/main/java/com/android/tools/r8/graph/DexType.java index 0d81ea4..60afb69 100644 --- a/src/main/java/com/android/tools/r8/graph/DexType.java +++ b/src/main/java/com/android/tools/r8/graph/DexType.java
@@ -37,10 +37,12 @@ this.descriptor = descriptor; } + @Override public int computeHashCode() { return descriptor.hashCode(); } + @Override public boolean computeEquals(Object other) { if (other instanceof DexType) { return descriptor.equals(((DexType) other).descriptor); @@ -218,6 +220,7 @@ return descriptor.toString(); } + @Override public String toSourceString() { if (toStringCache == null) { // TODO(ager): Pass in a ProguardMapReader to map names back to original names.
diff --git a/src/main/java/com/android/tools/r8/graph/KeyedDexItem.java b/src/main/java/com/android/tools/r8/graph/KeyedDexItem.java index ad852eb..066ca69 100644 --- a/src/main/java/com/android/tools/r8/graph/KeyedDexItem.java +++ b/src/main/java/com/android/tools/r8/graph/KeyedDexItem.java
@@ -12,7 +12,7 @@ if (other == this) { return true; } - return (other.getClass() == getClass()) && ((KeyedDexItem) other).getKey().equals(getKey()); + return (other.getClass() == getClass()) && ((KeyedDexItem<?>) other).getKey().equals(getKey()); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/Add.java b/src/main/java/com/android/tools/r8/ir/code/Add.java index 1577968..cfebbac 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Add.java +++ b/src/main/java/com/android/tools/r8/ir/code/Add.java
@@ -26,10 +26,12 @@ return true; } + @Override public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { return new AddInt(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { // The dalvik jit had a bug where the long operations add, sub, or, xor and and would write // the first part of the result long before reading the second part of the input longs. @@ -40,34 +42,42 @@ return new AddLong(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateFloat(int dest, int left, int right) { return new AddFloat(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateDouble(int dest, int left, int right) { return new AddDouble(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { return new AddInt2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { return new AddLong2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateFloat2Addr(int left, int right) { return new AddFloat2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateDouble2Addr(int left, int right) { return new AddDouble2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { return new AddIntLit8(dest, left, constant); } + @Override public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { return new AddIntLit16(dest, left, constant); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java b/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java index 49adcb4..20a7580 100644 --- a/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java +++ b/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java
@@ -41,6 +41,7 @@ && leftValue().isConstant() && rightValue().isConstant(); } + @Override public boolean needsValueInRegister(Value value) { assert !isSub(); // Constants in instructions for sub must be handled in subclass Sub. // Always require the left value in a register. If left and right are the same value, then
diff --git a/src/main/java/com/android/tools/r8/ir/code/BasicBlockInstructionIterator.java b/src/main/java/com/android/tools/r8/ir/code/BasicBlockInstructionIterator.java index 41db4d9..ff9e257 100644 --- a/src/main/java/com/android/tools/r8/ir/code/BasicBlockInstructionIterator.java +++ b/src/main/java/com/android/tools/r8/ir/code/BasicBlockInstructionIterator.java
@@ -177,6 +177,7 @@ current.clearBlock(); } + @Override public BasicBlock split(IRCode code, ListIterator<BasicBlock> blocksIterator) { List<BasicBlock> blocks = code.blocks; assert blocksIterator == null || IteratorUtils.peekPrevious(blocksIterator) == block; @@ -217,6 +218,7 @@ return newBlock; } + @Override public BasicBlock split(int instructions, IRCode code, ListIterator<BasicBlock> blocksIterator) { // Split at the current cursor position. BasicBlock newBlock = split(code, blocksIterator); @@ -333,6 +335,7 @@ } } + @Override public BasicBlock inlineInvoke( IRCode code, IRCode inlinee, ListIterator<BasicBlock> blocksIterator, List<BasicBlock> blocksToRemove, DexType downcast) {
diff --git a/src/main/java/com/android/tools/r8/ir/code/CatchHandlers.java b/src/main/java/com/android/tools/r8/ir/code/CatchHandlers.java index d67c359..99ce3cc 100644 --- a/src/main/java/com/android/tools/r8/ir/code/CatchHandlers.java +++ b/src/main/java/com/android/tools/r8/ir/code/CatchHandlers.java
@@ -69,7 +69,7 @@ if (!(o instanceof CatchHandlers)) { return false; } - CatchHandlers that = (CatchHandlers) o; + CatchHandlers<?> that = (CatchHandlers<?>) o; return guards.equals(that.guards) && targets.equals(that.targets); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/ConstClass.java b/src/main/java/com/android/tools/r8/ir/code/ConstClass.java index c43ce44..bed6e99 100644 --- a/src/main/java/com/android/tools/r8/ir/code/ConstClass.java +++ b/src/main/java/com/android/tools/r8/ir/code/ConstClass.java
@@ -50,6 +50,7 @@ return true; } + @Override public boolean identicalNonValueNonPositionParts(Instruction other) { return other.asConstClass().clazz == clazz; }
diff --git a/src/main/java/com/android/tools/r8/ir/code/Div.java b/src/main/java/com/android/tools/r8/ir/code/Div.java index 69541c1..872bc63 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Div.java +++ b/src/main/java/com/android/tools/r8/ir/code/Div.java
@@ -36,42 +36,52 @@ return false; } + @Override public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { return new DivInt(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { return new DivLong(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateFloat(int dest, int left, int right) { return new DivFloat(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateDouble(int dest, int left, int right) { return new DivDouble(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { return new DivInt2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { return new DivLong2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateFloat2Addr(int left, int right) { return new DivFloat2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateDouble2Addr(int left, int right) { return new DivDouble2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { return new DivIntLit8(dest, left, constant); } + @Override public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { return new DivIntLit16(dest, left, constant); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/Goto.java b/src/main/java/com/android/tools/r8/ir/code/Goto.java index f88020d..eef666b 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Goto.java +++ b/src/main/java/com/android/tools/r8/ir/code/Goto.java
@@ -67,6 +67,7 @@ return super.toString() + "block <unknown>"; } + @Override public void print(CfgPrinter printer) { super.print(printer); printer.append(" B").append(getTarget().getNumber());
diff --git a/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionsIterator.java b/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionsIterator.java index 1bedf26..5da5eb6 100644 --- a/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionsIterator.java +++ b/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionsIterator.java
@@ -38,6 +38,7 @@ return instructionIterator.next(); } + @Override public void add(Instruction instruction) { instructionIterator.add(instruction); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/InstanceGet.java b/src/main/java/com/android/tools/r8/ir/code/InstanceGet.java index b286544..bebbea1 100644 --- a/src/main/java/com/android/tools/r8/ir/code/InstanceGet.java +++ b/src/main/java/com/android/tools/r8/ir/code/InstanceGet.java
@@ -88,6 +88,7 @@ return o.field == field && o.type == type; } + @Override public int compareNonValueParts(Instruction other) { InstanceGet o = other.asInstanceGet(); int result = field.slowCompareTo(o.field);
diff --git a/src/main/java/com/android/tools/r8/ir/code/InstancePut.java b/src/main/java/com/android/tools/r8/ir/code/InstancePut.java index 0866205..25cb64b 100644 --- a/src/main/java/com/android/tools/r8/ir/code/InstancePut.java +++ b/src/main/java/com/android/tools/r8/ir/code/InstancePut.java
@@ -78,6 +78,7 @@ return o.field == field && o.type == type; } + @Override public int compareNonValueParts(Instruction other) { InstancePut o = other.asInstancePut(); int result = field.slowCompareTo(o.field);
diff --git a/src/main/java/com/android/tools/r8/ir/code/InstructionListIterator.java b/src/main/java/com/android/tools/r8/ir/code/InstructionListIterator.java index 56a3e1f..fc7817b 100644 --- a/src/main/java/com/android/tools/r8/ir/code/InstructionListIterator.java +++ b/src/main/java/com/android/tools/r8/ir/code/InstructionListIterator.java
@@ -49,6 +49,7 @@ * @return the instruction that matched the predicate or {@code null} if all instructions fails * the predicate test */ + @Override default Instruction nextUntil(Predicate<Instruction> predicate) { while (hasNext()) { Instruction instruction = next();
diff --git a/src/main/java/com/android/tools/r8/ir/code/InvokeCustom.java b/src/main/java/com/android/tools/r8/ir/code/InvokeCustom.java index e0e816b..adbb602 100644 --- a/src/main/java/com/android/tools/r8/ir/code/InvokeCustom.java +++ b/src/main/java/com/android/tools/r8/ir/code/InvokeCustom.java
@@ -83,10 +83,12 @@ return 0; } + @Override public boolean isInvokeCustom() { return true; } + @Override public InvokeCustom asInvokeCustom() { return this; }
diff --git a/src/main/java/com/android/tools/r8/ir/code/InvokeSuper.java b/src/main/java/com/android/tools/r8/ir/code/InvokeSuper.java index 428be6f..4840f23 100644 --- a/src/main/java/com/android/tools/r8/ir/code/InvokeSuper.java +++ b/src/main/java/com/android/tools/r8/ir/code/InvokeSuper.java
@@ -58,6 +58,7 @@ addInvokeAndMoveResult(instruction, builder); } + @Override public boolean identicalNonValueNonPositionParts(Instruction other) { if (!other.isInvokeSuper()) { return false;
diff --git a/src/main/java/com/android/tools/r8/ir/code/LogicalBinop.java b/src/main/java/com/android/tools/r8/ir/code/LogicalBinop.java index 770278a..3d6a3a0 100644 --- a/src/main/java/com/android/tools/r8/ir/code/LogicalBinop.java +++ b/src/main/java/com/android/tools/r8/ir/code/LogicalBinop.java
@@ -55,6 +55,7 @@ } } + @Override public boolean needsValueInRegister(Value value) { // Always require the left value in a register. If left and right are the same value, then // both will use its register.
diff --git a/src/main/java/com/android/tools/r8/ir/code/Mul.java b/src/main/java/com/android/tools/r8/ir/code/Mul.java index 42c7f09..9c676df 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Mul.java +++ b/src/main/java/com/android/tools/r8/ir/code/Mul.java
@@ -26,6 +26,7 @@ return true; } + @Override public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { // Flip arguments if dest and right are the same to work around x86 code generation bug on // Android L. See https://android-review.googlesource.com/#/c/114932/ for the fix for Android @@ -33,6 +34,7 @@ return dest == right ? new MulInt(dest, right, left) : new MulInt(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { // Flip arguments if dest and right are the same to work around x86 code generation bug on // Android L. See https://android-review.googlesource.com/#/c/114932/ for the fix for Android @@ -40,6 +42,7 @@ return dest == right ? new MulLong(dest, right, left) : new MulLong(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateFloat(int dest, int left, int right) { // Flip arguments if dest and right are the same to work around x86 code generation bug on // Android L. See https://android-review.googlesource.com/#/c/114932/ for the fix for Android @@ -47,6 +50,7 @@ return dest == right ? new MulFloat(dest, right, left) : new MulFloat(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateDouble(int dest, int left, int right) { // Flip arguments if dest and right are the same to work around x86 code generation bug on // Android L. See https://android-review.googlesource.com/#/c/114932/ for the fix for Android @@ -54,26 +58,32 @@ return dest == right ? new MulDouble(dest, right, left) : new MulDouble(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { return new MulInt2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { return new MulLong2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateFloat2Addr(int left, int right) { return new MulFloat2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateDouble2Addr(int left, int right) { return new MulDouble2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { return new MulIntLit8(dest, left, constant); } + @Override public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { return new MulIntLit16(dest, left, constant); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/Or.java b/src/main/java/com/android/tools/r8/ir/code/Or.java index 24b8995..66eaaaa 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Or.java +++ b/src/main/java/com/android/tools/r8/ir/code/Or.java
@@ -77,10 +77,12 @@ return type.ordinal() - other.asOr().type.ordinal(); } + @Override int foldIntegers(int left, int right) { return left | right; } + @Override long foldLongs(long left, long right) { return left | right; }
diff --git a/src/main/java/com/android/tools/r8/ir/code/Phi.java b/src/main/java/com/android/tools/r8/ir/code/Phi.java index 22c8380..78c5c4e 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Phi.java +++ b/src/main/java/com/android/tools/r8/ir/code/Phi.java
@@ -281,6 +281,7 @@ /** * Determine if the only possible values for the phi are the integers 0 or 1. */ + @Override public boolean knownToBeBoolean() { return knownToBeBoolean(new HashSet<>()); } @@ -356,6 +357,7 @@ return false; } + @Override public boolean needsRegister() { return true; }
diff --git a/src/main/java/com/android/tools/r8/ir/code/Rem.java b/src/main/java/com/android/tools/r8/ir/code/Rem.java index 7232012..dc8213b 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Rem.java +++ b/src/main/java/com/android/tools/r8/ir/code/Rem.java
@@ -36,42 +36,52 @@ return false; } + @Override public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { return new RemInt(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { return new RemLong(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateFloat(int dest, int left, int right) { return new RemFloat(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateDouble(int dest, int left, int right) { return new RemDouble(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { return new RemInt2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { return new RemLong2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateFloat2Addr(int left, int right) { return new RemFloat2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateDouble2Addr(int left, int right) { return new RemDouble2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { return new RemIntLit8(dest, left, constant); } + @Override public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { return new RemIntLit16(dest, left, constant); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/Sub.java b/src/main/java/com/android/tools/r8/ir/code/Sub.java index 7bb1107..4bf7e66 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Sub.java +++ b/src/main/java/com/android/tools/r8/ir/code/Sub.java
@@ -31,10 +31,12 @@ return false; } + @Override public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { return new SubInt(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { // The dalvik jit had a bug where the long operations add, sub, or, xor and and would write // the first part of the result long before reading the second part of the input longs. @@ -45,35 +47,43 @@ return new SubLong(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateFloat(int dest, int left, int right) { return new SubFloat(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateDouble(int dest, int left, int right) { return new SubDouble(dest, left, right); } + @Override public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { return new SubInt2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { return new SubLong2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateFloat2Addr(int left, int right) { return new SubFloat2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateDouble2Addr(int left, int right) { return new SubDouble2Addr(left, right); } + @Override public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { // The sub instructions with constants are rsub, and is handled below. throw new Unreachable("Unsupported instruction SubIntLit8"); } + @Override public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { // The sub instructions with constants are rsub, and is handled below. throw new Unreachable("Unsupported instruction SubIntLit16");
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java index 2312320..b8324d9 100644 --- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java +++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -187,7 +187,7 @@ } } - private void synthesizeLambdaClasses(Builder builder) throws ApiLevelException { + private void synthesizeLambdaClasses(Builder<?> builder) throws ApiLevelException { if (lambdaRewriter != null) { lambdaRewriter.adjustAccessibility(); lambdaRewriter.synthesizeLambdaClasses(builder); @@ -195,7 +195,7 @@ } private void desugarInterfaceMethods( - Builder builder, InterfaceMethodRewriter.Flavor includeAllResources) + Builder<?> builder, InterfaceMethodRewriter.Flavor includeAllResources) throws ApiLevelException { if (interfaceMethodRewriter != null) { interfaceMethodRewriter.desugarInterfaceMethods(builder, includeAllResources); @@ -209,7 +209,7 @@ convertClassesToDex(application.classes(), executor); // Build a new application with jumbo string info, - Builder builder = application.builder(); + Builder<?> builder = application.builder(); builder.setHighestSortingString(highestSortingString); synthesizeLambdaClasses(builder); @@ -346,7 +346,7 @@ } // Build a new application with jumbo string info. - Builder builder = application.builder(); + Builder<?> builder = application.builder(); builder.setHighestSortingString(highestSortingString); // Second inlining pass for dealing with double inline callers.
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java index 3be3466..64513c3 100644 --- a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java +++ b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
@@ -757,11 +757,11 @@ } } - private int[] getSwitchTargets(LabelNode dflt, List<LabelNode> labels) { + private int[] getSwitchTargets(LabelNode dflt, List labels) { int[] targets = new int[1 + labels.size()]; targets[0] = getOffset(dflt); for (int i = 1; i < targets.length; i++) { - targets[i] = getOffset(labels.get(i - 1)); + targets[i] = getOffset((LabelNode) labels.get(i - 1)); } return targets; }
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/JarState.java b/src/main/java/com/android/tools/r8/ir/conversion/JarState.java index d211a03..67f6c93 100644 --- a/src/main/java/com/android/tools/r8/ir/conversion/JarState.java +++ b/src/main/java/com/android/tools/r8/ir/conversion/JarState.java
@@ -649,6 +649,7 @@ // Printing helpers. + @Override public String toString() { return "locals: " + localsToString(Arrays.asList(locals)) + ", stack: " + stackToString(stack); }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java index 2c43bd7..31c6de1 100644 --- a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java +++ b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
@@ -224,7 +224,7 @@ * Move static and default interface methods to companion classes, * add missing methods to forward to moved default methods implementation. */ - public void desugarInterfaceMethods(Builder builder, Flavor flavour) throws ApiLevelException { + public void desugarInterfaceMethods(Builder<?> builder, Flavor flavour) throws ApiLevelException { // Process all classes first. Add missing forwarding methods to // replace desugared default interface methods. forwardingMethods.addAll(processClasses(builder, flavour));
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java index 357a813..f9a7f1f 100644 --- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java +++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java
@@ -201,7 +201,7 @@ } /** Generates lambda classes and adds them to the builder. */ - public void synthesizeLambdaClasses(Builder builder) throws ApiLevelException { + public void synthesizeLambdaClasses(Builder<?> builder) throws ApiLevelException { for (LambdaClass lambdaClass : knownLambdaClasses.values()) { DexProgramClass synthesizedClass = lambdaClass.synthesizeLambdaClass(); converter.optimizeSynthesizedClass(synthesizedClass);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java index fd3e433..256194d 100644 --- a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java +++ b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
@@ -251,6 +251,7 @@ super(position); } + @Override public SwitchBuilder self() { return this; } @@ -313,6 +314,7 @@ this.code = code; } + @Override public IfBuilder self() { return this; } @@ -478,7 +480,7 @@ if (current.size() == 1) { outliers.add(previousKey); } else { - sequences.add(current);; + sequences.add(current); } current = new IntArrayList(); }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/InliningInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/InliningInfo.java index 543aba4..f58cadd 100644 --- a/src/main/java/com/android/tools/r8/ir/optimize/InliningInfo.java +++ b/src/main/java/com/android/tools/r8/ir/optimize/InliningInfo.java
@@ -45,6 +45,7 @@ this.target = target; } + @Override void appendOn(StringBuffer buffer) { buffer.append("<< INLINED"); } @@ -58,6 +59,7 @@ this.reason = reason; } + @Override public void appendOn(StringBuffer buffer) { buffer.append("-- no inlining: "); buffer.append(reason); @@ -79,6 +81,7 @@ edges.add(new Edge(invoke.getType(), invoke.getInvokedMethod(), new NotInlining(reason))); } + @Override public String toString() { StringBuffer buffer = new StringBuffer(method.method.toSourceString()); buffer.append(" {\n");
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java b/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java index 35d2e14..9385f11 100644 --- a/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java +++ b/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java
@@ -670,6 +670,7 @@ super(method, block); } + @Override protected void handle(int start, int end, Outline outline) { synchronized (candidates) { candidates.computeIfAbsent(outline, k -> new ArrayList<>()).add(method); @@ -695,6 +696,7 @@ this.toRemove = toRemove; } + @Override protected void handle(int start, int end, Outline outline) { if (candidates.containsKey(outline)) { DexMethod m = generatedOutlines.get(outline);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/SwitchUtils.java b/src/main/java/com/android/tools/r8/ir/optimize/SwitchUtils.java index 0c33561..e95919b 100644 --- a/src/main/java/com/android/tools/r8/ir/optimize/SwitchUtils.java +++ b/src/main/java/com/android/tools/r8/ir/optimize/SwitchUtils.java
@@ -24,13 +24,13 @@ public final Instruction arrayGet; public final Instruction staticGet; public final Int2ReferenceMap<DexField> indexMap; - public final Reference2IntMap ordinalsMap; + public final Reference2IntMap<DexField> ordinalsMap; private EnumSwitchInfo(DexType enumClass, Instruction ordinalInvoke, Instruction arrayGet, Instruction staticGet, Int2ReferenceMap<DexField> indexMap, - Reference2IntMap ordinalsMap) { + Reference2IntMap<DexField> ordinalsMap) { this.enumClass = enumClass; this.ordinalInvoke = ordinalInvoke; this.arrayGet = arrayGet; @@ -89,7 +89,7 @@ // Due to member rebinding, only the fields are certain to provide the actual enums // class. DexType enumTyoe = indexMap.values().iterator().next().getHolder(); - Reference2IntMap ordinalsMap + Reference2IntMap<DexField> ordinalsMap = EnumOrdinalMapCollector.getOrdinalsMapFor(enumTyoe, appInfo); if (ordinalsMap == null) { return null;
diff --git a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java index 01dc4fd..7903463 100644 --- a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java +++ b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
@@ -167,6 +167,7 @@ /** * Perform register allocation for the IRCode. */ + @Override public void allocateRegisters(boolean debug) { // There are no linked values prior to register allocation. assert noLinkedValues();
diff --git a/src/main/java/com/android/tools/r8/naming/NamingLens.java b/src/main/java/com/android/tools/r8/naming/NamingLens.java index 604190c..69c165d 100644 --- a/src/main/java/com/android/tools/r8/naming/NamingLens.java +++ b/src/main/java/com/android/tools/r8/naming/NamingLens.java
@@ -74,6 +74,7 @@ // Intentionally left empty. } + @Override public boolean checkTargetCanBeTranslated(DexMethod item) { return true; }
diff --git a/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java b/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java index 0b683e2..415b8a7 100644 --- a/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java +++ b/src/main/java/com/android/tools/r8/naming/ProguardMapReader.java
@@ -416,6 +416,7 @@ this.msg = msg; } + @Override public String toString() { return "Parse error [" + lineNo + ":" + lineOffset + "] " + msg; }
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java index da89ff1..31a81f9 100644 --- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java +++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -807,10 +807,11 @@ .entrySet()) { allLive.addAll(entry.getValue().getItems()); } - Set reachableNotLive = Sets.difference(allLive, liveMethods.getItems()); + Set<DexEncodedMethod> reachableNotLive = Sets.difference(allLive, liveMethods.getItems()); Log.debug(getClass(), "%s methods are reachable but not live", reachableNotLive.size()); Log.info(getClass(), "Only reachable: %s", reachableNotLive); - Set liveButNotInstantiated = Sets.difference(liveTypes, instantiatedTypes.getItems()); + Set<DexType> liveButNotInstantiated = + Sets.difference(liveTypes, instantiatedTypes.getItems()); Log.debug(getClass(), "%s classes are live but not instantiated", liveButNotInstantiated.size()); Log.info(getClass(), "Live but not instantiated: %s", liveButNotInstantiated);
diff --git a/src/main/java/com/android/tools/r8/shaking/KeepReason.java b/src/main/java/com/android/tools/r8/shaking/KeepReason.java index 4e2f0b2..a6ce411 100644 --- a/src/main/java/com/android/tools/r8/shaking/KeepReason.java +++ b/src/main/java/com/android/tools/r8/shaking/KeepReason.java
@@ -79,6 +79,7 @@ abstract String getKind(); + @Override public void print(ReasonFormatter formatter) { formatter.addReason("is " + getKind() + " " + method.toSourceString()); formatter.addMethodReferenceReason(method);
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationSourceFile.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationSourceFile.java index 058c14f..f3bb3d9 100644 --- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationSourceFile.java +++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationSourceFile.java
@@ -17,10 +17,12 @@ this.path = path; } + @Override public String get() throws IOException{ return new String(Files.readAllBytes(path), StandardCharsets.UTF_8); } + @Override public Path getBaseDirectory() { Path baseDirectory = path.getParent(); if (baseDirectory == null) { @@ -31,6 +33,7 @@ return baseDirectory; } + @Override public String getName() { return path.toString(); }
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationSourceStrings.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationSourceStrings.java index ac5f0ab..a4c89e0 100644 --- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationSourceStrings.java +++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationSourceStrings.java
@@ -17,14 +17,17 @@ this.config = config; } + @Override public String get() throws IOException{ return Strings.join(config, "\n"); } + @Override public Path getBaseDirectory() { return Paths.get("."); } + @Override public String getName() { return "<no file>"; }
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardTypeMatcher.java b/src/main/java/com/android/tools/r8/shaking/ProguardTypeMatcher.java index 9b06a2f..e50a1e3 100644 --- a/src/main/java/com/android/tools/r8/shaking/ProguardTypeMatcher.java +++ b/src/main/java/com/android/tools/r8/shaking/ProguardTypeMatcher.java
@@ -25,6 +25,7 @@ public abstract boolean matches(DexType type); + @Override public abstract String toString(); public boolean isTripleDotPattern() {
diff --git a/src/main/java/com/android/tools/r8/shaking/TreePruner.java b/src/main/java/com/android/tools/r8/shaking/TreePruner.java index 10716bd..8995259 100644 --- a/src/main/java/com/android/tools/r8/shaking/TreePruner.java +++ b/src/main/java/com/android/tools/r8/shaking/TreePruner.java
@@ -58,7 +58,7 @@ return result; } - private DexApplication.Builder removeUnused(DexApplication application) { + private DexApplication.Builder<?> removeUnused(DexApplication application) { return application.builder() .replaceProgramClasses(getNewProgramClasses(application.classes())); }
diff --git a/src/main/java/com/android/tools/r8/shaking/protolite/ProtoLiteExtension.java b/src/main/java/com/android/tools/r8/shaking/protolite/ProtoLiteExtension.java index b217194..ceff21e 100644 --- a/src/main/java/com/android/tools/r8/shaking/protolite/ProtoLiteExtension.java +++ b/src/main/java/com/android/tools/r8/shaking/protolite/ProtoLiteExtension.java
@@ -82,6 +82,7 @@ return superMethods; } + @Override boolean isSetterThatNeedsProcessing(DexEncodedMethod method) { return method.accessFlags.isPrivate() && method.method.name.beginsWith(setterNamePrefix)
diff --git a/src/main/java/com/android/tools/r8/shaking/protolite/ProtoLitePruner.java b/src/main/java/com/android/tools/r8/shaking/protolite/ProtoLitePruner.java index 9ccdedc..7773e11 100644 --- a/src/main/java/com/android/tools/r8/shaking/protolite/ProtoLitePruner.java +++ b/src/main/java/com/android/tools/r8/shaking/protolite/ProtoLitePruner.java
@@ -111,6 +111,7 @@ && fieldName.startsWith("bitField"); } + @Override boolean isSetterThatNeedsProcessing(DexEncodedMethod method) { // The pruner does not need to process setters, so this method always returns false. return false;
diff --git a/src/main/java/com/android/tools/r8/utils/SimpleHashMap.java b/src/main/java/com/android/tools/r8/utils/SimpleHashMap.java index 05481c5..73f607a 100644 --- a/src/main/java/com/android/tools/r8/utils/SimpleHashMap.java +++ b/src/main/java/com/android/tools/r8/utils/SimpleHashMap.java
@@ -37,6 +37,7 @@ return size; } + @Override public String toString() { return this.getClass().getName() + ", " + size + "(length " + length() + ")"; }
diff --git a/src/main/java/com/android/tools/r8/utils/Timing.java b/src/main/java/com/android/tools/r8/utils/Timing.java index 0fa316e..ff2aa68 100644 --- a/src/main/java/com/android/tools/r8/utils/Timing.java +++ b/src/main/java/com/android/tools/r8/utils/Timing.java
@@ -46,6 +46,7 @@ return stop_time - start_time; } + @Override public String toString() { return title + ": " + (duration() / 1000000) + "ms."; }