Prefix dex instructions with 'Dex' for consistency with cf instructions This also moves com.android.tools.r8.code to com.android.tools.r8.dex.code. Change-Id: I072840c0d09bcae8c233d69f5e073b559f8c769f
diff --git a/src/main/java/com/android/tools/r8/ResourceShrinker.java b/src/main/java/com/android/tools/r8/ResourceShrinker.java index bf40d89..b5ab2b6 100644 --- a/src/main/java/com/android/tools/r8/ResourceShrinker.java +++ b/src/main/java/com/android/tools/r8/ResourceShrinker.java
@@ -3,38 +3,38 @@ // BSD-style license that can be found in the LICENSE file. package com.android.tools.r8; -import com.android.tools.r8.code.Const; -import com.android.tools.r8.code.Const16; -import com.android.tools.r8.code.Const4; -import com.android.tools.r8.code.ConstHigh16; -import com.android.tools.r8.code.ConstString; -import com.android.tools.r8.code.ConstStringJumbo; -import com.android.tools.r8.code.ConstWide16; -import com.android.tools.r8.code.ConstWide32; -import com.android.tools.r8.code.FillArrayData; -import com.android.tools.r8.code.FillArrayDataPayload; -import com.android.tools.r8.code.Format35c; -import com.android.tools.r8.code.Format3rc; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.InvokeDirect; -import com.android.tools.r8.code.InvokeDirectRange; -import com.android.tools.r8.code.InvokeInterface; -import com.android.tools.r8.code.InvokeInterfaceRange; -import com.android.tools.r8.code.InvokeStatic; -import com.android.tools.r8.code.InvokeStaticRange; -import com.android.tools.r8.code.InvokeSuper; -import com.android.tools.r8.code.InvokeSuperRange; -import com.android.tools.r8.code.InvokeVirtual; -import com.android.tools.r8.code.InvokeVirtualRange; -import com.android.tools.r8.code.NewArray; -import com.android.tools.r8.code.Sget; -import com.android.tools.r8.code.SgetBoolean; -import com.android.tools.r8.code.SgetByte; -import com.android.tools.r8.code.SgetChar; -import com.android.tools.r8.code.SgetObject; -import com.android.tools.r8.code.SgetShort; -import com.android.tools.r8.code.SgetWide; import com.android.tools.r8.dex.ApplicationReader; +import com.android.tools.r8.dex.code.DexConst; +import com.android.tools.r8.dex.code.DexConst16; +import com.android.tools.r8.dex.code.DexConst4; +import com.android.tools.r8.dex.code.DexConstHigh16; +import com.android.tools.r8.dex.code.DexConstString; +import com.android.tools.r8.dex.code.DexConstStringJumbo; +import com.android.tools.r8.dex.code.DexConstWide16; +import com.android.tools.r8.dex.code.DexConstWide32; +import com.android.tools.r8.dex.code.DexFillArrayData; +import com.android.tools.r8.dex.code.DexFillArrayDataPayload; +import com.android.tools.r8.dex.code.DexFormat35c; +import com.android.tools.r8.dex.code.DexFormat3rc; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeDirect; +import com.android.tools.r8.dex.code.DexInvokeDirectRange; +import com.android.tools.r8.dex.code.DexInvokeInterface; +import com.android.tools.r8.dex.code.DexInvokeInterfaceRange; +import com.android.tools.r8.dex.code.DexInvokeStatic; +import com.android.tools.r8.dex.code.DexInvokeStaticRange; +import com.android.tools.r8.dex.code.DexInvokeSuper; +import com.android.tools.r8.dex.code.DexInvokeSuperRange; +import com.android.tools.r8.dex.code.DexInvokeVirtual; +import com.android.tools.r8.dex.code.DexInvokeVirtualRange; +import com.android.tools.r8.dex.code.DexNewArray; +import com.android.tools.r8.dex.code.DexSget; +import com.android.tools.r8.dex.code.DexSgetBoolean; +import com.android.tools.r8.dex.code.DexSgetByte; +import com.android.tools.r8.dex.code.DexSgetChar; +import com.android.tools.r8.dex.code.DexSgetObject; +import com.android.tools.r8.dex.code.DexSgetShort; +import com.android.tools.r8.dex.code.DexSgetWide; import com.android.tools.r8.graph.Code; import com.android.tools.r8.graph.DexAnnotation; import com.android.tools.r8.graph.DexAnnotationElement; @@ -219,12 +219,12 @@ final Set<Integer> methodIntArrayPayloadOffsets = Sets.newHashSet(); // First we collect payloads, and then we process them because payload can be before the // fill-array-data instruction referencing it. - final List<FillArrayDataPayload> payloads = Lists.newArrayList(); + final List<DexFillArrayDataPayload> payloads = Lists.newArrayList(); - Instruction[] instructions = implementation.asDexCode().instructions; + DexInstruction[] instructions = implementation.asDexCode().instructions; int current = 0; while (current < instructions.length) { - Instruction instruction = instructions[current]; + DexInstruction instruction = instructions[current]; if (isIntConstInstruction(instruction)) { processIntConstInstruction(instruction); } else if (isStringConstInstruction(instruction)) { @@ -235,15 +235,15 @@ processInvokeInstruction(instruction); } else if (isInvokeRangeInstruction(instruction)) { processInvokeRangeInstruction(instruction); - } else if (instruction instanceof FillArrayData) { + } else if (instruction instanceof DexFillArrayData) { processFillArray(instructions, current, methodIntArrayPayloadOffsets); - } else if (instruction instanceof FillArrayDataPayload) { - payloads.add((FillArrayDataPayload) instruction); + } else if (instruction instanceof DexFillArrayDataPayload) { + payloads.add((DexFillArrayDataPayload) instruction); } current++; } - for (FillArrayDataPayload payload : payloads) { + for (DexFillArrayDataPayload payload : payloads) { if (isIntArrayPayload(payload, methodIntArrayPayloadOffsets)) { processIntArrayPayload(payload); } @@ -272,8 +272,8 @@ }); } - private void processIntArrayPayload(Instruction instruction) { - FillArrayDataPayload payload = (FillArrayDataPayload) instruction; + private void processIntArrayPayload(DexInstruction instruction) { + DexFillArrayDataPayload payload = (DexFillArrayDataPayload) instruction; for (int i = 0; i < payload.data.length / 2; i++) { int intValue = payload.data[2 * i + 1] << 16 | payload.data[2 * i]; @@ -282,20 +282,20 @@ } private boolean isIntArrayPayload( - Instruction instruction, Set<Integer> methodIntArrayPayloadOffsets) { - if (!(instruction instanceof FillArrayDataPayload)) { + DexInstruction instruction, Set<Integer> methodIntArrayPayloadOffsets) { + if (!(instruction instanceof DexFillArrayDataPayload)) { return false; } - FillArrayDataPayload payload = (FillArrayDataPayload) instruction; + DexFillArrayDataPayload payload = (DexFillArrayDataPayload) instruction; return methodIntArrayPayloadOffsets.contains(payload.getOffset()); } private void processFillArray( - Instruction[] instructions, int current, Set<Integer> methodIntArrayPayloadOffsets) { - FillArrayData fillArrayData = (FillArrayData) instructions[current]; - if (current > 0 && instructions[current - 1] instanceof NewArray) { - NewArray newArray = (NewArray) instructions[current - 1]; + DexInstruction[] instructions, int current, Set<Integer> methodIntArrayPayloadOffsets) { + DexFillArrayData fillArrayData = (DexFillArrayData) instructions[current]; + if (current > 0 && instructions[current - 1] instanceof DexNewArray) { + DexNewArray newArray = (DexNewArray) instructions[current - 1]; if (!Objects.equals(newArray.getType().descriptor.toString(), "[I")) { return; } @@ -334,17 +334,17 @@ } } - private boolean isIntConstInstruction(Instruction instruction) { + private boolean isIntConstInstruction(DexInstruction instruction) { int opcode = instruction.getOpcode(); - return opcode == Const4.OPCODE - || opcode == Const16.OPCODE - || opcode == Const.OPCODE - || opcode == ConstWide32.OPCODE - || opcode == ConstHigh16.OPCODE - || opcode == ConstWide16.OPCODE; + return opcode == DexConst4.OPCODE + || opcode == DexConst16.OPCODE + || opcode == DexConst.OPCODE + || opcode == DexConstWide32.OPCODE + || opcode == DexConstHigh16.OPCODE + || opcode == DexConstWide16.OPCODE; } - private void processIntConstInstruction(Instruction instruction) { + private void processIntConstInstruction(DexInstruction instruction) { assert isIntConstInstruction(instruction); int constantValue; @@ -365,20 +365,20 @@ callback.referencedInt(constantValue); } - private boolean isStringConstInstruction(Instruction instruction) { + private boolean isStringConstInstruction(DexInstruction instruction) { int opcode = instruction.getOpcode(); - return opcode == ConstString.OPCODE || opcode == ConstStringJumbo.OPCODE; + return opcode == DexConstString.OPCODE || opcode == DexConstStringJumbo.OPCODE; } - private void processStringConstantInstruction(Instruction instruction) { + private void processStringConstantInstruction(DexInstruction instruction) { assert isStringConstInstruction(instruction); String constantValue; - if (instruction instanceof ConstString) { - ConstString constString = (ConstString) instruction; + if (instruction instanceof DexConstString) { + DexConstString constString = (DexConstString) instruction; constantValue = constString.getString().toString(); - } else if (instruction instanceof ConstStringJumbo) { - ConstStringJumbo constStringJumbo = (ConstStringJumbo) instruction; + } else if (instruction instanceof DexConstStringJumbo) { + DexConstStringJumbo constStringJumbo = (DexConstStringJumbo) instruction; constantValue = constStringJumbo.getString().toString(); } else { throw new AssertionError("Not a string constant instruction."); @@ -387,41 +387,41 @@ callback.referencedString(constantValue); } - private boolean isGetStatic(Instruction instruction) { + private boolean isGetStatic(DexInstruction instruction) { int opcode = instruction.getOpcode(); - return opcode == Sget.OPCODE - || opcode == SgetBoolean.OPCODE - || opcode == SgetByte.OPCODE - || opcode == SgetChar.OPCODE - || opcode == SgetObject.OPCODE - || opcode == SgetShort.OPCODE - || opcode == SgetWide.OPCODE; + return opcode == DexSget.OPCODE + || opcode == DexSgetBoolean.OPCODE + || opcode == DexSgetByte.OPCODE + || opcode == DexSgetChar.OPCODE + || opcode == DexSgetObject.OPCODE + || opcode == DexSgetShort.OPCODE + || opcode == DexSgetWide.OPCODE; } - private void processGetStatic(Instruction instruction) { + private void processGetStatic(DexInstruction instruction) { assert isGetStatic(instruction); DexField field; - if (instruction instanceof Sget) { - Sget sget = (Sget) instruction; + if (instruction instanceof DexSget) { + DexSget sget = (DexSget) instruction; field = sget.getField(); - } else if (instruction instanceof SgetBoolean) { - SgetBoolean sgetBoolean = (SgetBoolean) instruction; + } else if (instruction instanceof DexSgetBoolean) { + DexSgetBoolean sgetBoolean = (DexSgetBoolean) instruction; field = sgetBoolean.getField(); - } else if (instruction instanceof SgetByte) { - SgetByte sgetByte = (SgetByte) instruction; + } else if (instruction instanceof DexSgetByte) { + DexSgetByte sgetByte = (DexSgetByte) instruction; field = sgetByte.getField(); - } else if (instruction instanceof SgetChar) { - SgetChar sgetChar = (SgetChar) instruction; + } else if (instruction instanceof DexSgetChar) { + DexSgetChar sgetChar = (DexSgetChar) instruction; field = sgetChar.getField(); - } else if (instruction instanceof SgetObject) { - SgetObject sgetObject = (SgetObject) instruction; + } else if (instruction instanceof DexSgetObject) { + DexSgetObject sgetObject = (DexSgetObject) instruction; field = sgetObject.getField(); - } else if (instruction instanceof SgetShort) { - SgetShort sgetShort = (SgetShort) instruction; + } else if (instruction instanceof DexSgetShort) { + DexSgetShort sgetShort = (DexSgetShort) instruction; field = sgetShort.getField(); - } else if (instruction instanceof SgetWide) { - SgetWide sgetWide = (SgetWide) instruction; + } else if (instruction instanceof DexSgetWide) { + DexSgetWide sgetWide = (DexSgetWide) instruction; field = sgetWide.getField(); } else { throw new AssertionError("Not a get static instruction"); @@ -430,19 +430,19 @@ callback.referencedStaticField(field.holder.getInternalName(), field.name.toString()); } - private boolean isInvokeInstruction(Instruction instruction) { + private boolean isInvokeInstruction(DexInstruction instruction) { int opcode = instruction.getOpcode(); - return opcode == InvokeVirtual.OPCODE - || opcode == InvokeSuper.OPCODE - || opcode == InvokeDirect.OPCODE - || opcode == InvokeStatic.OPCODE - || opcode == InvokeInterface.OPCODE; + return opcode == DexInvokeVirtual.OPCODE + || opcode == DexInvokeSuper.OPCODE + || opcode == DexInvokeDirect.OPCODE + || opcode == DexInvokeStatic.OPCODE + || opcode == DexInvokeInterface.OPCODE; } - private void processInvokeInstruction(Instruction instruction) { + private void processInvokeInstruction(DexInstruction instruction) { assert isInvokeInstruction(instruction); - Format35c ins35c = (Format35c) instruction; + DexFormat35c ins35c = (DexFormat35c) instruction; DexMethod method = (DexMethod) ins35c.BBBB; callback.referencedMethod( @@ -451,19 +451,19 @@ method.proto.toDescriptorString()); } - private boolean isInvokeRangeInstruction(Instruction instruction) { + private boolean isInvokeRangeInstruction(DexInstruction instruction) { int opcode = instruction.getOpcode(); - return opcode == InvokeVirtualRange.OPCODE - || opcode == InvokeSuperRange.OPCODE - || opcode == InvokeDirectRange.OPCODE - || opcode == InvokeStaticRange.OPCODE - || opcode == InvokeInterfaceRange.OPCODE; + return opcode == DexInvokeVirtualRange.OPCODE + || opcode == DexInvokeSuperRange.OPCODE + || opcode == DexInvokeDirectRange.OPCODE + || opcode == DexInvokeStaticRange.OPCODE + || opcode == DexInvokeInterfaceRange.OPCODE; } - private void processInvokeRangeInstruction(Instruction instruction) { + private void processInvokeRangeInstruction(DexInstruction instruction) { assert isInvokeRangeInstruction(instruction); - Format3rc ins3rc = (Format3rc) instruction; + DexFormat3rc ins3rc = (DexFormat3rc) instruction; DexMethod method = (DexMethod) ins3rc.BBBB; callback.referencedMethod(
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfInstanceFieldRead.java b/src/main/java/com/android/tools/r8/cf/code/CfInstanceFieldRead.java index 95dac9b..1eb4b5d 100644 --- a/src/main/java/com/android/tools/r8/cf/code/CfInstanceFieldRead.java +++ b/src/main/java/com/android/tools/r8/cf/code/CfInstanceFieldRead.java
@@ -4,7 +4,7 @@ package com.android.tools.r8.cf.code; -import com.android.tools.r8.code.CfOrDexInstanceFieldRead; +import com.android.tools.r8.dex.code.CfOrDexInstanceFieldRead; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.CfCode; import com.android.tools.r8.graph.DexClassAndMethod;
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfInstruction.java b/src/main/java/com/android/tools/r8/cf/code/CfInstruction.java index cd2a0a5..dc1f4de 100644 --- a/src/main/java/com/android/tools/r8/cf/code/CfInstruction.java +++ b/src/main/java/com/android/tools/r8/cf/code/CfInstruction.java
@@ -4,8 +4,8 @@ package com.android.tools.r8.cf.code; import com.android.tools.r8.cf.CfPrinter; -import com.android.tools.r8.code.CfOrDexInstruction; -import com.android.tools.r8.code.Instruction; +import com.android.tools.r8.dex.code.CfOrDexInstruction; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.CfCode; @@ -147,7 +147,7 @@ } @Override - public Instruction asDexInstruction() { + public DexInstruction asDexInstruction() { return null; }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfStaticFieldRead.java b/src/main/java/com/android/tools/r8/cf/code/CfStaticFieldRead.java index cc9a7f9..e0d1ab1 100644 --- a/src/main/java/com/android/tools/r8/cf/code/CfStaticFieldRead.java +++ b/src/main/java/com/android/tools/r8/cf/code/CfStaticFieldRead.java
@@ -4,7 +4,7 @@ package com.android.tools.r8.cf.code; -import com.android.tools.r8.code.CfOrDexStaticFieldRead; +import com.android.tools.r8.dex.code.CfOrDexStaticFieldRead; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.CfCode; import com.android.tools.r8.graph.DexClassAndMethod;
diff --git a/src/main/java/com/android/tools/r8/code/BaseInstructionFactory.java b/src/main/java/com/android/tools/r8/code/BaseInstructionFactory.java deleted file mode 100644 index 4e15eb9..0000000 --- a/src/main/java/com/android/tools/r8/code/BaseInstructionFactory.java +++ /dev/null
@@ -1,465 +0,0 @@ -// Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; - -import com.android.tools.r8.graph.OffsetToObjectMapping; - -abstract class BaseInstructionFactory { - - static Instruction create(int high, int opcode, BytecodeStream stream, - OffsetToObjectMapping mapping) { - switch (opcode) { - case 0x0: - return Nop.create(high, stream); - case Move.OPCODE: - return new Move(high, stream); - case MoveFrom16.OPCODE: - return new MoveFrom16(high, stream); - case Move16.OPCODE: - return new Move16(high, stream); - case MoveWide.OPCODE: - return new MoveWide(high, stream); - case MoveWideFrom16.OPCODE: - return new MoveWideFrom16(high, stream); - case MoveWide16.OPCODE: - return new MoveWide16(high, stream); - case MoveObject.OPCODE: - return new MoveObject(high, stream); - case MoveObjectFrom16.OPCODE: - return new MoveObjectFrom16(high, stream); - case MoveObject16.OPCODE: - return new MoveObject16(high, stream); - case MoveResult.OPCODE: - return new MoveResult(high, stream); - case MoveResultWide.OPCODE: - return new MoveResultWide(high, stream); - case MoveResultObject.OPCODE: - return new MoveResultObject(high, stream); - case MoveException.OPCODE: - return new MoveException(high, stream); - case ReturnVoid.OPCODE: - return new ReturnVoid(high, stream); - case Return.OPCODE: - return new Return(high, stream); - case ReturnWide.OPCODE: - return new ReturnWide(high, stream); - case ReturnObject.OPCODE: - return new ReturnObject(high, stream); - case Const4.OPCODE: - return new Const4(high, stream); - case Const16.OPCODE: - return new Const16(high, stream); - case Const.OPCODE: - return new Const(high, stream); - case ConstHigh16.OPCODE: - return new ConstHigh16(high, stream); - case ConstWide16.OPCODE: - return new ConstWide16(high, stream); - case ConstWide32.OPCODE: - return new ConstWide32(high, stream); - case ConstWide.OPCODE: - return new ConstWide(high, stream); - case ConstWideHigh16.OPCODE: - return new ConstWideHigh16(high, stream); - case ConstString.OPCODE: - return new ConstString(high, stream, mapping); - case ConstStringJumbo.OPCODE: - return new ConstStringJumbo(high, stream, mapping); - case ConstClass.OPCODE: - return new ConstClass(high, stream, mapping); - case MonitorEnter.OPCODE: - return new MonitorEnter(high, stream); - case MonitorExit.OPCODE: - return new MonitorExit(high, stream); - case CheckCast.OPCODE: - return new CheckCast(high, stream, mapping); - case InstanceOf.OPCODE: - return new InstanceOf(high, stream, mapping); - case ArrayLength.OPCODE: - return new ArrayLength(high, stream); - case NewInstance.OPCODE: - return new NewInstance(high, stream, mapping); - case NewArray.OPCODE: - return new NewArray(high, stream, mapping); - case FilledNewArray.OPCODE: - return new FilledNewArray(high, stream, mapping); - case FilledNewArrayRange.OPCODE: - return new FilledNewArrayRange(high, stream, mapping); - case FillArrayData.OPCODE: - return new FillArrayData(high, stream); - case Throw.OPCODE: - return new Throw(high, stream); - case Goto.OPCODE: - return new Goto(high, stream); - case Goto16.OPCODE: - return new Goto16(high, stream); - case Goto32.OPCODE: - return new Goto32(high, stream); - case PackedSwitch.OPCODE: - return new PackedSwitch(high, stream); - case SparseSwitch.OPCODE: - return new SparseSwitch(high, stream); - case CmplFloat.OPCODE: - return new CmplFloat(high, stream); - case CmpgFloat.OPCODE: - return new CmpgFloat(high, stream); - case CmplDouble.OPCODE: - return new CmplDouble(high, stream); - case CmpgDouble.OPCODE: - return new CmpgDouble(high, stream); - case CmpLong.OPCODE: - return new CmpLong(high, stream); - case IfEq.OPCODE: - return new IfEq(high, stream); - case IfNe.OPCODE: - return new IfNe(high, stream); - case IfLt.OPCODE: - return new IfLt(high, stream); - case IfGe.OPCODE: - return new IfGe(high, stream); - case IfGt.OPCODE: - return new IfGt(high, stream); - case IfLe.OPCODE: - return new IfLe(high, stream); - case IfEqz.OPCODE: - return new IfEqz(high, stream); - case IfNez.OPCODE: - return new IfNez(high, stream); - case IfLtz.OPCODE: - return new IfLtz(high, stream); - case IfGez.OPCODE: - return new IfGez(high, stream); - case IfGtz.OPCODE: - return new IfGtz(high, stream); - case IfLez.OPCODE: - return new IfLez(high, stream); - case Aget.OPCODE: - return new Aget(high, stream); - case AgetWide.OPCODE: - return new AgetWide(high, stream); - case AgetObject.OPCODE: - return new AgetObject(high, stream); - case AgetBoolean.OPCODE: - return new AgetBoolean(high, stream); - case AgetByte.OPCODE: - return new AgetByte(high, stream); - case AgetChar.OPCODE: - return new AgetChar(high, stream); - case AgetShort.OPCODE: - return new AgetShort(high, stream); - case Aput.OPCODE: - return new Aput(high, stream); - case AputWide.OPCODE: - return new AputWide(high, stream); - case AputObject.OPCODE: - return new AputObject(high, stream); - case AputBoolean.OPCODE: - return new AputBoolean(high, stream); - case AputByte.OPCODE: - return new AputByte(high, stream); - case AputChar.OPCODE: - return new AputChar(high, stream); - case AputShort.OPCODE: - return new AputShort(high, stream); - case Iget.OPCODE: - return new Iget(high, stream, mapping); - case IgetWide.OPCODE: - return new IgetWide(high, stream, mapping); - case IgetObject.OPCODE: - return new IgetObject(high, stream, mapping); - case IgetBoolean.OPCODE: - return new IgetBoolean(high, stream, mapping); - case IgetByte.OPCODE: - return new IgetByte(high, stream, mapping); - case IgetChar.OPCODE: - return new IgetChar(high, stream, mapping); - case IgetShort.OPCODE: - return new IgetShort(high, stream, mapping); - case Iput.OPCODE: - return new Iput(high, stream, mapping); - case IputWide.OPCODE: - return new IputWide(high, stream, mapping); - case IputObject.OPCODE: - return new IputObject(high, stream, mapping); - case IputBoolean.OPCODE: - return new IputBoolean(high, stream, mapping); - case IputByte.OPCODE: - return new IputByte(high, stream, mapping); - case IputChar.OPCODE: - return new IputChar(high, stream, mapping); - case IputShort.OPCODE: - return new IputShort(high, stream, mapping); - case Sget.OPCODE: - return new Sget(high, stream, mapping); - case SgetWide.OPCODE: - return new SgetWide(high, stream, mapping); - case SgetObject.OPCODE: - return new SgetObject(high, stream, mapping); - case SgetBoolean.OPCODE: - return new SgetBoolean(high, stream, mapping); - case SgetByte.OPCODE: - return new SgetByte(high, stream, mapping); - case SgetChar.OPCODE: - return new SgetChar(high, stream, mapping); - case SgetShort.OPCODE: - return new SgetShort(high, stream, mapping); - case Sput.OPCODE: - return new Sput(high, stream, mapping); - case SputWide.OPCODE: - return new SputWide(high, stream, mapping); - case SputObject.OPCODE: - return new SputObject(high, stream, mapping); - case SputBoolean.OPCODE: - return new SputBoolean(high, stream, mapping); - case SputByte.OPCODE: - return new SputByte(high, stream, mapping); - case SputChar.OPCODE: - return new SputChar(high, stream, mapping); - case SputShort.OPCODE: - return new SputShort(high, stream, mapping); - case InvokeVirtual.OPCODE: - return new InvokeVirtual(high, stream, mapping); - case InvokeSuper.OPCODE: - return new InvokeSuper(high, stream, mapping); - case InvokeDirect.OPCODE: - return new InvokeDirect(high, stream, mapping); - case InvokeStatic.OPCODE: - return new InvokeStatic(high, stream, mapping); - case InvokeInterface.OPCODE: - return new InvokeInterface(high, stream, mapping); - case InvokeVirtualRange.OPCODE: - return new InvokeVirtualRange(high, stream, mapping); - case InvokeSuperRange.OPCODE: - return new InvokeSuperRange(high, stream, mapping); - case InvokeDirectRange.OPCODE: - return new InvokeDirectRange(high, stream, mapping); - case InvokeStaticRange.OPCODE: - return new InvokeStaticRange(high, stream, mapping); - case InvokeInterfaceRange.OPCODE: - return new InvokeInterfaceRange(high, stream, mapping); - case NegInt.OPCODE: - return new NegInt(high, stream); - case NotInt.OPCODE: - return new NotInt(high, stream); - case NegLong.OPCODE: - return new NegLong(high, stream); - case NotLong.OPCODE: - return new NotLong(high, stream); - case NegFloat.OPCODE: - return new NegFloat(high, stream); - case NegDouble.OPCODE: - return new NegDouble(high, stream); - case IntToLong.OPCODE: - return new IntToLong(high, stream); - case IntToFloat.OPCODE: - return new IntToFloat(high, stream); - case IntToDouble.OPCODE: - return new IntToDouble(high, stream); - case LongToInt.OPCODE: - return new LongToInt(high, stream); - case LongToFloat.OPCODE: - return new LongToFloat(high, stream); - case LongToDouble.OPCODE: - return new LongToDouble(high, stream); - case FloatToInt.OPCODE: - return new FloatToInt(high, stream); - case FloatToLong.OPCODE: - return new FloatToLong(high, stream); - case FloatToDouble.OPCODE: - return new FloatToDouble(high, stream); - case DoubleToInt.OPCODE: - return new DoubleToInt(high, stream); - case DoubleToLong.OPCODE: - return new DoubleToLong(high, stream); - case DoubleToFloat.OPCODE: - return new DoubleToFloat(high, stream); - case IntToByte.OPCODE: - return new IntToByte(high, stream); - case IntToChar.OPCODE: - return new IntToChar(high, stream); - case IntToShort.OPCODE: - return new IntToShort(high, stream); - case AddInt.OPCODE: - return new AddInt(high, stream); - case SubInt.OPCODE: - return new SubInt(high, stream); - case MulInt.OPCODE: - return new MulInt(high, stream); - case DivInt.OPCODE: - return new DivInt(high, stream); - case RemInt.OPCODE: - return new RemInt(high, stream); - case AndInt.OPCODE: - return new AndInt(high, stream); - case OrInt.OPCODE: - return new OrInt(high, stream); - case XorInt.OPCODE: - return new XorInt(high, stream); - case ShlInt.OPCODE: - return new ShlInt(high, stream); - case ShrInt.OPCODE: - return new ShrInt(high, stream); - case UshrInt.OPCODE: - return new UshrInt(high, stream); - case AddLong.OPCODE: - return new AddLong(high, stream); - case SubLong.OPCODE: - return new SubLong(high, stream); - case MulLong.OPCODE: - return new MulLong(high, stream); - case DivLong.OPCODE: - return new DivLong(high, stream); - case RemLong.OPCODE: - return new RemLong(high, stream); - case AndLong.OPCODE: - return new AndLong(high, stream); - case OrLong.OPCODE: - return new OrLong(high, stream); - case XorLong.OPCODE: - return new XorLong(high, stream); - case ShlLong.OPCODE: - return new ShlLong(high, stream); - case ShrLong.OPCODE: - return new ShrLong(high, stream); - case UshrLong.OPCODE: - return new UshrLong(high, stream); - case AddFloat.OPCODE: - return new AddFloat(high, stream); - case SubFloat.OPCODE: - return new SubFloat(high, stream); - case MulFloat.OPCODE: - return new MulFloat(high, stream); - case DivFloat.OPCODE: - return new DivFloat(high, stream); - case RemFloat.OPCODE: - return new RemFloat(high, stream); - case AddDouble.OPCODE: - return new AddDouble(high, stream); - case SubDouble.OPCODE: - return new SubDouble(high, stream); - case MulDouble.OPCODE: - return new MulDouble(high, stream); - case DivDouble.OPCODE: - return new DivDouble(high, stream); - case RemDouble.OPCODE: - return new RemDouble(high, stream); - case AddInt2Addr.OPCODE: - return new AddInt2Addr(high, stream); - case SubInt2Addr.OPCODE: - return new SubInt2Addr(high, stream); - case MulInt2Addr.OPCODE: - return new MulInt2Addr(high, stream); - case DivInt2Addr.OPCODE: - return new DivInt2Addr(high, stream); - case RemInt2Addr.OPCODE: - return new RemInt2Addr(high, stream); - case AndInt2Addr.OPCODE: - return new AndInt2Addr(high, stream); - case OrInt2Addr.OPCODE: - return new OrInt2Addr(high, stream); - case XorInt2Addr.OPCODE: - return new XorInt2Addr(high, stream); - case ShlInt2Addr.OPCODE: - return new ShlInt2Addr(high, stream); - case ShrInt2Addr.OPCODE: - return new ShrInt2Addr(high, stream); - case UshrInt2Addr.OPCODE: - return new UshrInt2Addr(high, stream); - case AddLong2Addr.OPCODE: - return new AddLong2Addr(high, stream); - case SubLong2Addr.OPCODE: - return new SubLong2Addr(high, stream); - case MulLong2Addr.OPCODE: - return new MulLong2Addr(high, stream); - case DivLong2Addr.OPCODE: - return new DivLong2Addr(high, stream); - case RemLong2Addr.OPCODE: - return new RemLong2Addr(high, stream); - case AndLong2Addr.OPCODE: - return new AndLong2Addr(high, stream); - case OrLong2Addr.OPCODE: - return new OrLong2Addr(high, stream); - case XorLong2Addr.OPCODE: - return new XorLong2Addr(high, stream); - case ShlLong2Addr.OPCODE: - return new ShlLong2Addr(high, stream); - case ShrLong2Addr.OPCODE: - return new ShrLong2Addr(high, stream); - case UshrLong2Addr.OPCODE: - return new UshrLong2Addr(high, stream); - case AddFloat2Addr.OPCODE: - return new AddFloat2Addr(high, stream); - case SubFloat2Addr.OPCODE: - return new SubFloat2Addr(high, stream); - case MulFloat2Addr.OPCODE: - return new MulFloat2Addr(high, stream); - case DivFloat2Addr.OPCODE: - return new DivFloat2Addr(high, stream); - case RemFloat2Addr.OPCODE: - return new RemFloat2Addr(high, stream); - case AddDouble2Addr.OPCODE: - return new AddDouble2Addr(high, stream); - case SubDouble2Addr.OPCODE: - return new SubDouble2Addr(high, stream); - case MulDouble2Addr.OPCODE: - return new MulDouble2Addr(high, stream); - case DivDouble2Addr.OPCODE: - return new DivDouble2Addr(high, stream); - case RemDouble2Addr.OPCODE: - return new RemDouble2Addr(high, stream); - case AddIntLit16.OPCODE: - return new AddIntLit16(high, stream); - case RsubInt.OPCODE: - return new RsubInt(high, stream); - case MulIntLit16.OPCODE: - return new MulIntLit16(high, stream); - case DivIntLit16.OPCODE: - return new DivIntLit16(high, stream); - case RemIntLit16.OPCODE: - return new RemIntLit16(high, stream); - case AndIntLit16.OPCODE: - return new AndIntLit16(high, stream); - case OrIntLit16.OPCODE: - return new OrIntLit16(high, stream); - case XorIntLit16.OPCODE: - return new XorIntLit16(high, stream); - case AddIntLit8.OPCODE: - return new AddIntLit8(high, stream); - case RsubIntLit8.OPCODE: - return new RsubIntLit8(high, stream); - case MulIntLit8.OPCODE: - return new MulIntLit8(high, stream); - case DivIntLit8.OPCODE: - return new DivIntLit8(high, stream); - case RemIntLit8.OPCODE: - return new RemIntLit8(high, stream); - case AndIntLit8.OPCODE: - return new AndIntLit8(high, stream); - case OrIntLit8.OPCODE: - return new OrIntLit8(high, stream); - case XorIntLit8.OPCODE: - return new XorIntLit8(high, stream); - case ShlIntLit8.OPCODE: - return new ShlIntLit8(high, stream); - case ShrIntLit8.OPCODE: - return new ShrIntLit8(high, stream); - case UshrIntLit8.OPCODE: - return new UshrIntLit8(high, stream); - case InvokePolymorphic.OPCODE: - return new InvokePolymorphic(high, stream, mapping); - case InvokePolymorphicRange.OPCODE: - return new InvokePolymorphicRange(high, stream, mapping); - case InvokeCustom.OPCODE: - return new InvokeCustom(high, stream, mapping); - case InvokeCustomRange.OPCODE: - return new InvokeCustomRange(high, stream, mapping); - case ConstMethodHandle.OPCODE: - return new ConstMethodHandle(high, stream, mapping); - case ConstMethodType.OPCODE: - return new ConstMethodType(high, stream, mapping); - default: - throw new IllegalArgumentException("Illegal Opcode: 0x" + Integer.toString(opcode, 16)); - } - } -}
diff --git a/src/main/java/com/android/tools/r8/debuginfo/DebugRepresentation.java b/src/main/java/com/android/tools/r8/debuginfo/DebugRepresentation.java index 173ddd1..634f40b 100644 --- a/src/main/java/com/android/tools/r8/debuginfo/DebugRepresentation.java +++ b/src/main/java/com/android/tools/r8/debuginfo/DebugRepresentation.java
@@ -3,8 +3,8 @@ // BSD-style license that can be found in the LICENSE file. package com.android.tools.r8.debuginfo; -import com.android.tools.r8.code.Instruction; import com.android.tools.r8.dex.VirtualFile; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexDebugInfo; import com.android.tools.r8.graph.DexDebugInfo.PcBasedDebugInfo; @@ -94,7 +94,7 @@ } DexCode code = definition.getCode().asDexCode(); DexDebugInfo debugInfo = code.getDebugInfo(); - Instruction lastInstruction = getLastExecutableInstruction(code); + DexInstruction lastInstruction = getLastExecutableInstruction(code); if (lastInstruction == null) { continue; } @@ -120,7 +120,7 @@ if (conversionInfo.cutoff < 0) { return false; } - Instruction lastInstruction = getLastExecutableInstruction(code); + DexInstruction lastInstruction = getLastExecutableInstruction(code); if (lastInstruction == null) { return false; } @@ -264,9 +264,9 @@ } } - private static Instruction getLastExecutableInstruction(DexCode code) { - Instruction lastInstruction = null; - for (Instruction instruction : code.instructions) { + private static DexInstruction getLastExecutableInstruction(DexCode code) { + DexInstruction lastInstruction = null; + for (DexInstruction instruction : code.instructions) { if (!instruction.isPayload()) { lastInstruction = instruction; }
diff --git a/src/main/java/com/android/tools/r8/dex/DexParser.java b/src/main/java/com/android/tools/r8/dex/DexParser.java index 7a3ccf5..8705bb4 100644 --- a/src/main/java/com/android/tools/r8/dex/DexParser.java +++ b/src/main/java/com/android/tools/r8/dex/DexParser.java
@@ -9,8 +9,8 @@ import static com.android.tools.r8.utils.EncodedValueUtils.parseUnsigned; import com.android.tools.r8.ProgramResource.Kind; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.InstructionFactory; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInstructionFactory; import com.android.tools.r8.errors.CompilationError; import com.android.tools.r8.graph.ApplicationReaderMap; import com.android.tools.r8.graph.ClassAccessFlags; @@ -167,7 +167,7 @@ dexReader.position(offset); dexReader.align(4); DexCode code = parseCodeItem(); - codes.put(offset, code); // Update the file local offset to code mapping. + codes.put(offset, code); // Update the file local offset to code mapping. dexReader.position(currentPos); } } @@ -297,7 +297,7 @@ DexMethodHandle value = indexedItems.getMethodHandle((int) parseUnsigned(dexReader, size)); return new DexValue.DexValueMethodHandle(value); - } + } default: throw new IndexOutOfBoundsException(); } @@ -306,9 +306,10 @@ private void checkName(DexString name) { if (!options.itemFactory.getSkipNameValidationForTesting() && !name.isValidSimpleName(options.getMinApiLevel())) { - throw new CompilationError("Space characters in SimpleName '" - + name.toASCIIString() - + "' are not allowed prior to DEX version 040"); + throw new CompilationError( + "Space characters in SimpleName '" + + name.toASCIIString() + + "' are not allowed prior to DEX version 040"); } } @@ -333,7 +334,6 @@ return values; } - private DexEncodedArray parseEncodedArray() { return new DexEncodedArray(parseEncodedArrayValues()); } @@ -415,10 +415,11 @@ DexParameterAnnotation[] result = new DexParameterAnnotation[size]; for (int i = 0; i < size; i++) { DexMethod method = indexedItems.getMethod(methodIndices[i]); - result[i] = new DexParameterAnnotation( - method, - annotationSetRefListAt(annotationOffsets[i]) - .withParameterCount(method.proto.parameters.size())); + result[i] = + new DexParameterAnnotation( + method, + annotationSetRefListAt(annotationOffsets[i]) + .withParameterCount(method.proto.parameters.size())); } dexReader.position(saved); return result; @@ -433,11 +434,11 @@ private <S> Object cacheAt(int offset, Supplier<S> function) { if (offset == 0) { - return null; // return null for offset zero. + return null; // return null for offset zero. } Object result = offsetMap.get(offset); if (result != null) { - return result; // return the cached result. + return result; // return the cached result. } // Cache is empty so parse the structure. dexReader.position(offset); @@ -484,8 +485,7 @@ } DexType dupType = DexAnnotationSet.findDuplicateEntryType(result); if (dupType != null) { - throw new CompilationError( - "Multiple annotations of type `" + dupType.toSourceString() + "`"); + throw new CompilationError("Multiple annotations of type `" + dupType.toSourceString() + "`"); } return DexAnnotationSet.create(result); } @@ -500,8 +500,8 @@ } private AnnotationsDirectory annotationsDirectoryAt(int offset) { - return (AnnotationsDirectory) cacheAt(offset, this::parseAnnotationsDirectory, - AnnotationsDirectory::empty); + return (AnnotationsDirectory) + cacheAt(offset, this::parseAnnotationsDirectory, AnnotationsDirectory::empty); } private AnnotationsDirectory parseAnnotationsDirectory() { @@ -513,10 +513,7 @@ final DexMethodAnnotation[] methods = parseMethodAnnotations(methodsSize); final DexParameterAnnotation[] parameters = parseParameterAnnotations(parametersSize); return new AnnotationsDirectory( - annotationSetAt(classAnnotationsOff), - fields, - methods, - parameters); + annotationSetAt(classAnnotationsOff), fields, methods, parameters); } private DexDebugInfo debugInfoAt(int offset) { @@ -548,72 +545,82 @@ events.add(dexItemFactory.createAdvanceLine(dexReader.getSleb128())); isPcBasedDebugInfo = false; break; - case Constants.DBG_START_LOCAL: { - int registerNum = dexReader.getUleb128(); - int nameIdx = dexReader.getUleb128p1(); - int typeIdx = dexReader.getUleb128p1(); - events.add(new DexDebugEvent.StartLocal( - registerNum, - nameIdx == NO_INDEX ? null : indexedItems.getString(nameIdx), - typeIdx == NO_INDEX ? null : indexedItems.getType(typeIdx), - null)); - isPcBasedDebugInfo = false; - break; - } - case Constants.DBG_START_LOCAL_EXTENDED: { - int registerNum = dexReader.getUleb128(); - int nameIdx = dexReader.getUleb128p1(); - int typeIdx = dexReader.getUleb128p1(); - int sigIdx = dexReader.getUleb128p1(); - events.add(new DexDebugEvent.StartLocal( - registerNum, - nameIdx == NO_INDEX ? null : indexedItems.getString(nameIdx), - typeIdx == NO_INDEX ? null : indexedItems.getType(typeIdx), - sigIdx == NO_INDEX ? null : indexedItems.getString(sigIdx))); - isPcBasedDebugInfo = false; - break; - } - case Constants.DBG_END_LOCAL: { - events.add(dexItemFactory.createEndLocal(dexReader.getUleb128())); - isPcBasedDebugInfo = false; - break; - } - case Constants.DBG_RESTART_LOCAL: { - events.add(dexItemFactory.createRestartLocal(dexReader.getUleb128())); - isPcBasedDebugInfo = false; - break; - } - case Constants.DBG_SET_PROLOGUE_END: { - events.add(dexItemFactory.createSetPrologueEnd()); - isPcBasedDebugInfo = false; - break; - } - case Constants.DBG_SET_EPILOGUE_BEGIN: { - events.add(dexItemFactory.createSetEpilogueBegin()); - isPcBasedDebugInfo = false; - break; - } - case Constants.DBG_SET_FILE: { - int nameIdx = dexReader.getUleb128p1(); - DexString sourceFile = nameIdx == NO_INDEX ? null : indexedItems.getString(nameIdx); - if (options.readDebugSetFileEvent) { - events.add(dexItemFactory.createSetFile(sourceFile)); + case Constants.DBG_START_LOCAL: + { + int registerNum = dexReader.getUleb128(); + int nameIdx = dexReader.getUleb128p1(); + int typeIdx = dexReader.getUleb128p1(); + events.add( + new DexDebugEvent.StartLocal( + registerNum, + nameIdx == NO_INDEX ? null : indexedItems.getString(nameIdx), + typeIdx == NO_INDEX ? null : indexedItems.getType(typeIdx), + null)); + isPcBasedDebugInfo = false; + break; } - isPcBasedDebugInfo = false; - break; - } - default: { - assert head >= 0x0a && head <= 0xff; - Default event = dexItemFactory.createDefault(head); - events.add(event); - if (isPcBasedDebugInfo) { - if (events.size() == 1) { - isPcBasedDebugInfo = event.equals(dexItemFactory.zeroChangeDefaultEvent); - } else { - isPcBasedDebugInfo = event.equals(dexItemFactory.oneChangeDefaultEvent); + case Constants.DBG_START_LOCAL_EXTENDED: + { + int registerNum = dexReader.getUleb128(); + int nameIdx = dexReader.getUleb128p1(); + int typeIdx = dexReader.getUleb128p1(); + int sigIdx = dexReader.getUleb128p1(); + events.add( + new DexDebugEvent.StartLocal( + registerNum, + nameIdx == NO_INDEX ? null : indexedItems.getString(nameIdx), + typeIdx == NO_INDEX ? null : indexedItems.getType(typeIdx), + sigIdx == NO_INDEX ? null : indexedItems.getString(sigIdx))); + isPcBasedDebugInfo = false; + break; + } + case Constants.DBG_END_LOCAL: + { + events.add(dexItemFactory.createEndLocal(dexReader.getUleb128())); + isPcBasedDebugInfo = false; + break; + } + case Constants.DBG_RESTART_LOCAL: + { + events.add(dexItemFactory.createRestartLocal(dexReader.getUleb128())); + isPcBasedDebugInfo = false; + break; + } + case Constants.DBG_SET_PROLOGUE_END: + { + events.add(dexItemFactory.createSetPrologueEnd()); + isPcBasedDebugInfo = false; + break; + } + case Constants.DBG_SET_EPILOGUE_BEGIN: + { + events.add(dexItemFactory.createSetEpilogueBegin()); + isPcBasedDebugInfo = false; + break; + } + case Constants.DBG_SET_FILE: + { + int nameIdx = dexReader.getUleb128p1(); + DexString sourceFile = nameIdx == NO_INDEX ? null : indexedItems.getString(nameIdx); + if (options.readDebugSetFileEvent) { + events.add(dexItemFactory.createSetFile(sourceFile)); + } + isPcBasedDebugInfo = false; + break; + } + default: + { + assert head >= 0x0a && head <= 0xff; + Default event = dexItemFactory.createDefault(head); + events.add(event); + if (isPcBasedDebugInfo) { + if (events.size() == 1) { + isPcBasedDebugInfo = event.equals(dexItemFactory.zeroChangeDefaultEvent); + } else { + isPcBasedDebugInfo = event.equals(dexItemFactory.oneChangeDefaultEvent); + } } } - } } } return isPcBasedDebugInfo @@ -650,8 +657,8 @@ } } - private DexEncodedField[] readFields(int size, DexFieldAnnotation[] annotations, - DexValue[] staticValues) { + private DexEncodedField[] readFields( + int size, DexFieldAnnotation[] annotations, DexValue[] staticValues) { DexEncodedField[] fields = new DexEncodedField[size]; int fieldIndex = 0; MemberAnnotationIterator<DexField, DexAnnotationSet> annotationIterator = @@ -784,8 +791,9 @@ // Check if constraints from // https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.1 are met. if (!flags.areValid(Constants.CORRESPONDING_CLASS_FILE_VERSION, false)) { - throw new CompilationError("Class " + type.toSourceString() - + " has illegal access flags. Found: " + flags, origin); + throw new CompilationError( + "Class " + type.toSourceString() + " has illegal access flags. Found: " + flags, + origin); } DexEncodedField[] staticFields = DexEncodedField.EMPTY_ARRAY; DexEncodedField[] instanceFields = DexEncodedField.EMPTY_ARRAY; @@ -811,8 +819,11 @@ int directMethodsSize = dexReader.getUleb128(); int virtualMethodsSize = dexReader.getUleb128(); - staticFields = readFields(staticFieldsSize, annotationsDirectory.fields, - staticValues != null ? staticValues.values : null); + staticFields = + readFields( + staticFieldsSize, + annotationsDirectory.fields, + staticValues != null ? staticValues.values : null); instanceFields = readFields(instanceFieldsSize, annotationsDirectory.fields, null); directMethods = readMethods( @@ -857,7 +868,7 @@ dexItemFactory.getSkipNameValidationForTesting(), checksumSupplier, null); - classCollection.accept(clazz); // Update the application object. + classCollection.accept(clazz); // Update the application object. } } @@ -913,8 +924,13 @@ for (int i = 0; i < result.length; i++) { DexSection dexSection = result[i]; int nextOffset = i < result.length - 1 ? result[i + 1].offset : dexSection.offset; - Log.debug(this.getClass(), "Read section 0x%04x @ 0x%08x #items %08d size 0x%08x.", - dexSection.type, dexSection.offset, dexSection.length, nextOffset - dexSection.offset); + Log.debug( + this.getClass(), + "Read section 0x%04x @ 0x%08x #items %08d size 0x%08x.", + dexSection.type, + dexSection.offset, + dexSection.length, + nextOffset - dexSection.offset); } } for (int i = 0; i < mapSize - 1; i++) { @@ -940,7 +956,7 @@ code[i] = dexReader.getShort(); } if (insnsSize % 2 != 0) { - dexReader.getUshort(); // Skip padding ushort + dexReader.getUshort(); // Skip padding ushort } if (triesSize > 0) { Int2IntArrayMap handlerMap = new Int2IntArrayMap(); @@ -987,20 +1003,20 @@ int saved = dexReader.position(); DexDebugInfo debugInfo = debugInfoAt(debugInfoOff); dexReader.position(saved); - InstructionFactory factory = new InstructionFactory(); - Instruction[] instructions = + DexInstructionFactory factory = new DexInstructionFactory(); + DexInstruction[] instructions = factory.readSequenceFrom(ShortBuffer.wrap(code), 0, code.length, indexedItems); return new DexCode(registerSize, insSize, outsSize, instructions, tries, handlers, debugInfo); } void populateIndexTables() { // Populate structures that are already sorted upon read. - populateStrings(); // Depends on nothing. + populateStrings(); // Depends on nothing. populateChecksums(); // Depends on Strings. - populateTypes(); // Depends on Strings. - populateFields(); // Depends on Types, and Strings. - populateProtos(); // Depends on Types and Strings. - populateMethods(); // Depends on Protos, Types, and Strings. + populateTypes(); // Depends on Strings. + populateFields(); // Depends on Types, and Strings. + populateProtos(); // Depends on Types and Strings. + populateMethods(); // Depends on Protos, Types, and Strings. populateMethodHandles(); // Depends on Methods and Fields populateCallSites(); // Depends on MethodHandles } @@ -1176,9 +1192,8 @@ * From https://source.android.com/devices/tech/dalvik/dex-format#file-layout: * * <p>This list must be sorted, where the defining type (by type_id index) is the major order, - * method name (by string_id index) is the intermediate order, and method prototype - * (by proto_id index) is the minor order. The list must not contain any duplicate entries. - * + * method name (by string_id index) is the intermediate order, and method prototype (by proto_id + * index) is the minor order. The list must not contain any duplicate entries. */ private boolean verifyOrderOfMethodIds(DexSection dexSection) { if (dexSection.length >= 2) { @@ -1288,18 +1303,20 @@ case INSTANCE_GET: case INSTANCE_PUT: case STATIC_GET: - case STATIC_PUT: { - fieldOrMethod = indexedItems.getField(indexFieldOrMethod); - break; - } + case STATIC_PUT: + { + fieldOrMethod = indexedItems.getField(indexFieldOrMethod); + break; + } case INVOKE_CONSTRUCTOR: case INVOKE_DIRECT: case INVOKE_INTERFACE: case INVOKE_INSTANCE: - case INVOKE_STATIC: { - fieldOrMethod = indexedItems.getMethod(indexFieldOrMethod); - break; - } + case INVOKE_STATIC: + { + fieldOrMethod = indexedItems.getMethod(indexFieldOrMethod); + break; + } default: throw new AssertionError("Method handle type unsupported in a dex file."); } @@ -1367,15 +1384,15 @@ private static final DexParameterAnnotation[] NO_PARAMETER_ANNOTATIONS = new DexParameterAnnotation[0]; - private static final DexFieldAnnotation[] NO_FIELD_ANNOTATIONS = - new DexFieldAnnotation[0]; + private static final DexFieldAnnotation[] NO_FIELD_ANNOTATIONS = new DexFieldAnnotation[0]; - private static final DexMethodAnnotation[] NO_METHOD_ANNOTATIONS = - new DexMethodAnnotation[0]; + private static final DexMethodAnnotation[] NO_METHOD_ANNOTATIONS = new DexMethodAnnotation[0]; private static final AnnotationsDirectory THE_EMPTY_ANNOTATIONS_DIRECTORY = - new AnnotationsDirectory(DexAnnotationSet.empty(), - NO_FIELD_ANNOTATIONS, new DexMethodAnnotation[0], + new AnnotationsDirectory( + DexAnnotationSet.empty(), + NO_FIELD_ANNOTATIONS, + new DexMethodAnnotation[0], NO_PARAMETER_ANNOTATIONS); public final DexAnnotationSet clazz; @@ -1383,7 +1400,8 @@ public final DexMethodAnnotation[] methods; public final DexParameterAnnotation[] parameters; - AnnotationsDirectory(DexAnnotationSet clazz, + AnnotationsDirectory( + DexAnnotationSet clazz, DexFieldAnnotation[] fields, DexMethodAnnotation[] methods, DexParameterAnnotation[] parameters) {
diff --git a/src/main/java/com/android/tools/r8/dex/JumboStringRewriter.java b/src/main/java/com/android/tools/r8/dex/JumboStringRewriter.java index fc3784f..785158d 100644 --- a/src/main/java/com/android/tools/r8/dex/JumboStringRewriter.java +++ b/src/main/java/com/android/tools/r8/dex/JumboStringRewriter.java
@@ -6,29 +6,29 @@ import static com.android.tools.r8.graph.DexCode.TryHandler.NO_HANDLER; import static com.android.tools.r8.graph.DexDebugEventBuilder.addDefaultEventWithAdvancePcIfNecessary; -import com.android.tools.r8.code.ConstString; -import com.android.tools.r8.code.ConstStringJumbo; -import com.android.tools.r8.code.Format21t; -import com.android.tools.r8.code.Format22t; -import com.android.tools.r8.code.Format31t; -import com.android.tools.r8.code.Goto; -import com.android.tools.r8.code.Goto16; -import com.android.tools.r8.code.Goto32; -import com.android.tools.r8.code.IfEq; -import com.android.tools.r8.code.IfEqz; -import com.android.tools.r8.code.IfGe; -import com.android.tools.r8.code.IfGez; -import com.android.tools.r8.code.IfGt; -import com.android.tools.r8.code.IfGtz; -import com.android.tools.r8.code.IfLe; -import com.android.tools.r8.code.IfLez; -import com.android.tools.r8.code.IfLt; -import com.android.tools.r8.code.IfLtz; -import com.android.tools.r8.code.IfNe; -import com.android.tools.r8.code.IfNez; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.Nop; -import com.android.tools.r8.code.SwitchPayload; +import com.android.tools.r8.dex.code.DexConstString; +import com.android.tools.r8.dex.code.DexConstStringJumbo; +import com.android.tools.r8.dex.code.DexFormat21t; +import com.android.tools.r8.dex.code.DexFormat22t; +import com.android.tools.r8.dex.code.DexFormat31t; +import com.android.tools.r8.dex.code.DexGoto; +import com.android.tools.r8.dex.code.DexGoto16; +import com.android.tools.r8.dex.code.DexGoto32; +import com.android.tools.r8.dex.code.DexIfEq; +import com.android.tools.r8.dex.code.DexIfEqz; +import com.android.tools.r8.dex.code.DexIfGe; +import com.android.tools.r8.dex.code.DexIfGez; +import com.android.tools.r8.dex.code.DexIfGt; +import com.android.tools.r8.dex.code.DexIfGtz; +import com.android.tools.r8.dex.code.DexIfLe; +import com.android.tools.r8.dex.code.DexIfLez; +import com.android.tools.r8.dex.code.DexIfLt; +import com.android.tools.r8.dex.code.DexIfLtz; +import com.android.tools.r8.dex.code.DexIfNe; +import com.android.tools.r8.dex.code.DexIfNez; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexNop; +import com.android.tools.r8.dex.code.DexSwitchPayload; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexCode.Try; import com.android.tools.r8.graph.DexCode.TryHandler; @@ -57,11 +57,11 @@ public class JumboStringRewriter { private static class TryTargets { - private Instruction start; - private Instruction end; + private DexInstruction start; + private DexInstruction end; private final boolean endsAfterLastInstruction; - TryTargets(Instruction start, Instruction end, boolean endsAfterLastInstruction) { + TryTargets(DexInstruction start, DexInstruction end, boolean endsAfterLastInstruction) { assert start != null; assert end != null; this.start = start; @@ -69,7 +69,7 @@ this.endsAfterLastInstruction = endsAfterLastInstruction; } - void replaceTarget(Instruction target, Instruction newTarget) { + void replaceTarget(DexInstruction target, DexInstruction newTarget) { if (start == target) { start = newTarget; } @@ -93,14 +93,16 @@ private final DexEncodedMethod method; private final DexString firstJumboString; private final DexItemFactory factory; - private final Map<Instruction, List<Instruction>> instructionTargets = new IdentityHashMap<>(); + private final Map<DexInstruction, List<DexInstruction>> instructionTargets = + new IdentityHashMap<>(); private EventBasedDebugInfo debugEventBasedInfo = null; - private final Int2ReferenceMap<Instruction> debugEventTargets = new Int2ReferenceOpenHashMap<>(); - private final Map<Instruction, Instruction> payloadToSwitch = new IdentityHashMap<>(); + private final Int2ReferenceMap<DexInstruction> debugEventTargets = + new Int2ReferenceOpenHashMap<>(); + private final Map<DexInstruction, DexInstruction> payloadToSwitch = new IdentityHashMap<>(); private final Map<Try, TryTargets> tryTargets = new IdentityHashMap<>(); - private final Int2ReferenceMap<Instruction> tryRangeStartAndEndTargets - = new Int2ReferenceOpenHashMap<>(); - private final Map<TryHandler, List<Instruction>> handlerTargets = new IdentityHashMap<>(); + private final Int2ReferenceMap<DexInstruction> tryRangeStartAndEndTargets = + new Int2ReferenceOpenHashMap<>(); + private final Map<TryHandler, List<DexInstruction>> handlerTargets = new IdentityHashMap<>(); public JumboStringRewriter( DexEncodedMethod method, DexString firstJumboString, DexItemFactory factory) { @@ -114,7 +116,7 @@ // instructions to the actual instruction referenced. recordTargets(); // Expand the code by rewriting jumbo strings and branching instructions. - List<Instruction> newInstructions = expandCode(); + List<DexInstruction> newInstructions = expandCode(); // Commit to the new instruction offsets and update instructions, try-catch structures // and debug info with the new offsets. rewriteInstructionOffsets(newInstructions); @@ -128,7 +130,7 @@ oldCode.registerSize, oldCode.incomingRegisterSize, oldCode.outgoingRegisterSize, - newInstructions.toArray(Instruction.EMPTY_ARRAY), + newInstructions.toArray(DexInstruction.EMPTY_ARRAY), newTries, newHandlers, newDebugInfo); @@ -138,44 +140,44 @@ return newCode; } - private void rewriteInstructionOffsets(List<Instruction> instructions) { - for (Instruction instruction : instructions) { - if (instruction instanceof Format22t) { // IfEq, IfGe, IfGt, IfLe, IfLt, IfNe - Format22t condition = (Format22t) instruction; + private void rewriteInstructionOffsets(List<DexInstruction> instructions) { + for (DexInstruction instruction : instructions) { + if (instruction instanceof DexFormat22t) { // IfEq, IfGe, IfGt, IfLe, IfLt, IfNe + DexFormat22t condition = (DexFormat22t) instruction; int offset = instructionTargets.get(condition).get(0).getOffset() - instruction.getOffset(); assert Short.MIN_VALUE <= offset && offset <= Short.MAX_VALUE; condition.CCCC = (short) offset; - } else if (instruction instanceof Format21t) { // IfEqz, IfGez, IfGtz, IfLez, IfLtz, IfNez - Format21t condition = (Format21t) instruction; + } else if (instruction instanceof DexFormat21t) { // IfEqz, IfGez, IfGtz, IfLez, IfLtz, IfNez + DexFormat21t condition = (DexFormat21t) instruction; int offset = instructionTargets.get(condition).get(0).getOffset() - instruction.getOffset(); assert Short.MIN_VALUE <= offset && offset <= Short.MAX_VALUE; condition.BBBB = (short) offset; - } else if (instruction instanceof Goto) { - Goto jump = (Goto) instruction; + } else if (instruction instanceof DexGoto) { + DexGoto jump = (DexGoto) instruction; int offset = instructionTargets.get(jump).get(0).getOffset() - instruction.getOffset(); assert Byte.MIN_VALUE <= offset && offset <= Byte.MAX_VALUE; jump.AA = (byte) offset; - } else if (instruction instanceof Goto16) { - Goto16 jump = (Goto16) instruction; + } else if (instruction instanceof DexGoto16) { + DexGoto16 jump = (DexGoto16) instruction; int offset = instructionTargets.get(jump).get(0).getOffset() - instruction.getOffset(); assert Short.MIN_VALUE <= offset && offset <= Short.MAX_VALUE; jump.AAAA = (short) offset; - } else if (instruction instanceof Goto32) { - Goto32 jump = (Goto32) instruction; + } else if (instruction instanceof DexGoto32) { + DexGoto32 jump = (DexGoto32) instruction; int offset = instructionTargets.get(jump).get(0).getOffset() - instruction.getOffset(); jump.AAAAAAAA = offset; - } else if (instruction.hasPayload()) { // FillArrayData, SparseSwitch, PackedSwitch - Format31t payloadUser = (Format31t) instruction; + } else if (instruction.hasPayload()) { // FillArrayData, SparseSwitch, PackedSwitch + DexFormat31t payloadUser = (DexFormat31t) instruction; int offset = instructionTargets.get(payloadUser).get(0).getOffset() - instruction.getOffset(); payloadUser.setPayloadOffset(offset); - } else if (instruction instanceof SwitchPayload) { - SwitchPayload payload = (SwitchPayload) instruction; - Instruction switchInstruction = payloadToSwitch.get(payload); - List<Instruction> switchTargets = instructionTargets.get(payload); + } else if (instruction instanceof DexSwitchPayload) { + DexSwitchPayload payload = (DexSwitchPayload) instruction; + DexInstruction switchInstruction = payloadToSwitch.get(payload); + List<DexInstruction> switchTargets = instructionTargets.get(payload); int[] targets = payload.switchTargetOffsets(); for (int i = 0; i < switchTargets.size(); i++) { - Instruction target = switchTargets.get(i); + DexInstruction target = switchTargets.get(i); targets[i] = target.getOffset() - switchInstruction.getOffset(); } } @@ -199,8 +201,8 @@ TryHandler[] result = new TryHandler[code.handlers.length]; for (int i = 0; i < code.handlers.length; i++) { TryHandler handler = code.handlers[i]; - List<Instruction> targets = handlerTargets.get(handler); - Iterator<Instruction> it = targets.iterator(); + List<DexInstruction> targets = handlerTargets.get(handler); + Iterator<DexInstruction> it = targets.iterator(); int catchAllAddr = NO_HANDLER; if (handler.catchAllAddr != NO_HANDLER) { catchAllAddr = it.next().getOffset(); @@ -226,14 +228,14 @@ if (event instanceof AdvancePC) { AdvancePC advance = (AdvancePC) event; lastOriginalOffset += advance.delta; - Instruction target = debugEventTargets.get(lastOriginalOffset); + DexInstruction target = debugEventTargets.get(lastOriginalOffset); int pcDelta = target.getOffset() - lastNewOffset; events.add(factory.createAdvancePC(pcDelta)); lastNewOffset = target.getOffset(); } else if (event instanceof Default) { Default defaultEvent = (Default) event; lastOriginalOffset += defaultEvent.getPCDelta(); - Instruction target = debugEventTargets.get(lastOriginalOffset); + DexInstruction target = debugEventTargets.get(lastOriginalOffset); int lineDelta = defaultEvent.getLineDelta(); int pcDelta = target.getOffset() - lastNewOffset; addDefaultEventWithAdvancePcIfNecessary(lineDelta, pcDelta, events, factory); @@ -250,116 +252,116 @@ return code.getDebugInfo(); } - private List<Instruction> expandCode() { - LinkedList<Instruction> instructions = new LinkedList<>(); + private List<DexInstruction> expandCode() { + LinkedList<DexInstruction> instructions = new LinkedList<>(); Collections.addAll(instructions, method.getCode().asDexCode().instructions); int offsetDelta; do { - ListIterator<Instruction> it = instructions.listIterator(); + ListIterator<DexInstruction> it = instructions.listIterator(); offsetDelta = 0; while (it.hasNext()) { - Instruction instruction = it.next(); + DexInstruction instruction = it.next(); int orignalOffset = instruction.getOffset(); instruction.setOffset(orignalOffset + offsetDelta); - if (instruction instanceof ConstString) { - ConstString string = (ConstString) instruction; + if (instruction instanceof DexConstString) { + DexConstString string = (DexConstString) instruction; if (string.getString().compareTo(firstJumboString) >= 0) { - ConstStringJumbo jumboString = new ConstStringJumbo(string.AA, string.getString()); + DexConstStringJumbo jumboString = + new DexConstStringJumbo(string.AA, string.getString()); jumboString.setOffset(string.getOffset()); offsetDelta++; it.set(jumboString); replaceTarget(instruction, jumboString); } - } else if (instruction instanceof Format22t) { // IfEq, IfGe, IfGt, IfLe, IfLt, IfNe - Format22t condition = (Format22t) instruction; + } else if (instruction instanceof DexFormat22t) { // IfEq, IfGe, IfGt, IfLe, IfLt, IfNe + DexFormat22t condition = (DexFormat22t) instruction; int offset = instructionTargets.get(condition).get(0).getOffset() - instruction.getOffset(); if (Short.MIN_VALUE > offset || offset > Short.MAX_VALUE) { - Format22t newCondition = null; + DexFormat22t newCondition = null; switch (condition.getType().inverted()) { case EQ: - newCondition = new IfEq(condition.A, condition.B, 0); + newCondition = new DexIfEq(condition.A, condition.B, 0); break; case GE: - newCondition = new IfGe(condition.A, condition.B, 0); + newCondition = new DexIfGe(condition.A, condition.B, 0); break; case GT: - newCondition = new IfGt(condition.A, condition.B, 0); + newCondition = new DexIfGt(condition.A, condition.B, 0); break; case LE: - newCondition = new IfLe(condition.A, condition.B, 0); + newCondition = new DexIfLe(condition.A, condition.B, 0); break; case LT: - newCondition = new IfLt(condition.A, condition.B, 0); + newCondition = new DexIfLt(condition.A, condition.B, 0); break; case NE: - newCondition = new IfNe(condition.A, condition.B, 0); + newCondition = new DexIfNe(condition.A, condition.B, 0); break; } offsetDelta = rewriteIfToIfAndGoto(offsetDelta, it, condition, newCondition); } - } else if (instruction instanceof Format21t) { // IfEqz, IfGez, IfGtz, IfLez, IfLtz, IfNez - Format21t condition = (Format21t) instruction; + } else if (instruction + instanceof DexFormat21t) { // IfEqz, IfGez, IfGtz, IfLez, IfLtz, IfNez + DexFormat21t condition = (DexFormat21t) instruction; int offset = instructionTargets.get(condition).get(0).getOffset() - instruction.getOffset(); if (Short.MIN_VALUE > offset || offset > Short.MAX_VALUE) { - Format21t newCondition = null; + DexFormat21t newCondition = null; switch (condition.getType().inverted()) { case EQ: - newCondition = new IfEqz(condition.AA, 0); + newCondition = new DexIfEqz(condition.AA, 0); break; case GE: - newCondition = new IfGez(condition.AA, 0); + newCondition = new DexIfGez(condition.AA, 0); break; case GT: - newCondition = new IfGtz(condition.AA, 0); + newCondition = new DexIfGtz(condition.AA, 0); break; case LE: - newCondition = new IfLez(condition.AA, 0); + newCondition = new DexIfLez(condition.AA, 0); break; case LT: - newCondition = new IfLtz(condition.AA, 0); + newCondition = new DexIfLtz(condition.AA, 0); break; case NE: - newCondition = new IfNez(condition.AA, 0); + newCondition = new DexIfNez(condition.AA, 0); break; } offsetDelta = rewriteIfToIfAndGoto(offsetDelta, it, condition, newCondition); } - } else if (instruction instanceof Goto) { - Goto jump = (Goto) instruction; - int offset = - instructionTargets.get(jump).get(0).getOffset() - instruction.getOffset(); + } else if (instruction instanceof DexGoto) { + DexGoto jump = (DexGoto) instruction; + int offset = instructionTargets.get(jump).get(0).getOffset() - instruction.getOffset(); if (Byte.MIN_VALUE > offset || offset > Byte.MAX_VALUE) { - Instruction newJump; + DexInstruction newJump; if (Short.MIN_VALUE > offset || offset > Short.MAX_VALUE) { - newJump = new Goto32(offset); + newJump = new DexGoto32(offset); } else { - newJump = new Goto16(offset); + newJump = new DexGoto16(offset); } newJump.setOffset(jump.getOffset()); it.set(newJump); offsetDelta += (newJump.getSize() - jump.getSize()); replaceTarget(jump, newJump); - List<Instruction> targets = instructionTargets.remove(jump); + List<DexInstruction> targets = instructionTargets.remove(jump); instructionTargets.put(newJump, targets); } - } else if (instruction instanceof Goto16) { - Goto16 jump = (Goto16) instruction; - int offset = - instructionTargets.get(jump).get(0).getOffset() - instruction.getOffset(); + } else if (instruction instanceof DexGoto16) { + DexGoto16 jump = (DexGoto16) instruction; + int offset = instructionTargets.get(jump).get(0).getOffset() - instruction.getOffset(); if (Short.MIN_VALUE > offset || offset > Short.MAX_VALUE) { - Instruction newJump = new Goto32(offset); + DexInstruction newJump = new DexGoto32(offset); newJump.setOffset(jump.getOffset()); it.set(newJump); offsetDelta += (newJump.getSize() - jump.getSize()); replaceTarget(jump, newJump); - List<Instruction> targets = instructionTargets.remove(jump); + List<DexInstruction> targets = instructionTargets.remove(jump); instructionTargets.put(newJump, targets); } - } else if (instruction instanceof Goto32) { + } else if (instruction instanceof DexGoto32) { // Instruction big enough for any offset. - } else if (instruction.hasPayload()) { // FillArrayData, SparseSwitch, PackedSwitch + } else if (instruction.hasPayload()) { // FillArrayData, SparseSwitch, PackedSwitch // Instruction big enough for any offset. } else if (instruction.isPayload()) { // Payload instructions must be 4 byte aligned (instructions are 2 bytes). @@ -368,7 +370,7 @@ // Check if the previous instruction was a simple nop. If that is the case, remove it // to make the alignment instead of adding another one. Only allow removal if this // instruction is not targeted by anything. See b/78072750. - Instruction instructionBeforePayload = it.hasPrevious() ? it.previous() : null; + DexInstruction instructionBeforePayload = it.hasPrevious() ? it.previous() : null; if (instructionBeforePayload != null && instructionBeforePayload.isSimpleNop() && debugEventTargets.get(orignalOffset) == null @@ -379,7 +381,7 @@ if (instructionBeforePayload != null) { it.next(); } - Nop nop = new Nop(); + DexNop nop = new DexNop(); nop.setOffset(instruction.getOffset()); it.add(nop); offsetDelta++; @@ -396,11 +398,11 @@ private int rewriteIfToIfAndGoto( int offsetDelta, - ListIterator<Instruction> it, - Instruction condition, - Instruction newCondition) { + ListIterator<DexInstruction> it, + DexInstruction condition, + DexInstruction newCondition) { int jumpOffset = condition.getOffset() + condition.getSize(); - Goto32 jump = new Goto32(0); + DexGoto32 jump = new DexGoto32(0); jump.setOffset(jumpOffset); newCondition.setOffset(condition.getOffset()); it.set(newCondition); @@ -408,17 +410,17 @@ it.add(jump); offsetDelta += jump.getSize(); instructionTargets.put(jump, instructionTargets.remove(condition)); - Instruction fallthroughInstruction = it.next(); + DexInstruction fallthroughInstruction = it.next(); instructionTargets.put(newCondition, Lists.newArrayList(fallthroughInstruction)); it.previous(); return offsetDelta; } - private void replaceTarget(Instruction target, Instruction newTarget) { - for (List<Instruction> instructions : instructionTargets.values()) { + private void replaceTarget(DexInstruction target, DexInstruction newTarget) { + for (List<DexInstruction> instructions : instructionTargets.values()) { instructions.replaceAll((i) -> i == target ? newTarget : i); } - for (Int2ReferenceMap.Entry<Instruction> entry : debugEventTargets.int2ReferenceEntrySet()) { + for (Int2ReferenceMap.Entry<DexInstruction> entry : debugEventTargets.int2ReferenceEntrySet()) { if (entry.getValue() == target) { entry.setValue(newTarget); } @@ -426,52 +428,53 @@ for (Entry<Try, TryTargets> entry : tryTargets.entrySet()) { entry.getValue().replaceTarget(target, newTarget); } - for (List<Instruction> instructions : handlerTargets.values()) { + for (List<DexInstruction> instructions : handlerTargets.values()) { instructions.replaceAll((i) -> i == target ? newTarget : i); } } - private void recordInstructionTargets(Int2ReferenceMap<Instruction> offsetToInstruction) { - Instruction[] instructions = method.getCode().asDexCode().instructions; - for (Instruction instruction : instructions) { - if (instruction instanceof Format22t) { // IfEq, IfGe, IfGt, IfLe, IfLt, IfNe - Format22t condition = (Format22t) instruction; - Instruction target = offsetToInstruction.get(condition.getOffset() + condition.CCCC); + private void recordInstructionTargets(Int2ReferenceMap<DexInstruction> offsetToInstruction) { + DexInstruction[] instructions = method.getCode().asDexCode().instructions; + for (DexInstruction instruction : instructions) { + if (instruction instanceof DexFormat22t) { // IfEq, IfGe, IfGt, IfLe, IfLt, IfNe + DexFormat22t condition = (DexFormat22t) instruction; + DexInstruction target = offsetToInstruction.get(condition.getOffset() + condition.CCCC); assert target != null; instructionTargets.put(instruction, Lists.newArrayList(target)); - } else if (instruction instanceof Format21t) { // IfEqz, IfGez, IfGtz, IfLez, IfLtz, IfNez - Format21t condition = (Format21t) instruction; - Instruction target = offsetToInstruction.get(condition.getOffset() + condition.BBBB); + } else if (instruction instanceof DexFormat21t) { // IfEqz, IfGez, IfGtz, IfLez, IfLtz, IfNez + DexFormat21t condition = (DexFormat21t) instruction; + DexInstruction target = offsetToInstruction.get(condition.getOffset() + condition.BBBB); assert target != null; instructionTargets.put(instruction, Lists.newArrayList(target)); - } else if (instruction instanceof Goto) { - Goto jump = (Goto) instruction; - Instruction target = offsetToInstruction.get(jump.getOffset() + jump.AA); + } else if (instruction instanceof DexGoto) { + DexGoto jump = (DexGoto) instruction; + DexInstruction target = offsetToInstruction.get(jump.getOffset() + jump.AA); assert target != null; instructionTargets.put(instruction, Lists.newArrayList(target)); - } else if (instruction instanceof Goto16) { - Goto16 jump = (Goto16) instruction; - Instruction target = offsetToInstruction.get(jump.getOffset() + jump.AAAA); + } else if (instruction instanceof DexGoto16) { + DexGoto16 jump = (DexGoto16) instruction; + DexInstruction target = offsetToInstruction.get(jump.getOffset() + jump.AAAA); assert target != null; instructionTargets.put(instruction, Lists.newArrayList(target)); - } else if (instruction instanceof Goto32) { - Goto32 jump = (Goto32) instruction; - Instruction target = offsetToInstruction.get(jump.getOffset() + jump.AAAAAAAA); + } else if (instruction instanceof DexGoto32) { + DexGoto32 jump = (DexGoto32) instruction; + DexInstruction target = offsetToInstruction.get(jump.getOffset() + jump.AAAAAAAA); assert target != null; instructionTargets.put(instruction, Lists.newArrayList(target)); - } else if (instruction.hasPayload()) { // FillArrayData, SparseSwitch, PackedSwitch - Format31t offsetInstruction = (Format31t) instruction; - Instruction target = offsetToInstruction.get( - offsetInstruction.getOffset() + offsetInstruction.getPayloadOffset()); + } else if (instruction.hasPayload()) { // FillArrayData, SparseSwitch, PackedSwitch + DexFormat31t offsetInstruction = (DexFormat31t) instruction; + DexInstruction target = + offsetToInstruction.get( + offsetInstruction.getOffset() + offsetInstruction.getPayloadOffset()); assert target != null; instructionTargets.put(instruction, Lists.newArrayList(target)); - } else if (instruction instanceof SwitchPayload) { - SwitchPayload payload = (SwitchPayload) instruction; + } else if (instruction instanceof DexSwitchPayload) { + DexSwitchPayload payload = (DexSwitchPayload) instruction; int[] targetOffsets = payload.switchTargetOffsets(); int switchOffset = payloadToSwitch.get(instruction).getOffset(); - List<Instruction> targets = new ArrayList<>(); + List<DexInstruction> targets = new ArrayList<>(); for (int i = 0; i < targetOffsets.length; i++) { - Instruction target = offsetToInstruction.get(switchOffset + targetOffsets[i]); + DexInstruction target = offsetToInstruction.get(switchOffset + targetOffsets[i]); assert target != null; targets.add(target); } @@ -480,7 +483,7 @@ } } - private void recordDebugEventTargets(Int2ReferenceMap<Instruction> offsetToInstruction) { + private void recordDebugEventTargets(Int2ReferenceMap<DexInstruction> offsetToInstruction) { // TODO(b/213411850): Merging pc based D8 builds will map out of PC for any jumbo processed // method. Instead we should rather retain the PC encoding by bumping the max-pc and recording // the line number translation. We actually need to do so to support merging with native PC @@ -496,13 +499,13 @@ if (event instanceof AdvancePC) { AdvancePC advance = (AdvancePC) event; address += advance.delta; - Instruction target = offsetToInstruction.get(address); + DexInstruction target = offsetToInstruction.get(address); assert target != null; debugEventTargets.put(address, target); } else if (event instanceof Default) { Default defaultEvent = (Default) event; address += defaultEvent.getPCDelta(); - Instruction target = offsetToInstruction.get(address); + DexInstruction target = offsetToInstruction.get(address); assert target != null; debugEventTargets.put(address, target); } @@ -510,12 +513,11 @@ } private void recordTryAndHandlerTargets( - Int2ReferenceMap<Instruction> offsetToInstruction, - Instruction lastInstruction) { + Int2ReferenceMap<DexInstruction> offsetToInstruction, DexInstruction lastInstruction) { DexCode code = method.getCode().asDexCode(); for (Try theTry : code.tries) { - Instruction start = offsetToInstruction.get(theTry.startAddress); - Instruction end = null; + DexInstruction start = offsetToInstruction.get(theTry.startAddress); + DexInstruction end = null; int endAddress = theTry.startAddress + theTry.instructionCount; TryTargets targets; if (endAddress > lastInstruction.getOffset()) { @@ -532,14 +534,14 @@ tryRangeStartAndEndTargets.put(end.getOffset(), end); } for (TryHandler handler : code.handlers) { - List<Instruction> targets = new ArrayList<>(); + List<DexInstruction> targets = new ArrayList<>(); if (handler.catchAllAddr != NO_HANDLER) { - Instruction target = offsetToInstruction.get(handler.catchAllAddr); + DexInstruction target = offsetToInstruction.get(handler.catchAllAddr); assert target != null; targets.add(target); } for (TypeAddrPair pair : handler.pairs) { - Instruction target = offsetToInstruction.get(pair.addr); + DexInstruction target = offsetToInstruction.get(pair.addr); assert target != null; targets.add(target); } @@ -548,19 +550,19 @@ } private void recordTargets() { - Int2ReferenceMap<Instruction> offsetToInstruction = new Int2ReferenceOpenHashMap<>(); - Instruction[] instructions = method.getCode().asDexCode().instructions; + Int2ReferenceMap<DexInstruction> offsetToInstruction = new Int2ReferenceOpenHashMap<>(); + DexInstruction[] instructions = method.getCode().asDexCode().instructions; boolean containsPayloads = false; - for (Instruction instruction : instructions) { + for (DexInstruction instruction : instructions) { offsetToInstruction.put(instruction.getOffset(), instruction); - if (instruction.hasPayload()) { // FillArrayData, SparseSwitch, PackedSwitch + if (instruction.hasPayload()) { // FillArrayData, SparseSwitch, PackedSwitch containsPayloads = true; } } if (containsPayloads) { - for (Instruction instruction : instructions) { - if (instruction.hasPayload()) { // FillArrayData, SparseSwitch, PackedSwitch - Instruction payload = + for (DexInstruction instruction : instructions) { + if (instruction.hasPayload()) { // FillArrayData, SparseSwitch, PackedSwitch + DexInstruction payload = offsetToInstruction.get(instruction.getOffset() + instruction.getPayloadOffset()); assert payload != null; payloadToSwitch.put(payload, instruction); @@ -569,7 +571,7 @@ } recordInstructionTargets(offsetToInstruction); recordDebugEventTargets(offsetToInstruction); - Instruction lastInstruction = instructions[instructions.length - 1]; + DexInstruction lastInstruction = instructions[instructions.length - 1]; recordTryAndHandlerTargets(offsetToInstruction, lastInstruction); } }
diff --git a/src/main/java/com/android/tools/r8/code/BytecodeStream.java b/src/main/java/com/android/tools/r8/dex/code/BytecodeStream.java similarity index 87% rename from src/main/java/com/android/tools/r8/code/BytecodeStream.java rename to src/main/java/com/android/tools/r8/dex/code/BytecodeStream.java index e928c3e..da1e31a 100644 --- a/src/main/java/com/android/tools/r8/code/BytecodeStream.java +++ b/src/main/java/com/android/tools/r8/dex/code/BytecodeStream.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; public interface BytecodeStream { @@ -23,7 +23,7 @@ * Returns the next byte value from the stream, i.e., the high value of the next short followed by * the low value. * - * Both bytes need to be consumed before the next call to {@link #nextShort()}. + * <p>Both bytes need to be consumed before the next call to {@link #nextShort()}. * * @return next byte value in the stream. */
diff --git a/src/main/java/com/android/tools/r8/code/CfOrDexInstanceFieldRead.java b/src/main/java/com/android/tools/r8/dex/code/CfOrDexInstanceFieldRead.java similarity index 89% rename from src/main/java/com/android/tools/r8/code/CfOrDexInstanceFieldRead.java rename to src/main/java/com/android/tools/r8/dex/code/CfOrDexInstanceFieldRead.java index 3d560fc..4d4d9bc 100644 --- a/src/main/java/com/android/tools/r8/code/CfOrDexInstanceFieldRead.java +++ b/src/main/java/com/android/tools/r8/dex/code/CfOrDexInstanceFieldRead.java
@@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField;
diff --git a/src/main/java/com/android/tools/r8/code/CfOrDexInstruction.java b/src/main/java/com/android/tools/r8/dex/code/CfOrDexInstruction.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/CfOrDexInstruction.java rename to src/main/java/com/android/tools/r8/dex/code/CfOrDexInstruction.java index e8ac111..7bd1e7a 100644 --- a/src/main/java/com/android/tools/r8/code/CfOrDexInstruction.java +++ b/src/main/java/com/android/tools/r8/dex/code/CfOrDexInstruction.java
@@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.cf.code.CfInstruction; @@ -12,5 +12,5 @@ boolean isCfInstruction(); - Instruction asDexInstruction(); + DexInstruction asDexInstruction(); }
diff --git a/src/main/java/com/android/tools/r8/code/CfOrDexStaticFieldRead.java b/src/main/java/com/android/tools/r8/dex/code/CfOrDexStaticFieldRead.java similarity index 89% rename from src/main/java/com/android/tools/r8/code/CfOrDexStaticFieldRead.java rename to src/main/java/com/android/tools/r8/dex/code/CfOrDexStaticFieldRead.java index 121023a..513543c 100644 --- a/src/main/java/com/android/tools/r8/code/CfOrDexStaticFieldRead.java +++ b/src/main/java/com/android/tools/r8/dex/code/CfOrDexStaticFieldRead.java
@@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField;
diff --git a/src/main/java/com/android/tools/r8/code/AddDouble.java b/src/main/java/com/android/tools/r8/dex/code/DexAddDouble.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AddDouble.java rename to src/main/java/com/android/tools/r8/dex/code/DexAddDouble.java index ce962e2..d78dcbd 100644 --- a/src/main/java/com/android/tools/r8/code/AddDouble.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAddDouble.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AddDouble extends Format23x { + +public class DexAddDouble extends DexFormat23x { public static final int OPCODE = 0xab; public static final String NAME = "AddDouble"; public static final String SMALI_NAME = "add-double"; - AddDouble(int high, BytecodeStream stream) { + DexAddDouble(int high, BytecodeStream stream) { super(high, stream); } - public AddDouble(int dest, int left, int right) { + public DexAddDouble(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/AddDouble2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexAddDouble2Addr.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/AddDouble2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexAddDouble2Addr.java index a5a907b..c641b5f 100644 --- a/src/main/java/com/android/tools/r8/code/AddDouble2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAddDouble2Addr.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AddDouble2Addr extends Format12x { + +public class DexAddDouble2Addr extends DexFormat12x { public static final int OPCODE = 0xcb; public static final String NAME = "AddDouble2Addr"; public static final String SMALI_NAME = "add-double/2addr"; - AddDouble2Addr(int high, BytecodeStream stream) { + DexAddDouble2Addr(int high, BytecodeStream stream) { super(high, stream); } - public AddDouble2Addr(int left, int right) { + public DexAddDouble2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/AddFloat.java b/src/main/java/com/android/tools/r8/dex/code/DexAddFloat.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AddFloat.java rename to src/main/java/com/android/tools/r8/dex/code/DexAddFloat.java index 2d255ea..e745b30 100644 --- a/src/main/java/com/android/tools/r8/code/AddFloat.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAddFloat.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AddFloat extends Format23x { +public class DexAddFloat extends DexFormat23x { public static final int OPCODE = 0xa6; public static final String NAME = "AddFloat"; public static final String SMALI_NAME = "add-float"; - AddFloat(int high, BytecodeStream stream) { + DexAddFloat(int high, BytecodeStream stream) { super(high, stream); } - public AddFloat(int dest, int left, int right) { + public DexAddFloat(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/AddFloat2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexAddFloat2Addr.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/AddFloat2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexAddFloat2Addr.java index 0fb4691..e232cae 100644 --- a/src/main/java/com/android/tools/r8/code/AddFloat2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAddFloat2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AddFloat2Addr extends Format12x { +public class DexAddFloat2Addr extends DexFormat12x { public static final int OPCODE = 0xc6; public static final String NAME = "AddFloat2Addr"; public static final String SMALI_NAME = "add-float/2addr"; - AddFloat2Addr(int high, BytecodeStream stream) { + DexAddFloat2Addr(int high, BytecodeStream stream) { super(high, stream); } - public AddFloat2Addr(int left, int right) { + public DexAddFloat2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/AddInt.java b/src/main/java/com/android/tools/r8/dex/code/DexAddInt.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AddInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexAddInt.java index ba05bbf..b9e3d75 100644 --- a/src/main/java/com/android/tools/r8/code/AddInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAddInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AddInt extends Format23x { +public class DexAddInt extends DexFormat23x { public static final int OPCODE = 0x90; public static final String NAME = "AddInt"; public static final String SMALI_NAME = "add-int"; - AddInt(int high, BytecodeStream stream) { + DexAddInt(int high, BytecodeStream stream) { super(high, stream); } - public AddInt(int dest, int left, int right) { + public DexAddInt(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/AddInt2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexAddInt2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AddInt2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexAddInt2Addr.java index 1d50caf..cc38583 100644 --- a/src/main/java/com/android/tools/r8/code/AddInt2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAddInt2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AddInt2Addr extends Format12x { +public class DexAddInt2Addr extends DexFormat12x { public static final int OPCODE = 0xb0; public static final String NAME = "AddInt2Addr"; public static final String SMALI_NAME = "add-int/2addr"; - AddInt2Addr(int high, BytecodeStream stream) { + DexAddInt2Addr(int high, BytecodeStream stream) { super(high, stream); } - public AddInt2Addr(int left, int right) { + public DexAddInt2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/AddIntLit16.java b/src/main/java/com/android/tools/r8/dex/code/DexAddIntLit16.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/AddIntLit16.java rename to src/main/java/com/android/tools/r8/dex/code/DexAddIntLit16.java index c05f238..07e6e6a 100644 --- a/src/main/java/com/android/tools/r8/code/AddIntLit16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAddIntLit16.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AddIntLit16 extends Format22s { +public class DexAddIntLit16 extends DexFormat22s { public static final int OPCODE = 0xd0; public static final String NAME = "AddIntLit16"; public static final String SMALI_NAME = "add-int/lit16"; - AddIntLit16(int high, BytecodeStream stream) { + DexAddIntLit16(int high, BytecodeStream stream) { super(high, stream); } - public AddIntLit16(int dest, int register, int constant) { + public DexAddIntLit16(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/AddIntLit8.java b/src/main/java/com/android/tools/r8/dex/code/DexAddIntLit8.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/AddIntLit8.java rename to src/main/java/com/android/tools/r8/dex/code/DexAddIntLit8.java index 8715c06..8093253 100644 --- a/src/main/java/com/android/tools/r8/code/AddIntLit8.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAddIntLit8.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AddIntLit8 extends Format22b { +public class DexAddIntLit8 extends DexFormat22b { public static final int OPCODE = 0xd8; public static final String NAME = "AddIntLit8"; public static final String SMALI_NAME = "add-int/lit8"; - AddIntLit8(int high, BytecodeStream stream) { + DexAddIntLit8(int high, BytecodeStream stream) { super(high, stream); } - public AddIntLit8(int dest, int register, int constant) { + public DexAddIntLit8(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/AddLong.java b/src/main/java/com/android/tools/r8/dex/code/DexAddLong.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AddLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexAddLong.java index f3a6e3f..dbb0094 100644 --- a/src/main/java/com/android/tools/r8/code/AddLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAddLong.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AddLong extends Format23x { + +public class DexAddLong extends DexFormat23x { public static final int OPCODE = 0x9b; public static final String NAME = "AddLong"; public static final String SMALI_NAME = "add-long"; - AddLong(int high, BytecodeStream stream) { + DexAddLong(int high, BytecodeStream stream) { super(high, stream); } - public AddLong(int dest, int left, int right) { + public DexAddLong(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/AddLong2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexAddLong2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AddLong2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexAddLong2Addr.java index 72cb8e6..0d93f58 100644 --- a/src/main/java/com/android/tools/r8/code/AddLong2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAddLong2Addr.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AddLong2Addr extends Format12x { + +public class DexAddLong2Addr extends DexFormat12x { public static final int OPCODE = 0xbb; public static final String NAME = "AddLong2Addr"; public static final String SMALI_NAME = "add-long/2addr"; - AddLong2Addr(int high, BytecodeStream stream) { + DexAddLong2Addr(int high, BytecodeStream stream) { super(high, stream); } - public AddLong2Addr(int left, int right) { + public DexAddLong2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/Aget.java b/src/main/java/com/android/tools/r8/dex/code/DexAget.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/Aget.java rename to src/main/java/com/android/tools/r8/dex/code/DexAget.java index 063df5e..71f365b 100644 --- a/src/main/java/com/android/tools/r8/code/Aget.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAget.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class Aget extends Format23x { +public class DexAget extends DexFormat23x { public static final int OPCODE = 0x44; public static final String NAME = "Aget"; public static final String SMALI_NAME = "aget"; - /*package*/ Aget(int high, BytecodeStream stream) { + /*package*/ DexAget(int high, BytecodeStream stream) { super(high, stream); } - public Aget(int AA, int BB, int CC) { + public DexAget(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/AgetBoolean.java b/src/main/java/com/android/tools/r8/dex/code/DexAgetBoolean.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/AgetBoolean.java rename to src/main/java/com/android/tools/r8/dex/code/DexAgetBoolean.java index fc05007..e969298 100644 --- a/src/main/java/com/android/tools/r8/code/AgetBoolean.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAgetBoolean.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AgetBoolean extends Format23x { +public class DexAgetBoolean extends DexFormat23x { public static final int OPCODE = 0x47; public static final String NAME = "AgetBoolean"; public static final String SMALI_NAME = "aget-boolean"; - AgetBoolean(int high, BytecodeStream stream) { + DexAgetBoolean(int high, BytecodeStream stream) { super(high, stream); } - public AgetBoolean(int AA, int BB, int CC) { + public DexAgetBoolean(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/AgetByte.java b/src/main/java/com/android/tools/r8/dex/code/DexAgetByte.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/AgetByte.java rename to src/main/java/com/android/tools/r8/dex/code/DexAgetByte.java index f7bc165..addb35e 100644 --- a/src/main/java/com/android/tools/r8/code/AgetByte.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAgetByte.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AgetByte extends Format23x { +public class DexAgetByte extends DexFormat23x { public static final int OPCODE = 0x48; public static final String NAME = "AgetByte"; public static final String SMALI_NAME = "aget-byte"; - /*package*/ AgetByte(int high, BytecodeStream stream) { + /*package*/ DexAgetByte(int high, BytecodeStream stream) { super(high, stream); } - public AgetByte(int AA, int BB, int CC) { + public DexAgetByte(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/AgetChar.java b/src/main/java/com/android/tools/r8/dex/code/DexAgetChar.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AgetChar.java rename to src/main/java/com/android/tools/r8/dex/code/DexAgetChar.java index fc7804e..ed8ac21 100644 --- a/src/main/java/com/android/tools/r8/code/AgetChar.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAgetChar.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AgetChar extends Format23x { +public class DexAgetChar extends DexFormat23x { public static final int OPCODE = 0x49; public static final String NAME = "AgetChar"; public static final String SMALI_NAME = "aget-char"; - /*package*/ AgetChar(int high, BytecodeStream stream) { + /*package*/ DexAgetChar(int high, BytecodeStream stream) { super(high, stream); } - public AgetChar(int AA, int BB, int CC) { + public DexAgetChar(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/AgetObject.java b/src/main/java/com/android/tools/r8/dex/code/DexAgetObject.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/AgetObject.java rename to src/main/java/com/android/tools/r8/dex/code/DexAgetObject.java index 1574602..8cbedda 100644 --- a/src/main/java/com/android/tools/r8/code/AgetObject.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAgetObject.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AgetObject extends Format23x { + +public class DexAgetObject extends DexFormat23x { public static final int OPCODE = 0x46; public static final String NAME = "AgetObject"; public static final String SMALI_NAME = "aget-object"; - AgetObject(int high, BytecodeStream stream) { + DexAgetObject(int high, BytecodeStream stream) { super(high, stream); } - public AgetObject(int AA, int BB, int CC) { + public DexAgetObject(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/AgetShort.java b/src/main/java/com/android/tools/r8/dex/code/DexAgetShort.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/AgetShort.java rename to src/main/java/com/android/tools/r8/dex/code/DexAgetShort.java index d7fb45a..fd887b1 100644 --- a/src/main/java/com/android/tools/r8/code/AgetShort.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAgetShort.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AgetShort extends Format23x { +public class DexAgetShort extends DexFormat23x { public static final int OPCODE = 0x4a; public static final String NAME = "AgetShort"; public static final String SMALI_NAME = "aget-short"; - AgetShort(int high, BytecodeStream stream) { + DexAgetShort(int high, BytecodeStream stream) { super(high, stream); } - public AgetShort(int AA, int BB, int CC) { + public DexAgetShort(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/AgetWide.java b/src/main/java/com/android/tools/r8/dex/code/DexAgetWide.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/AgetWide.java rename to src/main/java/com/android/tools/r8/dex/code/DexAgetWide.java index 64c645d..59a0923 100644 --- a/src/main/java/com/android/tools/r8/code/AgetWide.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAgetWide.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AgetWide extends Format23x { +public class DexAgetWide extends DexFormat23x { public static final int OPCODE = 0x45; public static final String NAME = "AgetWide"; public static final String SMALI_NAME = "aget-wide"; - /*package*/ AgetWide(int high, BytecodeStream stream) { + /*package*/ DexAgetWide(int high, BytecodeStream stream) { super(high, stream); } - public AgetWide(int AA, int BB, int CC) { + public DexAgetWide(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/AndInt.java b/src/main/java/com/android/tools/r8/dex/code/DexAndInt.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AndInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexAndInt.java index 532e657..7050380 100644 --- a/src/main/java/com/android/tools/r8/code/AndInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAndInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AndInt extends Format23x { +public class DexAndInt extends DexFormat23x { public static final int OPCODE = 0x95; public static final String NAME = "AndInt"; public static final String SMALI_NAME = "and-int"; - AndInt(int high, BytecodeStream stream) { + DexAndInt(int high, BytecodeStream stream) { super(high, stream); } - public AndInt(int dest, int left, int right) { + public DexAndInt(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/AndInt2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexAndInt2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AndInt2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexAndInt2Addr.java index ad29884..8eba630 100644 --- a/src/main/java/com/android/tools/r8/code/AndInt2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAndInt2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AndInt2Addr extends Format12x { +public class DexAndInt2Addr extends DexFormat12x { public static final int OPCODE = 0xb5; public static final String NAME = "AndInt2Addr"; public static final String SMALI_NAME = "and-int/2addr"; - AndInt2Addr(int high, BytecodeStream stream) { + DexAndInt2Addr(int high, BytecodeStream stream) { super(high, stream); } - public AndInt2Addr(int left, int right) { + public DexAndInt2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/AndIntLit16.java b/src/main/java/com/android/tools/r8/dex/code/DexAndIntLit16.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/AndIntLit16.java rename to src/main/java/com/android/tools/r8/dex/code/DexAndIntLit16.java index 8dc59d5..fd68e93 100644 --- a/src/main/java/com/android/tools/r8/code/AndIntLit16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAndIntLit16.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AndIntLit16 extends Format22s { +public class DexAndIntLit16 extends DexFormat22s { public static final int OPCODE = 0xd5; public static final String NAME = "AndIntLit16"; public static final String SMALI_NAME = "and-int/lit16"; - AndIntLit16(int high, BytecodeStream stream) { + DexAndIntLit16(int high, BytecodeStream stream) { super(high, stream); } - public AndIntLit16(int dest, int left, int constant) { + public DexAndIntLit16(int dest, int left, int constant) { super(dest, left, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/AndIntLit8.java b/src/main/java/com/android/tools/r8/dex/code/DexAndIntLit8.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/AndIntLit8.java rename to src/main/java/com/android/tools/r8/dex/code/DexAndIntLit8.java index a347b70..18778c6 100644 --- a/src/main/java/com/android/tools/r8/code/AndIntLit8.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAndIntLit8.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AndIntLit8 extends Format22b { + +public class DexAndIntLit8 extends DexFormat22b { public static final int OPCODE = 0xdd; public static final String NAME = "AndIntLit8"; public static final String SMALI_NAME = "and-int/lit8"; - AndIntLit8(int high, BytecodeStream stream) { + DexAndIntLit8(int high, BytecodeStream stream) { super(high, stream); } - public AndIntLit8(int dest, int left, int constant) { + public DexAndIntLit8(int dest, int left, int constant) { super(dest, left, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/AndLong.java b/src/main/java/com/android/tools/r8/dex/code/DexAndLong.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AndLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexAndLong.java index 0bc3eaa..5458217 100644 --- a/src/main/java/com/android/tools/r8/code/AndLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAndLong.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AndLong extends Format23x { +public class DexAndLong extends DexFormat23x { public static final int OPCODE = 0xA0; public static final String NAME = "AndLong"; public static final String SMALI_NAME = "and-long"; - AndLong(int high, BytecodeStream stream) { + DexAndLong(int high, BytecodeStream stream) { super(high, stream); } - public AndLong(int dest, int left, int right) { + public DexAndLong(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/AndLong2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexAndLong2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AndLong2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexAndLong2Addr.java index 276a814..73babe5 100644 --- a/src/main/java/com/android/tools/r8/code/AndLong2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAndLong2Addr.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AndLong2Addr extends Format12x { + +public class DexAndLong2Addr extends DexFormat12x { public static final int OPCODE = 0xc0; public static final String NAME = "AndLong2Addr"; public static final String SMALI_NAME = "and-long/2addr"; - AndLong2Addr(int high, BytecodeStream stream) { + DexAndLong2Addr(int high, BytecodeStream stream) { super(high, stream); } - public AndLong2Addr(int left, int right) { + public DexAndLong2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/Aput.java b/src/main/java/com/android/tools/r8/dex/code/DexAput.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/Aput.java rename to src/main/java/com/android/tools/r8/dex/code/DexAput.java index 65e0721..c5b1e1a 100644 --- a/src/main/java/com/android/tools/r8/code/Aput.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAput.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class Aput extends Format23x { +public class DexAput extends DexFormat23x { public static final int OPCODE = 0x4b; public static final String NAME = "Aput"; public static final String SMALI_NAME = "aput"; - /*package*/ Aput(int high, BytecodeStream stream) { + /*package*/ DexAput(int high, BytecodeStream stream) { super(high, stream); } - public Aput(int AA, int BB, int CC) { + public DexAput(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/AputBoolean.java b/src/main/java/com/android/tools/r8/dex/code/DexAputBoolean.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AputBoolean.java rename to src/main/java/com/android/tools/r8/dex/code/DexAputBoolean.java index ac64012..78d70a2 100644 --- a/src/main/java/com/android/tools/r8/code/AputBoolean.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAputBoolean.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AputBoolean extends Format23x { +public class DexAputBoolean extends DexFormat23x { public static final int OPCODE = 0x4e; public static final String NAME = "AputBoolean"; public static final String SMALI_NAME = "aput-boolean"; - /*package*/ AputBoolean(int high, BytecodeStream stream) { + /*package*/ DexAputBoolean(int high, BytecodeStream stream) { super(high, stream); } - public AputBoolean(int AA, int BB, int CC) { + public DexAputBoolean(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/AputByte.java b/src/main/java/com/android/tools/r8/dex/code/DexAputByte.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/AputByte.java rename to src/main/java/com/android/tools/r8/dex/code/DexAputByte.java index 1d439c6..04def29 100644 --- a/src/main/java/com/android/tools/r8/code/AputByte.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAputByte.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AputByte extends Format23x { +public class DexAputByte extends DexFormat23x { public static final int OPCODE = 0x4f; public static final String NAME = "AputByte"; public static final String SMALI_NAME = "aput-byte"; - /*package*/ AputByte(int high, BytecodeStream stream) { + /*package*/ DexAputByte(int high, BytecodeStream stream) { super(high, stream); } - public AputByte(int AA, int BB, int CC) { + public DexAputByte(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/AputChar.java b/src/main/java/com/android/tools/r8/dex/code/DexAputChar.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AputChar.java rename to src/main/java/com/android/tools/r8/dex/code/DexAputChar.java index 14e408c..0f66bfa 100644 --- a/src/main/java/com/android/tools/r8/code/AputChar.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAputChar.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AputChar extends Format23x { +public class DexAputChar extends DexFormat23x { public static final int OPCODE = 0x50; public static final String NAME = "AputChar"; public static final String SMALI_NAME = "aput-char"; - /*package*/ AputChar(int high, BytecodeStream stream) { + /*package*/ DexAputChar(int high, BytecodeStream stream) { super(high, stream); } - public AputChar(int AA, int BB, int CC) { + public DexAputChar(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/AputObject.java b/src/main/java/com/android/tools/r8/dex/code/DexAputObject.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AputObject.java rename to src/main/java/com/android/tools/r8/dex/code/DexAputObject.java index bcfea78..3012172 100644 --- a/src/main/java/com/android/tools/r8/code/AputObject.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAputObject.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AputObject extends Format23x { +public class DexAputObject extends DexFormat23x { public static final int OPCODE = 0x4d; public static final String NAME = "AputObject"; public static final String SMALI_NAME = "aput-object"; - /*package*/ AputObject(int high, BytecodeStream stream) { + /*package*/ DexAputObject(int high, BytecodeStream stream) { super(high, stream); } - public AputObject(int AA, int BB, int CC) { + public DexAputObject(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/AputShort.java b/src/main/java/com/android/tools/r8/dex/code/DexAputShort.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/AputShort.java rename to src/main/java/com/android/tools/r8/dex/code/DexAputShort.java index daf9b4a..6a3173e 100644 --- a/src/main/java/com/android/tools/r8/code/AputShort.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAputShort.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AputShort extends Format23x { +public class DexAputShort extends DexFormat23x { public static final int OPCODE = 0x51; public static final String NAME = "AputShort"; public static final String SMALI_NAME = "aput-short"; - /*package*/ AputShort(int high, BytecodeStream stream) { + /*package*/ DexAputShort(int high, BytecodeStream stream) { super(high, stream); } - public AputShort(int AA, int BB, int CC) { + public DexAputShort(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/AputWide.java b/src/main/java/com/android/tools/r8/dex/code/DexAputWide.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/AputWide.java rename to src/main/java/com/android/tools/r8/dex/code/DexAputWide.java index 286dfff..adf0e40 100644 --- a/src/main/java/com/android/tools/r8/code/AputWide.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexAputWide.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.MemberType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class AputWide extends Format23x { +public class DexAputWide extends DexFormat23x { public static final int OPCODE = 0x4c; public static final String NAME = "AputWide"; public static final String SMALI_NAME = "aput-wide"; - /*package*/ AputWide(int high, BytecodeStream stream) { + /*package*/ DexAputWide(int high, BytecodeStream stream) { super(high, stream); } - public AputWide(int AA, int BB, int CC) { + public DexAputWide(int AA, int BB, int CC) { super(AA, BB, CC); }
diff --git a/src/main/java/com/android/tools/r8/code/ArrayLength.java b/src/main/java/com/android/tools/r8/dex/code/DexArrayLength.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/ArrayLength.java rename to src/main/java/com/android/tools/r8/dex/code/DexArrayLength.java index 156df49..543ab01 100644 --- a/src/main/java/com/android/tools/r8/code/ArrayLength.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexArrayLength.java
@@ -1,21 +1,21 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; -public class ArrayLength extends Format12x { +public class DexArrayLength extends DexFormat12x { public static final int OPCODE = 0x21; public static final String NAME = "ArrayLength"; public static final String SMALI_NAME = "array-length"; - ArrayLength(int high, BytecodeStream stream) { + DexArrayLength(int high, BytecodeStream stream) { super(high, stream); } - public ArrayLength(int dest, int array) { + public DexArrayLength(int dest, int array) { super(dest, array); }
diff --git a/src/main/java/com/android/tools/r8/code/Base1Format.java b/src/main/java/com/android/tools/r8/dex/code/DexBase1Format.java similarity index 64% rename from src/main/java/com/android/tools/r8/code/Base1Format.java rename to src/main/java/com/android/tools/r8/dex/code/DexBase1Format.java index 09c4bc8..eaea826 100644 --- a/src/main/java/com/android/tools/r8/code/Base1Format.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexBase1Format.java
@@ -1,17 +1,17 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; -public abstract class Base1Format extends Instruction { +public abstract class DexBase1Format extends DexInstruction { public static final int SIZE = 1; - public Base1Format(BytecodeStream stream) { + public DexBase1Format(BytecodeStream stream) { super(stream); } - protected Base1Format() {} + protected DexBase1Format() {} @Override public int getSize() {
diff --git a/src/main/java/com/android/tools/r8/code/Base2Format.java b/src/main/java/com/android/tools/r8/dex/code/DexBase2Format.java similarity index 64% rename from src/main/java/com/android/tools/r8/code/Base2Format.java rename to src/main/java/com/android/tools/r8/dex/code/DexBase2Format.java index 7d8e51e..abc2ee2 100644 --- a/src/main/java/com/android/tools/r8/code/Base2Format.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexBase2Format.java
@@ -1,15 +1,15 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; -public abstract class Base2Format extends Instruction { +public abstract class DexBase2Format extends DexInstruction { public static final int SIZE = 2; - protected Base2Format() {} + protected DexBase2Format() {} - public Base2Format(BytecodeStream stream) { + public DexBase2Format(BytecodeStream stream) { super(stream); }
diff --git a/src/main/java/com/android/tools/r8/code/Base3Format.java b/src/main/java/com/android/tools/r8/dex/code/DexBase3Format.java similarity index 64% rename from src/main/java/com/android/tools/r8/code/Base3Format.java rename to src/main/java/com/android/tools/r8/dex/code/DexBase3Format.java index 62d6824..e78d48d 100644 --- a/src/main/java/com/android/tools/r8/code/Base3Format.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexBase3Format.java
@@ -1,15 +1,15 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; -public abstract class Base3Format extends Instruction { +public abstract class DexBase3Format extends DexInstruction { public static final int SIZE = 3; - protected Base3Format() {} + protected DexBase3Format() {} - public Base3Format(BytecodeStream stream) { + public DexBase3Format(BytecodeStream stream) { super(stream); } @@ -17,4 +17,4 @@ public int getSize() { return SIZE; } -} \ No newline at end of file +}
diff --git a/src/main/java/com/android/tools/r8/code/Base4Format.java b/src/main/java/com/android/tools/r8/dex/code/DexBase4Format.java similarity index 64% rename from src/main/java/com/android/tools/r8/code/Base4Format.java rename to src/main/java/com/android/tools/r8/dex/code/DexBase4Format.java index a08411f..ea206fe 100644 --- a/src/main/java/com/android/tools/r8/code/Base4Format.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexBase4Format.java
@@ -1,15 +1,15 @@ // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; -public abstract class Base4Format extends Instruction { +public abstract class DexBase4Format extends DexInstruction { public static final int SIZE = 4; - protected Base4Format() {} + protected DexBase4Format() {} - public Base4Format(BytecodeStream stream) { + public DexBase4Format(BytecodeStream stream) { super(stream); } @@ -17,4 +17,4 @@ public int getSize() { return SIZE; } -} \ No newline at end of file +}
diff --git a/src/main/java/com/android/tools/r8/code/Base5Format.java b/src/main/java/com/android/tools/r8/dex/code/DexBase5Format.java similarity index 64% rename from src/main/java/com/android/tools/r8/code/Base5Format.java rename to src/main/java/com/android/tools/r8/dex/code/DexBase5Format.java index 093e932..207129d 100644 --- a/src/main/java/com/android/tools/r8/code/Base5Format.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexBase5Format.java
@@ -1,15 +1,15 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; -public abstract class Base5Format extends Instruction { +public abstract class DexBase5Format extends DexInstruction { public static final int SIZE = 5; - protected Base5Format() {} + protected DexBase5Format() {} - public Base5Format(BytecodeStream stream) { + public DexBase5Format(BytecodeStream stream) { super(stream); } @@ -17,4 +17,4 @@ public int getSize() { return SIZE; } -} \ No newline at end of file +}
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexBaseInstructionFactory.java b/src/main/java/com/android/tools/r8/dex/code/DexBaseInstructionFactory.java new file mode 100644 index 0000000..fdd4b40 --- /dev/null +++ b/src/main/java/com/android/tools/r8/dex/code/DexBaseInstructionFactory.java
@@ -0,0 +1,465 @@ +// Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. +package com.android.tools.r8.dex.code; + +import com.android.tools.r8.graph.OffsetToObjectMapping; + +abstract class DexBaseInstructionFactory { + + static DexInstruction create( + int high, int opcode, BytecodeStream stream, OffsetToObjectMapping mapping) { + switch (opcode) { + case 0x0: + return DexNop.create(high, stream); + case DexMove.OPCODE: + return new DexMove(high, stream); + case DexMoveFrom16.OPCODE: + return new DexMoveFrom16(high, stream); + case DexMove16.OPCODE: + return new DexMove16(high, stream); + case DexMoveWide.OPCODE: + return new DexMoveWide(high, stream); + case DexMoveWideFrom16.OPCODE: + return new DexMoveWideFrom16(high, stream); + case DexMoveWide16.OPCODE: + return new DexMoveWide16(high, stream); + case DexMoveObject.OPCODE: + return new DexMoveObject(high, stream); + case DexMoveObjectFrom16.OPCODE: + return new DexMoveObjectFrom16(high, stream); + case DexMoveObject16.OPCODE: + return new DexMoveObject16(high, stream); + case DexMoveResult.OPCODE: + return new DexMoveResult(high, stream); + case DexMoveResultWide.OPCODE: + return new DexMoveResultWide(high, stream); + case DexMoveResultObject.OPCODE: + return new DexMoveResultObject(high, stream); + case DexMoveException.OPCODE: + return new DexMoveException(high, stream); + case DexReturnVoid.OPCODE: + return new DexReturnVoid(high, stream); + case DexReturn.OPCODE: + return new DexReturn(high, stream); + case DexReturnWide.OPCODE: + return new DexReturnWide(high, stream); + case DexReturnObject.OPCODE: + return new DexReturnObject(high, stream); + case DexConst4.OPCODE: + return new DexConst4(high, stream); + case DexConst16.OPCODE: + return new DexConst16(high, stream); + case DexConst.OPCODE: + return new DexConst(high, stream); + case DexConstHigh16.OPCODE: + return new DexConstHigh16(high, stream); + case DexConstWide16.OPCODE: + return new DexConstWide16(high, stream); + case DexConstWide32.OPCODE: + return new DexConstWide32(high, stream); + case DexConstWide.OPCODE: + return new DexConstWide(high, stream); + case DexConstWideHigh16.OPCODE: + return new DexConstWideHigh16(high, stream); + case DexConstString.OPCODE: + return new DexConstString(high, stream, mapping); + case DexConstStringJumbo.OPCODE: + return new DexConstStringJumbo(high, stream, mapping); + case DexConstClass.OPCODE: + return new DexConstClass(high, stream, mapping); + case DexMonitorEnter.OPCODE: + return new DexMonitorEnter(high, stream); + case DexMonitorExit.OPCODE: + return new DexMonitorExit(high, stream); + case DexCheckCast.OPCODE: + return new DexCheckCast(high, stream, mapping); + case DexInstanceOf.OPCODE: + return new DexInstanceOf(high, stream, mapping); + case DexArrayLength.OPCODE: + return new DexArrayLength(high, stream); + case DexNewInstance.OPCODE: + return new DexNewInstance(high, stream, mapping); + case DexNewArray.OPCODE: + return new DexNewArray(high, stream, mapping); + case DexFilledNewArray.OPCODE: + return new DexFilledNewArray(high, stream, mapping); + case DexFilledNewArrayRange.OPCODE: + return new DexFilledNewArrayRange(high, stream, mapping); + case DexFillArrayData.OPCODE: + return new DexFillArrayData(high, stream); + case DexThrow.OPCODE: + return new DexThrow(high, stream); + case DexGoto.OPCODE: + return new DexGoto(high, stream); + case DexGoto16.OPCODE: + return new DexGoto16(high, stream); + case DexGoto32.OPCODE: + return new DexGoto32(high, stream); + case DexPackedSwitch.OPCODE: + return new DexPackedSwitch(high, stream); + case DexSparseSwitch.OPCODE: + return new DexSparseSwitch(high, stream); + case DexCmplFloat.OPCODE: + return new DexCmplFloat(high, stream); + case DexCmpgFloat.OPCODE: + return new DexCmpgFloat(high, stream); + case DexCmplDouble.OPCODE: + return new DexCmplDouble(high, stream); + case DexCmpgDouble.OPCODE: + return new DexCmpgDouble(high, stream); + case DexCmpLong.OPCODE: + return new DexCmpLong(high, stream); + case DexIfEq.OPCODE: + return new DexIfEq(high, stream); + case DexIfNe.OPCODE: + return new DexIfNe(high, stream); + case DexIfLt.OPCODE: + return new DexIfLt(high, stream); + case DexIfGe.OPCODE: + return new DexIfGe(high, stream); + case DexIfGt.OPCODE: + return new DexIfGt(high, stream); + case DexIfLe.OPCODE: + return new DexIfLe(high, stream); + case DexIfEqz.OPCODE: + return new DexIfEqz(high, stream); + case DexIfNez.OPCODE: + return new DexIfNez(high, stream); + case DexIfLtz.OPCODE: + return new DexIfLtz(high, stream); + case DexIfGez.OPCODE: + return new DexIfGez(high, stream); + case DexIfGtz.OPCODE: + return new DexIfGtz(high, stream); + case DexIfLez.OPCODE: + return new DexIfLez(high, stream); + case DexAget.OPCODE: + return new DexAget(high, stream); + case DexAgetWide.OPCODE: + return new DexAgetWide(high, stream); + case DexAgetObject.OPCODE: + return new DexAgetObject(high, stream); + case DexAgetBoolean.OPCODE: + return new DexAgetBoolean(high, stream); + case DexAgetByte.OPCODE: + return new DexAgetByte(high, stream); + case DexAgetChar.OPCODE: + return new DexAgetChar(high, stream); + case DexAgetShort.OPCODE: + return new DexAgetShort(high, stream); + case DexAput.OPCODE: + return new DexAput(high, stream); + case DexAputWide.OPCODE: + return new DexAputWide(high, stream); + case DexAputObject.OPCODE: + return new DexAputObject(high, stream); + case DexAputBoolean.OPCODE: + return new DexAputBoolean(high, stream); + case DexAputByte.OPCODE: + return new DexAputByte(high, stream); + case DexAputChar.OPCODE: + return new DexAputChar(high, stream); + case DexAputShort.OPCODE: + return new DexAputShort(high, stream); + case DexIget.OPCODE: + return new DexIget(high, stream, mapping); + case DexIgetWide.OPCODE: + return new DexIgetWide(high, stream, mapping); + case DexIgetObject.OPCODE: + return new DexIgetObject(high, stream, mapping); + case DexIgetBoolean.OPCODE: + return new DexIgetBoolean(high, stream, mapping); + case DexIgetByte.OPCODE: + return new DexIgetByte(high, stream, mapping); + case DexIgetChar.OPCODE: + return new DexIgetChar(high, stream, mapping); + case DexIgetShort.OPCODE: + return new DexIgetShort(high, stream, mapping); + case DexIput.OPCODE: + return new DexIput(high, stream, mapping); + case DexIputWide.OPCODE: + return new DexIputWide(high, stream, mapping); + case DexIputObject.OPCODE: + return new DexIputObject(high, stream, mapping); + case DexIputBoolean.OPCODE: + return new DexIputBoolean(high, stream, mapping); + case DexIputByte.OPCODE: + return new DexIputByte(high, stream, mapping); + case DexIputChar.OPCODE: + return new DexIputChar(high, stream, mapping); + case DexIputShort.OPCODE: + return new DexIputShort(high, stream, mapping); + case DexSget.OPCODE: + return new DexSget(high, stream, mapping); + case DexSgetWide.OPCODE: + return new DexSgetWide(high, stream, mapping); + case DexSgetObject.OPCODE: + return new DexSgetObject(high, stream, mapping); + case DexSgetBoolean.OPCODE: + return new DexSgetBoolean(high, stream, mapping); + case DexSgetByte.OPCODE: + return new DexSgetByte(high, stream, mapping); + case DexSgetChar.OPCODE: + return new DexSgetChar(high, stream, mapping); + case DexSgetShort.OPCODE: + return new DexSgetShort(high, stream, mapping); + case DexSput.OPCODE: + return new DexSput(high, stream, mapping); + case DexSputWide.OPCODE: + return new DexSputWide(high, stream, mapping); + case DexSputObject.OPCODE: + return new DexSputObject(high, stream, mapping); + case DexSputBoolean.OPCODE: + return new DexSputBoolean(high, stream, mapping); + case DexSputByte.OPCODE: + return new DexSputByte(high, stream, mapping); + case DexSputChar.OPCODE: + return new DexSputChar(high, stream, mapping); + case DexSputShort.OPCODE: + return new DexSputShort(high, stream, mapping); + case DexInvokeVirtual.OPCODE: + return new DexInvokeVirtual(high, stream, mapping); + case DexInvokeSuper.OPCODE: + return new DexInvokeSuper(high, stream, mapping); + case DexInvokeDirect.OPCODE: + return new DexInvokeDirect(high, stream, mapping); + case DexInvokeStatic.OPCODE: + return new DexInvokeStatic(high, stream, mapping); + case DexInvokeInterface.OPCODE: + return new DexInvokeInterface(high, stream, mapping); + case DexInvokeVirtualRange.OPCODE: + return new DexInvokeVirtualRange(high, stream, mapping); + case DexInvokeSuperRange.OPCODE: + return new DexInvokeSuperRange(high, stream, mapping); + case DexInvokeDirectRange.OPCODE: + return new DexInvokeDirectRange(high, stream, mapping); + case DexInvokeStaticRange.OPCODE: + return new DexInvokeStaticRange(high, stream, mapping); + case DexInvokeInterfaceRange.OPCODE: + return new DexInvokeInterfaceRange(high, stream, mapping); + case DexNegInt.OPCODE: + return new DexNegInt(high, stream); + case DexNotInt.OPCODE: + return new DexNotInt(high, stream); + case DexNegLong.OPCODE: + return new DexNegLong(high, stream); + case DexNotLong.OPCODE: + return new DexNotLong(high, stream); + case DexNegFloat.OPCODE: + return new DexNegFloat(high, stream); + case DexNegDouble.OPCODE: + return new DexNegDouble(high, stream); + case DexIntToLong.OPCODE: + return new DexIntToLong(high, stream); + case DexIntToFloat.OPCODE: + return new DexIntToFloat(high, stream); + case DexIntToDouble.OPCODE: + return new DexIntToDouble(high, stream); + case DexLongToInt.OPCODE: + return new DexLongToInt(high, stream); + case DexLongToFloat.OPCODE: + return new DexLongToFloat(high, stream); + case DexLongToDouble.OPCODE: + return new DexLongToDouble(high, stream); + case DexFloatToInt.OPCODE: + return new DexFloatToInt(high, stream); + case DexFloatToLong.OPCODE: + return new DexFloatToLong(high, stream); + case DexFloatToDouble.OPCODE: + return new DexFloatToDouble(high, stream); + case DexDoubleToInt.OPCODE: + return new DexDoubleToInt(high, stream); + case DexDoubleToLong.OPCODE: + return new DexDoubleToLong(high, stream); + case DexDoubleToFloat.OPCODE: + return new DexDoubleToFloat(high, stream); + case DexIntToByte.OPCODE: + return new DexIntToByte(high, stream); + case DexIntToChar.OPCODE: + return new DexIntToChar(high, stream); + case DexIntToShort.OPCODE: + return new DexIntToShort(high, stream); + case DexAddInt.OPCODE: + return new DexAddInt(high, stream); + case DexSubInt.OPCODE: + return new DexSubInt(high, stream); + case DexMulInt.OPCODE: + return new DexMulInt(high, stream); + case DexDivInt.OPCODE: + return new DexDivInt(high, stream); + case DexRemInt.OPCODE: + return new DexRemInt(high, stream); + case DexAndInt.OPCODE: + return new DexAndInt(high, stream); + case DexOrInt.OPCODE: + return new DexOrInt(high, stream); + case DexXorInt.OPCODE: + return new DexXorInt(high, stream); + case DexShlInt.OPCODE: + return new DexShlInt(high, stream); + case DexShrInt.OPCODE: + return new DexShrInt(high, stream); + case DexUshrInt.OPCODE: + return new DexUshrInt(high, stream); + case DexAddLong.OPCODE: + return new DexAddLong(high, stream); + case DexSubLong.OPCODE: + return new DexSubLong(high, stream); + case DexMulLong.OPCODE: + return new DexMulLong(high, stream); + case DexDivLong.OPCODE: + return new DexDivLong(high, stream); + case DexRemLong.OPCODE: + return new DexRemLong(high, stream); + case DexAndLong.OPCODE: + return new DexAndLong(high, stream); + case DexOrLong.OPCODE: + return new DexOrLong(high, stream); + case DexXorLong.OPCODE: + return new DexXorLong(high, stream); + case DexShlLong.OPCODE: + return new DexShlLong(high, stream); + case DexShrLong.OPCODE: + return new DexShrLong(high, stream); + case DexUshrLong.OPCODE: + return new DexUshrLong(high, stream); + case DexAddFloat.OPCODE: + return new DexAddFloat(high, stream); + case DexSubFloat.OPCODE: + return new DexSubFloat(high, stream); + case DexMulFloat.OPCODE: + return new DexMulFloat(high, stream); + case DexDivFloat.OPCODE: + return new DexDivFloat(high, stream); + case DexRemFloat.OPCODE: + return new DexRemFloat(high, stream); + case DexAddDouble.OPCODE: + return new DexAddDouble(high, stream); + case DexSubDouble.OPCODE: + return new DexSubDouble(high, stream); + case DexMulDouble.OPCODE: + return new DexMulDouble(high, stream); + case DexDivDouble.OPCODE: + return new DexDivDouble(high, stream); + case DexRemDouble.OPCODE: + return new DexRemDouble(high, stream); + case DexAddInt2Addr.OPCODE: + return new DexAddInt2Addr(high, stream); + case DexSubInt2Addr.OPCODE: + return new DexSubInt2Addr(high, stream); + case DexMulInt2Addr.OPCODE: + return new DexMulInt2Addr(high, stream); + case DexDivInt2Addr.OPCODE: + return new DexDivInt2Addr(high, stream); + case DexRemInt2Addr.OPCODE: + return new DexRemInt2Addr(high, stream); + case DexAndInt2Addr.OPCODE: + return new DexAndInt2Addr(high, stream); + case DexOrInt2Addr.OPCODE: + return new DexOrInt2Addr(high, stream); + case DexXorInt2Addr.OPCODE: + return new DexXorInt2Addr(high, stream); + case DexShlInt2Addr.OPCODE: + return new DexShlInt2Addr(high, stream); + case DexShrInt2Addr.OPCODE: + return new DexShrInt2Addr(high, stream); + case DexUshrInt2Addr.OPCODE: + return new DexUshrInt2Addr(high, stream); + case DexAddLong2Addr.OPCODE: + return new DexAddLong2Addr(high, stream); + case DexSubLong2Addr.OPCODE: + return new DexSubLong2Addr(high, stream); + case DexMulLong2Addr.OPCODE: + return new DexMulLong2Addr(high, stream); + case DexDivLong2Addr.OPCODE: + return new DexDivLong2Addr(high, stream); + case DexRemLong2Addr.OPCODE: + return new DexRemLong2Addr(high, stream); + case DexAndLong2Addr.OPCODE: + return new DexAndLong2Addr(high, stream); + case DexOrLong2Addr.OPCODE: + return new DexOrLong2Addr(high, stream); + case DexXorLong2Addr.OPCODE: + return new DexXorLong2Addr(high, stream); + case DexShlLong2Addr.OPCODE: + return new DexShlLong2Addr(high, stream); + case DexShrLong2Addr.OPCODE: + return new DexShrLong2Addr(high, stream); + case DexUshrLong2Addr.OPCODE: + return new DexUshrLong2Addr(high, stream); + case DexAddFloat2Addr.OPCODE: + return new DexAddFloat2Addr(high, stream); + case DexSubFloat2Addr.OPCODE: + return new DexSubFloat2Addr(high, stream); + case DexMulFloat2Addr.OPCODE: + return new DexMulFloat2Addr(high, stream); + case DexDivFloat2Addr.OPCODE: + return new DexDivFloat2Addr(high, stream); + case DexRemFloat2Addr.OPCODE: + return new DexRemFloat2Addr(high, stream); + case DexAddDouble2Addr.OPCODE: + return new DexAddDouble2Addr(high, stream); + case DexSubDouble2Addr.OPCODE: + return new DexSubDouble2Addr(high, stream); + case DexMulDouble2Addr.OPCODE: + return new DexMulDouble2Addr(high, stream); + case DexDivDouble2Addr.OPCODE: + return new DexDivDouble2Addr(high, stream); + case DexRemDouble2Addr.OPCODE: + return new DexRemDouble2Addr(high, stream); + case DexAddIntLit16.OPCODE: + return new DexAddIntLit16(high, stream); + case DexRsubInt.OPCODE: + return new DexRsubInt(high, stream); + case DexMulIntLit16.OPCODE: + return new DexMulIntLit16(high, stream); + case DexDivIntLit16.OPCODE: + return new DexDivIntLit16(high, stream); + case DexRemIntLit16.OPCODE: + return new DexRemIntLit16(high, stream); + case DexAndIntLit16.OPCODE: + return new DexAndIntLit16(high, stream); + case DexOrIntLit16.OPCODE: + return new DexOrIntLit16(high, stream); + case DexXorIntLit16.OPCODE: + return new DexXorIntLit16(high, stream); + case DexAddIntLit8.OPCODE: + return new DexAddIntLit8(high, stream); + case DexRsubIntLit8.OPCODE: + return new DexRsubIntLit8(high, stream); + case DexMulIntLit8.OPCODE: + return new DexMulIntLit8(high, stream); + case DexDivIntLit8.OPCODE: + return new DexDivIntLit8(high, stream); + case DexRemIntLit8.OPCODE: + return new DexRemIntLit8(high, stream); + case DexAndIntLit8.OPCODE: + return new DexAndIntLit8(high, stream); + case DexOrIntLit8.OPCODE: + return new DexOrIntLit8(high, stream); + case DexXorIntLit8.OPCODE: + return new DexXorIntLit8(high, stream); + case DexShlIntLit8.OPCODE: + return new DexShlIntLit8(high, stream); + case DexShrIntLit8.OPCODE: + return new DexShrIntLit8(high, stream); + case DexUshrIntLit8.OPCODE: + return new DexUshrIntLit8(high, stream); + case DexInvokePolymorphic.OPCODE: + return new DexInvokePolymorphic(high, stream, mapping); + case DexInvokePolymorphicRange.OPCODE: + return new DexInvokePolymorphicRange(high, stream, mapping); + case DexInvokeCustom.OPCODE: + return new DexInvokeCustom(high, stream, mapping); + case DexInvokeCustomRange.OPCODE: + return new DexInvokeCustomRange(high, stream, mapping); + case DexConstMethodHandle.OPCODE: + return new DexConstMethodHandle(high, stream, mapping); + case DexConstMethodType.OPCODE: + return new DexConstMethodType(high, stream, mapping); + default: + throw new IllegalArgumentException("Illegal Opcode: 0x" + Integer.toString(opcode, 16)); + } + } +}
diff --git a/src/main/java/com/android/tools/r8/code/CheckCast.java b/src/main/java/com/android/tools/r8/dex/code/DexCheckCast.java similarity index 86% rename from src/main/java/com/android/tools/r8/code/CheckCast.java rename to src/main/java/com/android/tools/r8/dex/code/DexCheckCast.java index 74a5f91..06f7a38 100644 --- a/src/main/java/com/android/tools/r8/code/CheckCast.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexCheckCast.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.DexType; @@ -15,7 +15,7 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -public class CheckCast extends Format21c<DexType> { +public class DexCheckCast extends DexFormat21c<DexType> { public static final int OPCODE = 0x1f; public static final String NAME = "CheckCast"; @@ -23,12 +23,12 @@ private final boolean ignoreCompatRules; - CheckCast(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexCheckCast(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getTypeMap()); this.ignoreCompatRules = false; } - public CheckCast(int valueRegister, DexType type, boolean ignoreCompatRules) { + public DexCheckCast(int valueRegister, DexType type, boolean ignoreCompatRules) { super(valueRegister, type); this.ignoreCompatRules = ignoreCompatRules; } @@ -49,7 +49,7 @@ } @Override - void internalSubSpecify(StructuralSpecification<Format21c<DexType>, ?> spec) { + void internalSubSpecify(StructuralSpecification<DexFormat21c<DexType>, ?> spec) { spec.withItem(i -> i.BBBB); } @@ -81,7 +81,7 @@ } @Override - public CheckCast asCheckCast() { + public DexCheckCast asCheckCast() { return this; }
diff --git a/src/main/java/com/android/tools/r8/code/CmpLong.java b/src/main/java/com/android/tools/r8/dex/code/DexCmpLong.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/CmpLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexCmpLong.java index 38f1bc9..57f1807 100644 --- a/src/main/java/com/android/tools/r8/code/CmpLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexCmpLong.java
@@ -1,23 +1,23 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.Cmp.Bias; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class CmpLong extends Format23x { +public class DexCmpLong extends DexFormat23x { public static final int OPCODE = 0x31; public static final String NAME = "CmpLong"; public static final String SMALI_NAME = "cmp-long"; - CmpLong(int high, BytecodeStream stream) { + DexCmpLong(int high, BytecodeStream stream) { super(high, stream); } - public CmpLong(int dest, int left, int right) { + public DexCmpLong(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/CmpgDouble.java b/src/main/java/com/android/tools/r8/dex/code/DexCmpgDouble.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/CmpgDouble.java rename to src/main/java/com/android/tools/r8/dex/code/DexCmpgDouble.java index f4cfef4..4414ec7 100644 --- a/src/main/java/com/android/tools/r8/code/CmpgDouble.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexCmpgDouble.java
@@ -1,23 +1,23 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.Cmp.Bias; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class CmpgDouble extends Format23x { +public class DexCmpgDouble extends DexFormat23x { public static final int OPCODE = 0x30; public static final String NAME = "CmpgDouble"; public static final String SMALI_NAME = "cmpg-double"; - CmpgDouble(int high, BytecodeStream stream) { + DexCmpgDouble(int high, BytecodeStream stream) { super(high, stream); } - public CmpgDouble(int dest, int left, int right) { + public DexCmpgDouble(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/CmpgFloat.java b/src/main/java/com/android/tools/r8/dex/code/DexCmpgFloat.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/CmpgFloat.java rename to src/main/java/com/android/tools/r8/dex/code/DexCmpgFloat.java index 299e2fe..ac387ed 100644 --- a/src/main/java/com/android/tools/r8/code/CmpgFloat.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexCmpgFloat.java
@@ -1,23 +1,23 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.Cmp.Bias; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class CmpgFloat extends Format23x { +public class DexCmpgFloat extends DexFormat23x { public static final int OPCODE = 0x2e; public static final String NAME = "CmpgFloat"; public static final String SMALI_NAME = "cmpg-float"; - CmpgFloat(int high, BytecodeStream stream) { + DexCmpgFloat(int high, BytecodeStream stream) { super(high, stream); } - public CmpgFloat(int dest, int left, int right) { + public DexCmpgFloat(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/CmplDouble.java b/src/main/java/com/android/tools/r8/dex/code/DexCmplDouble.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/CmplDouble.java rename to src/main/java/com/android/tools/r8/dex/code/DexCmplDouble.java index a65ef74..b28bf82 100644 --- a/src/main/java/com/android/tools/r8/code/CmplDouble.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexCmplDouble.java
@@ -1,23 +1,23 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.Cmp.Bias; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class CmplDouble extends Format23x { +public class DexCmplDouble extends DexFormat23x { public static final int OPCODE = 0x2f; public static final String NAME = "CmplDouble"; public static final String SMALI_NAME = "cmpl-double"; - CmplDouble(int high, BytecodeStream stream) { + DexCmplDouble(int high, BytecodeStream stream) { super(high, stream); } - public CmplDouble(int dest, int left, int right) { + public DexCmplDouble(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/CmplFloat.java b/src/main/java/com/android/tools/r8/dex/code/DexCmplFloat.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/CmplFloat.java rename to src/main/java/com/android/tools/r8/dex/code/DexCmplFloat.java index 892d0de..76becd7 100644 --- a/src/main/java/com/android/tools/r8/code/CmplFloat.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexCmplFloat.java
@@ -1,23 +1,23 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.Cmp.Bias; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class CmplFloat extends Format23x { +public class DexCmplFloat extends DexFormat23x { public static final int OPCODE = 0x2d; public static final String NAME = "CmplFloat"; public static final String SMALI_NAME = "cmpl-float"; - CmplFloat(int high, BytecodeStream stream) { + DexCmplFloat(int high, BytecodeStream stream) { super(high, stream); } - public CmplFloat(int dest, int left, int right) { + public DexCmplFloat(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/DexCompareHelper.java b/src/main/java/com/android/tools/r8/dex/code/DexCompareHelper.java similarity index 91% rename from src/main/java/com/android/tools/r8/code/DexCompareHelper.java rename to src/main/java/com/android/tools/r8/dex/code/DexCompareHelper.java index 130e69b..93c2501 100644 --- a/src/main/java/com/android/tools/r8/code/DexCompareHelper.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexCompareHelper.java
@@ -1,7 +1,7 @@ // Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; public class DexCompareHelper { @@ -22,7 +22,7 @@ // Helper to signal that the concrete instruction is uniquely determined by its ID/opcode. public static int compareIdUniquelyDeterminesEquality( - Instruction instruction1, Instruction instruction2) { + DexInstruction instruction1, DexInstruction instruction2) { assert instruction1.getClass() == instruction2.getClass(); assert instruction1.getCompareToId() == instruction2.getCompareToId(); assert instruction1.toString().equals(instruction2.toString());
diff --git a/src/main/java/com/android/tools/r8/code/Const.java b/src/main/java/com/android/tools/r8/dex/code/DexConst.java similarity index 74% rename from src/main/java/com/android/tools/r8/code/Const.java rename to src/main/java/com/android/tools/r8/dex/code/DexConst.java index 498f747..33fdff4 100644 --- a/src/main/java/com/android/tools/r8/code/Const.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexConst.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.analysis.type.TypeElement; import com.android.tools.r8.ir.code.SingleConstant; @@ -9,17 +9,17 @@ import com.android.tools.r8.naming.ClassNameMapper; import com.android.tools.r8.utils.StringUtils; -public class Const extends Format31i implements SingleConstant { +public class DexConst extends DexFormat31i implements SingleConstant { public static final int OPCODE = 0x14; public static final String NAME = "Const"; public static final String SMALI_NAME = "const"; - Const(int high, BytecodeStream stream) { + DexConst(int high, BytecodeStream stream) { super(high, stream); } - public Const(int register, int constant) { + public DexConst(int register, int constant) { super(register, constant); } @@ -45,14 +45,14 @@ @Override public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 8) + - " (" + decodedValue() + ")"); + return formatString( + "v" + AA + ", " + StringUtils.hexString(decodedValue(), 8) + " (" + decodedValue() + ")"); } @Override public String toSmaliString(ClassNameMapper naming) { - return formatSmaliString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 8) + - " # " + decodedValue()); + return formatSmaliString( + "v" + AA + ", " + StringUtils.hexString(decodedValue(), 8) + " # " + decodedValue()); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Const16.java b/src/main/java/com/android/tools/r8/dex/code/DexConst16.java similarity index 78% rename from src/main/java/com/android/tools/r8/code/Const16.java rename to src/main/java/com/android/tools/r8/dex/code/DexConst16.java index 9d69f25..1188df2 100644 --- a/src/main/java/com/android/tools/r8/code/Const16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexConst16.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.analysis.type.TypeElement; import com.android.tools.r8.ir.code.SingleConstant; @@ -9,17 +9,17 @@ import com.android.tools.r8.naming.ClassNameMapper; import com.android.tools.r8.utils.StringUtils; -public class Const16 extends Format21s implements SingleConstant { +public class DexConst16 extends DexFormat21s implements SingleConstant { public static final int OPCODE = 0x13; public static final String NAME = "Const16"; public static final String SMALI_NAME = "const/16"; - /*package*/ Const16(int high, BytecodeStream stream) { + /*package*/ DexConst16(int high, BytecodeStream stream) { super(high, stream); } - public Const16(int dest, int constant) { + public DexConst16(int dest, int constant) { super(dest, constant); } @@ -45,8 +45,8 @@ @Override public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 4) + - " (" + decodedValue() + ")"); + return formatString( + "v" + AA + ", " + StringUtils.hexString(decodedValue(), 4) + " (" + decodedValue() + ")"); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Const4.java b/src/main/java/com/android/tools/r8/dex/code/DexConst4.java similarity index 74% rename from src/main/java/com/android/tools/r8/code/Const4.java rename to src/main/java/com/android/tools/r8/dex/code/DexConst4.java index b9fd59c..09ecd15 100644 --- a/src/main/java/com/android/tools/r8/code/Const4.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexConst4.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.analysis.type.TypeElement; import com.android.tools.r8.ir.code.SingleConstant; @@ -9,17 +9,17 @@ import com.android.tools.r8.naming.ClassNameMapper; import com.android.tools.r8.utils.StringUtils; -public class Const4 extends Format11n implements SingleConstant { +public class DexConst4 extends DexFormat11n implements SingleConstant { public static final int OPCODE = 0x12; public static final String NAME = "Const4"; public static final String SMALI_NAME = "const/4"; - Const4(int high, BytecodeStream stream) { + DexConst4(int high, BytecodeStream stream) { super(high, stream); } - public Const4(int dest, int constant) { + public DexConst4(int dest, int constant) { super(dest, constant); } @@ -45,14 +45,14 @@ @Override public String toString(ClassNameMapper naming) { - return formatString("v" + A + ", " + StringUtils.hexString(decodedValue(), 1) + - " (" + decodedValue() + ")"); + return formatString( + "v" + A + ", " + StringUtils.hexString(decodedValue(), 1) + " (" + decodedValue() + ")"); } @Override public String toSmaliString(ClassNameMapper naming) { - return formatSmaliString("v" + A + ", " + StringUtils.hexString(decodedValue(), 2) + - " # " + decodedValue()); + return formatSmaliString( + "v" + A + ", " + StringUtils.hexString(decodedValue(), 2) + " # " + decodedValue()); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/ConstClass.java b/src/main/java/com/android/tools/r8/dex/code/DexConstClass.java similarity index 86% rename from src/main/java/com/android/tools/r8/code/ConstClass.java rename to src/main/java/com/android/tools/r8/dex/code/DexConstClass.java index 88b35e1..cdff382 100644 --- a/src/main/java/com/android/tools/r8/code/ConstClass.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexConstClass.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.DexType; @@ -15,7 +15,7 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -public class ConstClass extends Format21c<DexType> { +public class DexConstClass extends DexFormat21c<DexType> { public static final int OPCODE = 0x1c; public static final String NAME = "ConstClass"; @@ -23,18 +23,18 @@ private final boolean ignoreCompatRules; - ConstClass(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexConstClass(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getTypeMap()); this.ignoreCompatRules = false; } - public ConstClass(int dest, DexType type, boolean ignoreCompatRules) { + public DexConstClass(int dest, DexType type, boolean ignoreCompatRules) { super(dest, type); this.ignoreCompatRules = ignoreCompatRules; } @Override - void internalSubSpecify(StructuralSpecification<Format21c<DexType>, ?> spec) { + void internalSubSpecify(StructuralSpecification<DexFormat21c<DexType>, ?> spec) { spec.withItem(i -> i.BBBB); } @@ -100,7 +100,7 @@ } @Override - public ConstClass asConstClass() { + public DexConstClass asConstClass() { return this; }
diff --git a/src/main/java/com/android/tools/r8/code/ConstHigh16.java b/src/main/java/com/android/tools/r8/dex/code/DexConstHigh16.java similarity index 72% rename from src/main/java/com/android/tools/r8/code/ConstHigh16.java rename to src/main/java/com/android/tools/r8/dex/code/DexConstHigh16.java index b16e45d..2e732ed 100644 --- a/src/main/java/com/android/tools/r8/code/ConstHigh16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexConstHigh16.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.analysis.type.TypeElement; import com.android.tools.r8.ir.code.SingleConstant; @@ -9,17 +9,17 @@ import com.android.tools.r8.naming.ClassNameMapper; import com.android.tools.r8.utils.StringUtils; -public class ConstHigh16 extends Format21h implements SingleConstant { +public class DexConstHigh16 extends DexFormat21h implements SingleConstant { public static final int OPCODE = 0x15; public static final String NAME = "ConstHigh16"; public static final String SMALI_NAME = "const/high16"; - /*package*/ ConstHigh16(int high, BytecodeStream stream) { + /*package*/ DexConstHigh16(int high, BytecodeStream stream) { super(high, stream); } - public ConstHigh16(int register, int constantHighBits) { + public DexConstHigh16(int register, int constantHighBits) { super(register, constantHighBits); } @@ -45,14 +45,14 @@ @Override public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 8) + - " (" + decodedValue() + ")"); + return formatString( + "v" + AA + ", " + StringUtils.hexString(decodedValue(), 8) + " (" + decodedValue() + ")"); } @Override public String toSmaliString(ClassNameMapper naming) { - return formatSmaliString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 8) + - " # " + decodedValue()); + return formatSmaliString( + "v" + AA + ", " + StringUtils.hexString(decodedValue(), 8) + " # " + decodedValue()); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/ConstMethodHandle.java b/src/main/java/com/android/tools/r8/dex/code/DexConstMethodHandle.java similarity index 89% rename from src/main/java/com/android/tools/r8/code/ConstMethodHandle.java rename to src/main/java/com/android/tools/r8/dex/code/DexConstMethodHandle.java index 0df963f..c9eceef 100644 --- a/src/main/java/com/android/tools/r8/code/ConstMethodHandle.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexConstMethodHandle.java
@@ -1,7 +1,7 @@ // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.errors.InternalCompilerError; @@ -18,17 +18,17 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -public class ConstMethodHandle extends Format21c<DexMethodHandle> { +public class DexConstMethodHandle extends DexFormat21c<DexMethodHandle> { public static final int OPCODE = 0xfe; public static final String NAME = "ConstMethodHandle"; public static final String SMALI_NAME = "const-method-handle"; - ConstMethodHandle(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexConstMethodHandle(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getMethodHandleMap()); } - public ConstMethodHandle(int register, DexMethodHandle methodHandle) { + public DexConstMethodHandle(int register, DexMethodHandle methodHandle) { super(register, methodHandle); } @@ -52,7 +52,7 @@ } @Override - void internalSubSpecify(StructuralSpecification<Format21c<DexMethodHandle>, ?> spec) { + void internalSubSpecify(StructuralSpecification<DexFormat21c<DexMethodHandle>, ?> spec) { spec.withItem(i -> i.BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/ConstMethodType.java b/src/main/java/com/android/tools/r8/dex/code/DexConstMethodType.java similarity index 88% rename from src/main/java/com/android/tools/r8/code/ConstMethodType.java rename to src/main/java/com/android/tools/r8/dex/code/DexConstMethodType.java index 478d3b5..5f73b75 100644 --- a/src/main/java/com/android/tools/r8/code/ConstMethodType.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexConstMethodType.java
@@ -1,7 +1,7 @@ // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.errors.InternalCompilerError; @@ -17,17 +17,17 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -public class ConstMethodType extends Format21c<DexProto> { +public class DexConstMethodType extends DexFormat21c<DexProto> { public static final int OPCODE = 0xff; public static final String NAME = "ConstMethodType"; public static final String SMALI_NAME = "const-method-type"; - ConstMethodType(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexConstMethodType(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getProtosMap()); } - public ConstMethodType(int register, DexProto methodType) { + public DexConstMethodType(int register, DexProto methodType) { super(register, methodType); } @@ -51,7 +51,7 @@ } @Override - void internalSubSpecify(StructuralSpecification<Format21c<DexProto>, ?> spec) { + void internalSubSpecify(StructuralSpecification<DexFormat21c<DexProto>, ?> spec) { spec.withItem(i -> i.BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/ConstString.java b/src/main/java/com/android/tools/r8/dex/code/DexConstString.java similarity index 87% rename from src/main/java/com/android/tools/r8/code/ConstString.java rename to src/main/java/com/android/tools/r8/dex/code/DexConstString.java index 5fd55e4..04334a8 100644 --- a/src/main/java/com/android/tools/r8/code/ConstString.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexConstString.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.errors.InternalCompilerError; @@ -16,17 +16,17 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -public class ConstString extends Format21c<DexString> { +public class DexConstString extends DexFormat21c<DexString> { public static final int OPCODE = 0x1a; public static final String NAME = "ConstString"; public static final String SMALI_NAME = "const-string"; - ConstString(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexConstString(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getStringMap()); } - public ConstString(int register, DexString string) { + public DexConstString(int register, DexString string) { super(register, string); } @@ -35,7 +35,7 @@ } @Override - void internalSubSpecify(StructuralSpecification<Format21c<DexString>, ?> spec) { + void internalSubSpecify(StructuralSpecification<DexFormat21c<DexString>, ?> spec) { spec.withItem(i -> i.BBBB); } @@ -64,7 +64,7 @@ } @Override - public ConstString asConstString() { + public DexConstString asConstString() { return this; }
diff --git a/src/main/java/com/android/tools/r8/code/ConstStringJumbo.java b/src/main/java/com/android/tools/r8/dex/code/DexConstStringJumbo.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/ConstStringJumbo.java rename to src/main/java/com/android/tools/r8/dex/code/DexConstStringJumbo.java index b24f86f..725ef8a 100644 --- a/src/main/java/com/android/tools/r8/code/ConstStringJumbo.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexConstStringJumbo.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexString; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.ir.conversion.IRBuilder; import com.android.tools.r8.naming.ClassNameMapper; -public class ConstStringJumbo extends Format31c { +public class DexConstStringJumbo extends DexFormat31c { public static final int OPCODE = 0x1b; public static final String NAME = "ConstStringJumbo"; public static final String SMALI_NAME = "const-string/jumbo"; - ConstStringJumbo(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexConstStringJumbo(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getStringMap()); } - public ConstStringJumbo(int register, DexString string) { + public DexConstStringJumbo(int register, DexString string) { super(register, string); } @@ -42,7 +42,7 @@ } @Override - public ConstStringJumbo asConstStringJumbo() { + public DexConstStringJumbo asConstStringJumbo() { return this; }
diff --git a/src/main/java/com/android/tools/r8/code/ConstWide.java b/src/main/java/com/android/tools/r8/dex/code/DexConstWide.java similarity index 72% rename from src/main/java/com/android/tools/r8/code/ConstWide.java rename to src/main/java/com/android/tools/r8/dex/code/DexConstWide.java index dd2e6e6..6fbd6f2 100644 --- a/src/main/java/com/android/tools/r8/code/ConstWide.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexConstWide.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.analysis.type.TypeElement; import com.android.tools.r8.ir.code.WideConstant; @@ -9,17 +9,17 @@ import com.android.tools.r8.naming.ClassNameMapper; import com.android.tools.r8.utils.StringUtils; -public class ConstWide extends Format51l implements WideConstant { +public class DexConstWide extends DexFormat51l implements WideConstant { public static final int OPCODE = 0x18; public static final String NAME = "ConstWide"; public static final String SMALI_NAME = "const-wide"; - ConstWide(int high, BytecodeStream stream) { + DexConstWide(int high, BytecodeStream stream) { super(high, stream); } - public ConstWide(int dest, long constant) { + public DexConstWide(int dest, long constant) { super(dest, constant); } @@ -45,14 +45,14 @@ @Override public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + - " (" + decodedValue() + ")"); + return formatString( + "v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + " (" + decodedValue() + ")"); } @Override public String toSmaliString(ClassNameMapper naming) { - return formatSmaliString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + - "L # " + decodedValue()); + return formatSmaliString( + "v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + "L # " + decodedValue()); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/ConstWide16.java b/src/main/java/com/android/tools/r8/dex/code/DexConstWide16.java similarity index 79% rename from src/main/java/com/android/tools/r8/code/ConstWide16.java rename to src/main/java/com/android/tools/r8/dex/code/DexConstWide16.java index 99c1810..e30b886 100644 --- a/src/main/java/com/android/tools/r8/code/ConstWide16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexConstWide16.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.analysis.type.TypeElement; import com.android.tools.r8.ir.code.WideConstant; @@ -9,17 +9,17 @@ import com.android.tools.r8.naming.ClassNameMapper; import com.android.tools.r8.utils.StringUtils; -public class ConstWide16 extends Format21s implements WideConstant { +public class DexConstWide16 extends DexFormat21s implements WideConstant { public static final int OPCODE = 0x16; public static final String NAME = "ConstWide16"; public static final String SMALI_NAME = "const-wide/16"; - ConstWide16(int high, BytecodeStream stream) { + DexConstWide16(int high, BytecodeStream stream) { super(high, stream); } - public ConstWide16(int dest, int constant) { + public DexConstWide16(int dest, int constant) { super(dest, constant); } @@ -45,8 +45,8 @@ @Override public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + - " (" + decodedValue() + ")"); + return formatString( + "v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + " (" + decodedValue() + ")"); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/ConstWide32.java b/src/main/java/com/android/tools/r8/dex/code/DexConstWide32.java similarity index 79% rename from src/main/java/com/android/tools/r8/code/ConstWide32.java rename to src/main/java/com/android/tools/r8/dex/code/DexConstWide32.java index 1e2c274..b315cb9 100644 --- a/src/main/java/com/android/tools/r8/code/ConstWide32.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexConstWide32.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.analysis.type.TypeElement; import com.android.tools.r8.ir.code.WideConstant; @@ -9,17 +9,17 @@ import com.android.tools.r8.naming.ClassNameMapper; import com.android.tools.r8.utils.StringUtils; -public class ConstWide32 extends Format31i implements WideConstant { +public class DexConstWide32 extends DexFormat31i implements WideConstant { public static final int OPCODE = 0x17; public static final String NAME = "ConstWide32"; public static final String SMALI_NAME = "const-wide/32"; - ConstWide32(int high, BytecodeStream stream) { + DexConstWide32(int high, BytecodeStream stream) { super(high, stream); } - public ConstWide32(int dest, int constant) { + public DexConstWide32(int dest, int constant) { super(dest, constant); } @@ -45,8 +45,8 @@ @Override public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + - " (" + decodedValue() + ")"); + return formatString( + "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/dex/code/DexConstWideHigh16.java similarity index 71% rename from src/main/java/com/android/tools/r8/code/ConstWideHigh16.java rename to src/main/java/com/android/tools/r8/dex/code/DexConstWideHigh16.java index 26d5ea0..0eeca93 100644 --- a/src/main/java/com/android/tools/r8/code/ConstWideHigh16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexConstWideHigh16.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.analysis.type.TypeElement; import com.android.tools.r8.ir.code.WideConstant; @@ -9,17 +9,17 @@ import com.android.tools.r8.naming.ClassNameMapper; import com.android.tools.r8.utils.StringUtils; -public class ConstWideHigh16 extends Format21h implements WideConstant { +public class DexConstWideHigh16 extends DexFormat21h implements WideConstant { public static final int OPCODE = 0x19; public static final String NAME = "ConstWideHigh16"; public static final String SMALI_NAME = "const-wide/high16"; - ConstWideHigh16(int high, BytecodeStream stream) { + DexConstWideHigh16(int high, BytecodeStream stream) { super(high, stream); } - public ConstWideHigh16(int dest, int constantHighBits) { + public DexConstWideHigh16(int dest, int constantHighBits) { super(dest, constantHighBits); } @@ -45,14 +45,14 @@ @Override public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + - " (" + decodedValue() + ")"); + return formatString( + "v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + " (" + decodedValue() + ")"); } @Override public String toSmaliString(ClassNameMapper naming) { - return formatSmaliString("v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + - "L # " + decodedValue()); + return formatSmaliString( + "v" + AA + ", " + StringUtils.hexString(decodedValue(), 16) + "L # " + decodedValue()); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/DivDouble.java b/src/main/java/com/android/tools/r8/dex/code/DexDivDouble.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/DivDouble.java rename to src/main/java/com/android/tools/r8/dex/code/DexDivDouble.java index 1be9ee9..19ad41f 100644 --- a/src/main/java/com/android/tools/r8/code/DivDouble.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexDivDouble.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class DivDouble extends Format23x { + +public class DexDivDouble extends DexFormat23x { public static final int OPCODE = 0xae; public static final String NAME = "DivDouble"; public static final String SMALI_NAME = "div-double"; - DivDouble(int high, BytecodeStream stream) { + DexDivDouble(int high, BytecodeStream stream) { super(high, stream); } - public DivDouble(int dest, int left, int right) { + public DexDivDouble(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/DivDouble2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexDivDouble2Addr.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/DivDouble2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexDivDouble2Addr.java index a8070d2..9481f04 100644 --- a/src/main/java/com/android/tools/r8/code/DivDouble2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexDivDouble2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class DivDouble2Addr extends Format12x { +public class DexDivDouble2Addr extends DexFormat12x { public static final int OPCODE = 0xce; public static final String NAME = "DivDouble2Addr"; public static final String SMALI_NAME = "div-double/2addr"; - DivDouble2Addr(int high, BytecodeStream stream) { + DexDivDouble2Addr(int high, BytecodeStream stream) { super(high, stream); } - public DivDouble2Addr(int left, int right) { + public DexDivDouble2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/DivFloat.java b/src/main/java/com/android/tools/r8/dex/code/DexDivFloat.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/DivFloat.java rename to src/main/java/com/android/tools/r8/dex/code/DexDivFloat.java index 4069d40..2791142 100644 --- a/src/main/java/com/android/tools/r8/code/DivFloat.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexDivFloat.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class DivFloat extends Format23x { + +public class DexDivFloat extends DexFormat23x { public static final int OPCODE = 0xa9; public static final String NAME = "DivFloat"; public static final String SMALI_NAME = "div-float"; - DivFloat(int high, BytecodeStream stream) { + DexDivFloat(int high, BytecodeStream stream) { super(high, stream); } - public DivFloat(int dest, int left, int right) { + public DexDivFloat(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/DivFloat2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexDivFloat2Addr.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/DivFloat2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexDivFloat2Addr.java index a51af26..56fb846 100644 --- a/src/main/java/com/android/tools/r8/code/DivFloat2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexDivFloat2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class DivFloat2Addr extends Format12x { +public class DexDivFloat2Addr extends DexFormat12x { public static final int OPCODE = 0xc9; public static final String NAME = "DivFloat2Addr"; public static final String SMALI_NAME = "div-float/2addr"; - DivFloat2Addr(int high, BytecodeStream stream) { + DexDivFloat2Addr(int high, BytecodeStream stream) { super(high, stream); } - public DivFloat2Addr(int left, int right) { + public DexDivFloat2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/DivInt.java b/src/main/java/com/android/tools/r8/dex/code/DexDivInt.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/DivInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexDivInt.java index 90e1459..7f5dc8a 100644 --- a/src/main/java/com/android/tools/r8/code/DivInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexDivInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class DivInt extends Format23x { +public class DexDivInt extends DexFormat23x { public static final int OPCODE = 0x93; public static final String NAME = "DivInt"; public static final String SMALI_NAME = "div-int"; - /*package*/ DivInt(int high, BytecodeStream stream) { + /*package*/ DexDivInt(int high, BytecodeStream stream) { super(high, stream); } - public DivInt(int dest, int left, int right) { + public DexDivInt(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/DivInt2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexDivInt2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/DivInt2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexDivInt2Addr.java index a92d24f..f321ff2 100644 --- a/src/main/java/com/android/tools/r8/code/DivInt2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexDivInt2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class DivInt2Addr extends Format12x { +public class DexDivInt2Addr extends DexFormat12x { public static final int OPCODE = 0xb3; public static final String NAME = "DivInt2Addr"; public static final String SMALI_NAME = "div-int/2addr"; - /*package*/ DivInt2Addr(int high, BytecodeStream stream) { + /*package*/ DexDivInt2Addr(int high, BytecodeStream stream) { super(high, stream); } - public DivInt2Addr(int left, int right) { + public DexDivInt2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/DivIntLit16.java b/src/main/java/com/android/tools/r8/dex/code/DexDivIntLit16.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/DivIntLit16.java rename to src/main/java/com/android/tools/r8/dex/code/DexDivIntLit16.java index 1a62f6e..10931d3 100644 --- a/src/main/java/com/android/tools/r8/code/DivIntLit16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexDivIntLit16.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class DivIntLit16 extends Format22s { + +public class DexDivIntLit16 extends DexFormat22s { public static final int OPCODE = 0xd3; public static final String NAME = "DivIntLit16"; public static final String SMALI_NAME = "div-int/lit16"; - /*package*/ DivIntLit16(int high, BytecodeStream stream) { + /*package*/ DexDivIntLit16(int high, BytecodeStream stream) { super(high, stream); } - public DivIntLit16(int dest, int register, int constant) { + public DexDivIntLit16(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/DivIntLit8.java b/src/main/java/com/android/tools/r8/dex/code/DexDivIntLit8.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/DivIntLit8.java rename to src/main/java/com/android/tools/r8/dex/code/DexDivIntLit8.java index 31fd0e60..0626aa4 100644 --- a/src/main/java/com/android/tools/r8/code/DivIntLit8.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexDivIntLit8.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class DivIntLit8 extends Format22b { +public class DexDivIntLit8 extends DexFormat22b { public static final int OPCODE = 0xdb; public static final String NAME = "DivIntLit8"; public static final String SMALI_NAME = "div-int/lit8"; - DivIntLit8(int high, BytecodeStream stream) { + DexDivIntLit8(int high, BytecodeStream stream) { super(high, stream); } - public DivIntLit8(int dest, int left, int constant) { + public DexDivIntLit8(int dest, int left, int constant) { super(dest, left, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/DivLong.java b/src/main/java/com/android/tools/r8/dex/code/DexDivLong.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/DivLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexDivLong.java index 271dd04..260be18 100644 --- a/src/main/java/com/android/tools/r8/code/DivLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexDivLong.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class DivLong extends Format23x { + +public class DexDivLong extends DexFormat23x { public static final int OPCODE = 0x9e; public static final String NAME = "DivLong"; public static final String SMALI_NAME = "div-long"; - DivLong(int high, BytecodeStream stream) { + DexDivLong(int high, BytecodeStream stream) { super(high, stream); } - public DivLong(int dest, int left, int right) { + public DexDivLong(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/DivLong2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexDivLong2Addr.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/DivLong2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexDivLong2Addr.java index 40f0946..b36326d 100644 --- a/src/main/java/com/android/tools/r8/code/DivLong2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexDivLong2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class DivLong2Addr extends Format12x { +public class DexDivLong2Addr extends DexFormat12x { public static final int OPCODE = 0xbe; public static final String NAME = "DivLong2Addr"; public static final String SMALI_NAME = "div-long/2addr"; - DivLong2Addr(int high, BytecodeStream stream) { + DexDivLong2Addr(int high, BytecodeStream stream) { super(high, stream); } - public DivLong2Addr(int left, int right) { + public DexDivLong2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/DoubleToFloat.java b/src/main/java/com/android/tools/r8/dex/code/DexDoubleToFloat.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/DoubleToFloat.java rename to src/main/java/com/android/tools/r8/dex/code/DexDoubleToFloat.java index 07b8ab6..008c565 100644 --- a/src/main/java/com/android/tools/r8/code/DoubleToFloat.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexDoubleToFloat.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class DoubleToFloat extends Format12x { +public class DexDoubleToFloat extends DexFormat12x { public static final int OPCODE = 0x8c; public static final String NAME = "DoubleToFloat"; public static final String SMALI_NAME = "double-to-float"; - DoubleToFloat(int high, BytecodeStream stream) { + DexDoubleToFloat(int high, BytecodeStream stream) { super(high, stream); } - public DoubleToFloat(int dest, int source) { + public DexDoubleToFloat(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/DoubleToInt.java b/src/main/java/com/android/tools/r8/dex/code/DexDoubleToInt.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/DoubleToInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexDoubleToInt.java index 6d8f506..99debd4 100644 --- a/src/main/java/com/android/tools/r8/code/DoubleToInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexDoubleToInt.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class DoubleToInt extends Format12x { + +public class DexDoubleToInt extends DexFormat12x { public static final int OPCODE = 0x8a; public static final String NAME = "DoubleToInt"; public static final String SMALI_NAME = "doubleto-int"; - DoubleToInt(int high, BytecodeStream stream) { + DexDoubleToInt(int high, BytecodeStream stream) { super(high, stream); } - public DoubleToInt(int dest, int source) { + public DexDoubleToInt(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/DoubleToLong.java b/src/main/java/com/android/tools/r8/dex/code/DexDoubleToLong.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/DoubleToLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexDoubleToLong.java index d9fa0c5..0ea8942 100644 --- a/src/main/java/com/android/tools/r8/code/DoubleToLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexDoubleToLong.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class DoubleToLong extends Format12x { + +public class DexDoubleToLong extends DexFormat12x { public static final int OPCODE = 0x8b; public static final String NAME = "DoubleToLong"; public static final String SMALI_NAME = "double-to-long"; - DoubleToLong(int high, BytecodeStream stream) { + DexDoubleToLong(int high, BytecodeStream stream) { super(high, stream); } - public DoubleToLong(int dest, int source) { + public DexDoubleToLong(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/FillArrayData.java b/src/main/java/com/android/tools/r8/dex/code/DexFillArrayData.java similarity index 85% rename from src/main/java/com/android/tools/r8/code/FillArrayData.java rename to src/main/java/com/android/tools/r8/dex/code/DexFillArrayData.java index a49a31d..de478d7 100644 --- a/src/main/java/com/android/tools/r8/code/FillArrayData.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFillArrayData.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; import com.android.tools.r8.naming.ClassNameMapper; -public class FillArrayData extends Format31t { +public class DexFillArrayData extends DexFormat31t { public static final int OPCODE = 0x26; public static final String NAME = "FillArrayData"; public static final String SMALI_NAME = "fill-array-data"; - FillArrayData(int high, BytecodeStream stream) { + DexFillArrayData(int high, BytecodeStream stream) { super(high, stream); } - public FillArrayData(int value) { + public DexFillArrayData(int value) { super(value, -1); }
diff --git a/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java b/src/main/java/com/android/tools/r8/dex/code/DexFillArrayDataPayload.java similarity index 85% rename from src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java rename to src/main/java/com/android/tools/r8/dex/code/DexFillArrayDataPayload.java index cab0270..11b34be 100644 --- a/src/main/java/com/android/tools/r8/code/FillArrayDataPayload.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFillArrayDataPayload.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.GraphLens; import com.android.tools.r8.graph.ObjectToOffsetMapping; @@ -15,17 +15,17 @@ import java.nio.ShortBuffer; import java.util.Arrays; -public class FillArrayDataPayload extends Nop { +public class DexFillArrayDataPayload extends DexNop { public final int element_width; public final long size; public final short[] data; - private static void specify(StructuralSpecification<FillArrayDataPayload, ?> spec) { + private static void specify(StructuralSpecification<DexFillArrayDataPayload, ?> spec) { spec.withInt(i -> i.element_width).withLong(i -> i.size).withShortArray(i -> i.data); } - FillArrayDataPayload(int high, BytecodeStream stream) { + DexFillArrayDataPayload(int high, BytecodeStream stream) { super(high, stream); element_width = read16BitValue(stream); size = read32BitValue(stream); @@ -39,7 +39,7 @@ } } - public FillArrayDataPayload(int element_width, long size, short[] data) { + public DexFillArrayDataPayload(int element_width, long size, short[] data) { this.element_width = element_width; this.size = size; this.data = data; @@ -57,7 +57,7 @@ GraphLens graphLens, ObjectToOffsetMapping mapping, LensCodeRewriterUtils rewriter) { - writeFirst(3, dest); // Pseudo-opcode = 0x0300 + writeFirst(3, dest); // Pseudo-opcode = 0x0300 write16BitValue(element_width, dest); write32BitValue(size, dest); for (short datum : data) { @@ -66,8 +66,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (FillArrayDataPayload) other, FillArrayDataPayload::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFillArrayDataPayload) other, DexFillArrayDataPayload::specify); } @Override @@ -86,8 +86,12 @@ @Override public String toString(ClassNameMapper naming) { - return super.toString(naming) + "[FillArrayPayload], " + - "width: " + element_width + ", size: " + size; + return super.toString(naming) + + "[FillArrayPayload], " + + "width: " + + element_width + + ", size: " + + size; } @Override
diff --git a/src/main/java/com/android/tools/r8/code/FilledNewArray.java b/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java similarity index 84% rename from src/main/java/com/android/tools/r8/code/FilledNewArray.java rename to src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java index 5198876..add1531 100644 --- a/src/main/java/com/android/tools/r8/code/FilledNewArray.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.DexType; @@ -13,17 +13,17 @@ import com.android.tools.r8.ir.conversion.LensCodeRewriterUtils; import java.nio.ShortBuffer; -public class FilledNewArray extends Format35c<DexType> { +public class DexFilledNewArray extends DexFormat35c<DexType> { public static final int OPCODE = 0x24; public static final String NAME = "FilledNewArray"; public static final String SMALI_NAME = "filled-new-array"; - FilledNewArray(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexFilledNewArray(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getTypeMap()); } - public FilledNewArray(int size, DexType type, int v0, int v1, int v2, int v3, int v4) { + public DexFilledNewArray(int size, DexType type, int v0, int v1, int v2, int v3, int v4) { super(size, type, v0, v1, v2, v3, v4); } @@ -58,7 +58,7 @@ @Override public void buildIR(IRBuilder builder) { - builder.addInvokeNewArray(getType(), A, new int[]{C, D, E, F, G}); + builder.addInvokeNewArray(getType(), A, new int[] {C, D, E, F, G}); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/FilledNewArrayRange.java b/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArrayRange.java similarity index 87% rename from src/main/java/com/android/tools/r8/code/FilledNewArrayRange.java rename to src/main/java/com/android/tools/r8/dex/code/DexFilledNewArrayRange.java index de651f5..c5938dc 100644 --- a/src/main/java/com/android/tools/r8/code/FilledNewArrayRange.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArrayRange.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.DexType; @@ -13,17 +13,17 @@ import com.android.tools.r8.ir.conversion.LensCodeRewriterUtils; import java.nio.ShortBuffer; -public class FilledNewArrayRange extends Format3rc<DexType> { +public class DexFilledNewArrayRange extends DexFormat3rc<DexType> { public static final int OPCODE = 0x25; public static final String NAME = "FilledNewArrayRange"; public static final String SMALI_NAME = "filled-new-array/range"; - FilledNewArrayRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexFilledNewArrayRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getTypeMap()); } - public FilledNewArrayRange(int firstContentRegister, int size, DexType type) { + public DexFilledNewArrayRange(int firstContentRegister, int size, DexType type) { super(firstContentRegister, size, type); }
diff --git a/src/main/java/com/android/tools/r8/code/FloatToDouble.java b/src/main/java/com/android/tools/r8/dex/code/DexFloatToDouble.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/FloatToDouble.java rename to src/main/java/com/android/tools/r8/dex/code/DexFloatToDouble.java index 5b11258..8536b7e 100644 --- a/src/main/java/com/android/tools/r8/code/FloatToDouble.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFloatToDouble.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class FloatToDouble extends Format12x { +public class DexFloatToDouble extends DexFormat12x { public static final int OPCODE = 0x89; public static final String NAME = "FloatToDouble"; public static final String SMALI_NAME = "float-to-double"; - FloatToDouble(int high, BytecodeStream stream) { + DexFloatToDouble(int high, BytecodeStream stream) { super(high, stream); } - public FloatToDouble(int dest, int source) { + public DexFloatToDouble(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/FloatToInt.java b/src/main/java/com/android/tools/r8/dex/code/DexFloatToInt.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/FloatToInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexFloatToInt.java index d0d706f..cf95583 100644 --- a/src/main/java/com/android/tools/r8/code/FloatToInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFloatToInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class FloatToInt extends Format12x { +public class DexFloatToInt extends DexFormat12x { public static final int OPCODE = 0x87; public static final String NAME = "FloatToInt"; public static final String SMALI_NAME = "float-to-int"; - FloatToInt(int high, BytecodeStream stream) { + DexFloatToInt(int high, BytecodeStream stream) { super(high, stream); } - public FloatToInt(int dest, int source) { + public DexFloatToInt(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/FloatToLong.java b/src/main/java/com/android/tools/r8/dex/code/DexFloatToLong.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/FloatToLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexFloatToLong.java index 82346b0..3c7d3b4 100644 --- a/src/main/java/com/android/tools/r8/code/FloatToLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFloatToLong.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class FloatToLong extends Format12x { + +public class DexFloatToLong extends DexFormat12x { public static final int OPCODE = 0x88; public static final String NAME = "FloatToLong"; public static final String SMALI_NAME = "float-to-long"; - FloatToLong(int high, BytecodeStream stream) { + DexFloatToLong(int high, BytecodeStream stream) { super(high, stream); } - public FloatToLong(int dest, int source) { + public DexFloatToLong(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/Format10t.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat10t.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/Format10t.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat10t.java index 9b2b11c..dbbecdb 100644 --- a/src/main/java/com/android/tools/r8/code/Format10t.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat10t.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.GraphLens; @@ -12,18 +12,18 @@ import com.android.tools.r8.utils.structural.CompareToVisitor; import java.nio.ShortBuffer; -abstract class Format10t extends Base1Format { +abstract class DexFormat10t extends DexBase1Format { public /* offset */ byte AA; // +AA | op - Format10t(int high, BytecodeStream stream) { + DexFormat10t(int high, BytecodeStream stream) { super(stream); // AA is an offset, so convert to signed. AA = (byte) high; } - protected Format10t(int AA) { + protected DexFormat10t(int AA) { assert Byte.MIN_VALUE <= AA && AA <= Byte.MAX_VALUE; this.AA = (byte) AA; } @@ -44,8 +44,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visitInt(AA, ((Format10t) other).AA); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visitInt(AA, ((DexFormat10t) other).AA); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format10x.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat10x.java similarity index 87% rename from src/main/java/com/android/tools/r8/code/Format10x.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat10x.java index bc8feed..72bfaee 100644 --- a/src/main/java/com/android/tools/r8/code/Format10x.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat10x.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.GraphLens; @@ -11,16 +11,15 @@ import com.android.tools.r8.naming.ClassNameMapper; import java.nio.ShortBuffer; -abstract class Format10x extends Base1Format { +abstract class DexFormat10x extends DexBase1Format { // øø | op - Format10x(int high, BytecodeStream stream) { + DexFormat10x(int high, BytecodeStream stream) { // Intentionally left empty. super(stream); } - protected Format10x() { - } + protected DexFormat10x() {} @Override public void write(
diff --git a/src/main/java/com/android/tools/r8/code/Format11n.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat11n.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/Format11n.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat11n.java index 27c0d27..5010e51 100644 --- a/src/main/java/com/android/tools/r8/code/Format11n.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat11n.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -14,16 +14,16 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -abstract class Format11n extends Base1Format { +abstract class DexFormat11n extends DexBase1Format { public final byte A, B; - private static void specify(StructuralSpecification<Format11n, ?> spec) { + private static void specify(StructuralSpecification<DexFormat11n, ?> spec) { spec.withInt(i -> i.A).withInt(i -> i.B); } // #+B | vA | op - /*package*/ Format11n(int high, BytecodeStream stream) { + /*package*/ DexFormat11n(int high, BytecodeStream stream) { super(stream); A = (byte) (high & 0xf); // Sign extend 4bit value. @@ -35,7 +35,7 @@ } } - /*package*/ Format11n(int A, int B) { + /*package*/ DexFormat11n(int A, int B) { assert 0 <= A && A <= Constants.U4BIT_MAX; assert Constants.S4BIT_MIN <= B && B <= Constants.S4BIT_MAX; this.A = (byte) A; @@ -58,8 +58,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format11n) other, Format11n::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat11n) other, DexFormat11n::specify); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format11x.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat11x.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/Format11x.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat11x.java index 3cc3b73..d9b64d5 100644 --- a/src/main/java/com/android/tools/r8/code/Format11x.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat11x.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -13,17 +13,17 @@ import com.android.tools.r8.utils.structural.CompareToVisitor; import java.nio.ShortBuffer; -abstract class Format11x extends Base1Format { +abstract class DexFormat11x extends DexBase1Format { public final short AA; // vAA | op - Format11x(int high, BytecodeStream stream) { + DexFormat11x(int high, BytecodeStream stream) { super(stream); AA = (short) high; } - protected Format11x(int AA) { + protected DexFormat11x(int AA) { assert 0 <= AA && AA <= Constants.U8BIT_MAX; this.AA = (short) AA; } @@ -44,8 +44,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visitInt(AA, ((Format11x) other).AA); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visitInt(AA, ((DexFormat11x) other).AA); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format12x.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat12x.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/Format12x.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat12x.java index f3b80aa..74c0f70 100644 --- a/src/main/java/com/android/tools/r8/code/Format12x.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat12x.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -14,22 +14,22 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -abstract class Format12x extends Base1Format { +abstract class DexFormat12x extends DexBase1Format { public final byte A, B; - private static void specify(StructuralSpecification<Format12x, ?> spec) { + private static void specify(StructuralSpecification<DexFormat12x, ?> spec) { spec.withInt(i -> i.A).withInt(i -> i.B); } // vB | vA | op - Format12x(int high, BytecodeStream stream) { + DexFormat12x(int high, BytecodeStream stream) { super(stream); A = (byte) (high & 0xF); B = (byte) ((high >> 4) & 0xF); } - Format12x(int A, int B) { + DexFormat12x(int A, int B) { assert 0 <= A && A <= Constants.U4BIT_MAX; assert 0 <= B && B <= Constants.U4BIT_MAX; this.A = (byte) A; @@ -52,11 +52,10 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format12x) other, Format12x::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat12x) other, DexFormat12x::specify); } - @Override public String toString(ClassNameMapper naming) { return formatString("v" + A + ", v" + B);
diff --git a/src/main/java/com/android/tools/r8/code/Format20t.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat20t.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/Format20t.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat20t.java index c9cd18b..da4183d 100644 --- a/src/main/java/com/android/tools/r8/code/Format20t.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat20t.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.GraphLens; @@ -12,17 +12,17 @@ import com.android.tools.r8.utils.structural.CompareToVisitor; import java.nio.ShortBuffer; -abstract class Format20t extends Base2Format { +abstract class DexFormat20t extends DexBase2Format { public /* offset */ short AAAA; // øø | op | +AAAA - Format20t(int high, BytecodeStream stream) { + DexFormat20t(int high, BytecodeStream stream) { super(stream); AAAA = readSigned16BitValue(stream); } - protected Format20t(int AAAA) { + protected DexFormat20t(int AAAA) { assert Short.MIN_VALUE <= AAAA && AAAA <= Short.MAX_VALUE; this.AAAA = (short) AAAA; } @@ -44,8 +44,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visitInt(AAAA, ((Format20t) other).AAAA); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visitInt(AAAA, ((DexFormat20t) other).AAAA); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format21c.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat21c.java similarity index 73% rename from src/main/java/com/android/tools/r8/code/Format21c.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat21c.java index 9416be7..d942119 100644 --- a/src/main/java/com/android/tools/r8/code/Format21c.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat21c.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.graph.IndexedDexItem; @@ -10,19 +10,19 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.util.function.BiPredicate; -abstract class Format21c<T extends IndexedDexItem> extends Base2Format { +abstract class DexFormat21c<T extends IndexedDexItem> extends DexBase2Format { public final short AA; public T BBBB; // AA | op | [type|field|string]@BBBB - Format21c(int high, BytecodeStream stream, T[] map) { + DexFormat21c(int high, BytecodeStream stream, T[] map) { super(stream); AA = (short) high; BBBB = map[read16BitValue(stream)]; } - protected Format21c(int AA, T BBBB) { + protected DexFormat21c(int AA, T BBBB) { assert 0 <= AA && AA <= Constants.U8BIT_MAX; this.AA = (short) AA; this.BBBB = BBBB; @@ -35,14 +35,14 @@ @SuppressWarnings("unchecked") @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { return visitor.visit( this, - (Format21c<T>) other, + (DexFormat21c<T>) other, spec -> spec.withInt(i -> i.AA).withSpec(this::internalSubSpecify)); } - abstract void internalSubSpecify(StructuralSpecification<Format21c<T>, ?> spec); + abstract void internalSubSpecify(StructuralSpecification<DexFormat21c<T>, ?> spec); @Override public String toString(ClassNameMapper naming) { @@ -57,11 +57,12 @@ } @Override - public boolean equals(Instruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { + public boolean equals( + DexInstruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { if (other == null || this.getClass() != other.getClass()) { return false; } - Format21c<?> o = (Format21c<?>) other; + DexFormat21c<?> o = (DexFormat21c<?>) other; return o.AA == AA && equality.test(BBBB, o.BBBB); } }
diff --git a/src/main/java/com/android/tools/r8/code/Format21h.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat21h.java similarity index 78% rename from src/main/java/com/android/tools/r8/code/Format21h.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat21h.java index 36b9174..e9ea003 100644 --- a/src/main/java/com/android/tools/r8/code/Format21h.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat21h.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -13,23 +13,23 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -abstract class Format21h extends Base2Format { +abstract class DexFormat21h extends DexBase2Format { public final short AA; public final char BBBB; - private static void specify(StructuralSpecification<Format21h, ?> spec) { + private static void specify(StructuralSpecification<DexFormat21h, ?> spec) { spec.withInt(i -> i.AA).withInt(i -> i.BBBB); } // AA | op | BBBB0000[00000000] - /*package*/ Format21h(int high, BytecodeStream stream) { + /*package*/ DexFormat21h(int high, BytecodeStream stream) { super(stream); AA = (short) high; BBBB = read16BitValue(stream); } - /*package*/ Format21h(int AA, int BBBB) { + /*package*/ DexFormat21h(int AA, int BBBB) { assert 0 <= AA && AA <= Constants.U8BIT_MAX; assert 0 <= BBBB && BBBB <= Constants.U16BIT_MAX; this.AA = (short) AA; @@ -53,8 +53,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format21h) other, Format21h::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat21h) other, DexFormat21h::specify); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format21s.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat21s.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/Format21s.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat21s.java index 550fdd4..d38324f 100644 --- a/src/main/java/com/android/tools/r8/code/Format21s.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat21s.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -15,23 +15,23 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -abstract class Format21s extends Base2Format { +abstract class DexFormat21s extends DexBase2Format { public final short AA; public final short BBBB; - private static void specify(StructuralSpecification<Format21s, ?> spec) { + private static void specify(StructuralSpecification<DexFormat21s, ?> spec) { spec.withInt(i -> i.AA).withInt(i -> i.BBBB); } // AA | op | #+BBBB - /*package*/ Format21s(int high, BytecodeStream stream) { + /*package*/ DexFormat21s(int high, BytecodeStream stream) { super(stream); AA = (short) high; BBBB = readSigned16BitValue(stream); } - /*package*/ Format21s(int AA, int BBBB) { + /*package*/ DexFormat21s(int AA, int BBBB) { assert Short.MIN_VALUE <= BBBB && BBBB <= Short.MAX_VALUE; assert 0 <= AA && AA <= Constants.U8BIT_MAX; this.AA = (short) AA; @@ -55,8 +55,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format21s) other, Format21s::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat21s) other, DexFormat21s::specify); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format21t.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat21t.java similarity index 84% rename from src/main/java/com/android/tools/r8/code/Format21t.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat21t.java index bde930d..877808b 100644 --- a/src/main/java/com/android/tools/r8/code/Format21t.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat21t.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -17,23 +17,23 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -public abstract class Format21t extends Base2Format { +public abstract class DexFormat21t extends DexBase2Format { public final short AA; public /* offset */ short BBBB; - private static void specify(StructuralSpecification<Format21t, ?> spec) { + private static void specify(StructuralSpecification<DexFormat21t, ?> spec) { spec.withInt(i -> i.AA).withInt(i -> i.BBBB); } // AA | op | +BBBB - Format21t(int high, BytecodeStream stream) { + DexFormat21t(int high, BytecodeStream stream) { super(stream); AA = (short) high; BBBB = readSigned16BitValue(stream); } - Format21t(int register, int offset) { + DexFormat21t(int register, int offset) { assert Short.MIN_VALUE <= offset && offset <= Short.MAX_VALUE; assert 0 <= register && register <= Constants.U8BIT_MAX; AA = (short) register; @@ -57,8 +57,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format21t) other, Format21t::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat21t) other, DexFormat21t::specify); } public abstract Type getType(); @@ -67,7 +67,7 @@ @Override public int[] getTargets() { - return new int[]{BBBB, getSize()}; + return new int[] {BBBB, getSize()}; } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format22b.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat22b.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/Format22b.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat22b.java index 6f79b50..eab6c99 100644 --- a/src/main/java/com/android/tools/r8/code/Format22b.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat22b.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -15,25 +15,25 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -public abstract class Format22b extends Base2Format { +public abstract class DexFormat22b extends DexBase2Format { public final short AA; public final short BB; public final byte CC; - private static void specify(StructuralSpecification<Format22b, ?> spec) { + private static void specify(StructuralSpecification<DexFormat22b, ?> spec) { spec.withInt(i -> i.AA).withInt(i -> i.BB).withInt(i -> i.CC); } // vAA | op | #+CC | VBB - /*package*/ Format22b(int high, BytecodeStream stream) { + /*package*/ DexFormat22b(int high, BytecodeStream stream) { super(stream); AA = (short) high; CC = readSigned8BitValue(stream); BB = read8BitValue(stream); } - /*package*/ Format22b(int AA, int BB, int CC) { + /*package*/ DexFormat22b(int AA, int BB, int CC) { assert 0 <= AA && AA <= Constants.U8BIT_MAX; assert 0 <= BB && BB <= Constants.U8BIT_MAX; assert Byte.MIN_VALUE <= CC && CC <= Byte.MAX_VALUE; @@ -59,8 +59,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format22b) other, Format22b::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat22b) other, DexFormat22b::specify); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format22c.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat22c.java similarity index 71% rename from src/main/java/com/android/tools/r8/code/Format22c.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat22c.java index 536ec65..d406aad 100644 --- a/src/main/java/com/android/tools/r8/code/Format22c.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat22c.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.graph.DexReference; @@ -11,25 +11,26 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.util.function.BiPredicate; -public abstract class Format22c<T extends DexReference> extends Base2Format { +public abstract class DexFormat22c<T extends DexReference> extends DexBase2Format { public final byte A; public final byte B; public T CCCC; - private static void specify(StructuralSpecification<Format22c<? extends DexReference>, ?> spec) { + private static void specify( + StructuralSpecification<DexFormat22c<? extends DexReference>, ?> spec) { spec.withInt(i -> i.A).withInt(i -> i.B).withDexReference(i -> i.CCCC); } // vB | vA | op | [type|field]@CCCC - /*package*/ Format22c(int high, BytecodeStream stream, T[] map) { + /*package*/ DexFormat22c(int high, BytecodeStream stream, T[] map) { super(stream); A = (byte) (high & 0xf); B = (byte) ((high >> 4) & 0xf); CCCC = map[read16BitValue(stream)]; } - /*package*/ Format22c(int A, int B, T CCCC) { + /*package*/ DexFormat22c(int A, int B, T CCCC) { assert 0 <= A && A <= Constants.U4BIT_MAX; assert 0 <= B && B <= Constants.U4BIT_MAX; this.A = (byte) A; @@ -43,8 +44,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format22c<? extends DexReference>) other, Format22c::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat22c<? extends DexReference>) other, DexFormat22c::specify); } @Override @@ -60,11 +61,12 @@ } @Override - public boolean equals(Instruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { + public boolean equals( + DexInstruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { if (other == null || this.getClass() != other.getClass()) { return false; } - Format22c<?> o = (Format22c<?>) other; + DexFormat22c<?> o = (DexFormat22c<?>) other; return o.A == A && o.B == B && equality.test(CCCC, o.CCCC); } }
diff --git a/src/main/java/com/android/tools/r8/code/Format22s.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat22s.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/Format22s.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat22s.java index efa14d2..7c2f81d 100644 --- a/src/main/java/com/android/tools/r8/code/Format22s.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat22s.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -15,25 +15,25 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -public abstract class Format22s extends Base2Format { +public abstract class DexFormat22s extends DexBase2Format { public final byte A; public final byte B; public final short CCCC; - private static void specify(StructuralSpecification<Format22s, ?> spec) { + private static void specify(StructuralSpecification<DexFormat22s, ?> spec) { spec.withInt(i -> i.A).withInt(i -> i.B).withInt(i -> i.CCCC); } // vB | vA | op | #+CCCC - /*package*/ Format22s(int high, BytecodeStream stream) { + /*package*/ DexFormat22s(int high, BytecodeStream stream) { super(stream); A = (byte) (high & 0xf); B = (byte) ((high >> 4) & 0xf); CCCC = readSigned16BitValue(stream); } - /*package*/ Format22s(int A, int B, int CCCC) { + /*package*/ DexFormat22s(int A, int B, int CCCC) { assert 0 <= A && A <= Constants.U4BIT_MAX; assert 0 <= B && B <= Constants.U4BIT_MAX; assert Short.MIN_VALUE <= CCCC && CCCC <= Short.MAX_VALUE; @@ -59,8 +59,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format22s) other, Format22s::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat22s) other, DexFormat22s::specify); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format22t.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat22t.java similarity index 84% rename from src/main/java/com/android/tools/r8/code/Format22t.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat22t.java index 9688b4e..88d1325 100644 --- a/src/main/java/com/android/tools/r8/code/Format22t.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat22t.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -17,25 +17,25 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -public abstract class Format22t extends Base2Format { +public abstract class DexFormat22t extends DexBase2Format { public final byte A; public final byte B; public /* offset */ short CCCC; - private static void specify(StructuralSpecification<Format22t, ?> spec) { + private static void specify(StructuralSpecification<DexFormat22t, ?> spec) { spec.withInt(i -> i.A).withInt(i -> i.B).withInt(i -> i.CCCC); } // vB | vA | op | +CCCC - Format22t(int high, BytecodeStream stream) { + DexFormat22t(int high, BytecodeStream stream) { super(stream); A = (byte) (high & 0xf); B = (byte) ((high >> 4) & 0xf); CCCC = readSigned16BitValue(stream); } - Format22t(int register1, int register2, int offset) { + DexFormat22t(int register1, int register2, int offset) { assert 0 <= register1 && register1 <= Constants.U4BIT_MAX; assert 0 <= register2 && register2 <= Constants.U4BIT_MAX; assert Short.MIN_VALUE <= offset && offset <= Short.MAX_VALUE; @@ -61,8 +61,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format22t) other, Format22t::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat22t) other, DexFormat22t::specify); } public abstract Type getType(); @@ -71,7 +71,7 @@ @Override public int[] getTargets() { - return new int[]{CCCC, getSize()}; + return new int[] {CCCC, getSize()}; } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format22x.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat22x.java similarity index 77% rename from src/main/java/com/android/tools/r8/code/Format22x.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat22x.java index 1d9d8ba..0db6f83 100644 --- a/src/main/java/com/android/tools/r8/code/Format22x.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat22x.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -14,23 +14,23 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -abstract class Format22x extends Base2Format { +abstract class DexFormat22x extends DexBase2Format { public final short AA; public final char BBBB; - private static void specify(StructuralSpecification<Format22x, ?> spec) { + private static void specify(StructuralSpecification<DexFormat22x, ?> spec) { spec.withInt(i -> i.AA).withInt(i -> i.BBBB); } // AA | op | vBBBB - Format22x(int high, BytecodeStream stream) { + DexFormat22x(int high, BytecodeStream stream) { super(stream); AA = (short) high; BBBB = read16BitValue(stream); } - Format22x(int dest, int src) { + DexFormat22x(int dest, int src) { assert 0 <= dest && dest <= Constants.U8BIT_MAX; assert 0 <= src && src <= Constants.U16BIT_MAX; AA = (short) dest; @@ -54,19 +54,18 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format22x) other, Format22x::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat22x) other, DexFormat22x::specify); } - @Override public String toString(ClassNameMapper naming) { - return formatString("v" + AA + ", v" + (int)BBBB); + return formatString("v" + AA + ", v" + (int) BBBB); } @Override public String toSmaliString(ClassNameMapper naming) { - return formatSmaliString("v" + AA + ", v" + (int)BBBB); + return formatSmaliString("v" + AA + ", v" + (int) BBBB); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format23x.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat23x.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/Format23x.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat23x.java index ca3ef80..583cff3 100644 --- a/src/main/java/com/android/tools/r8/code/Format23x.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat23x.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -14,25 +14,25 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -abstract class Format23x extends Base2Format { +abstract class DexFormat23x extends DexBase2Format { public final short AA; public final short BB; public final short CC; - private static void specify(StructuralSpecification<Format23x, ?> spec) { + private static void specify(StructuralSpecification<DexFormat23x, ?> spec) { spec.withInt(i -> i.AA).withInt(i -> i.BB).withInt(i -> i.CC); } // vAA | op | vCC | vBB - Format23x(int high, BytecodeStream stream) { + DexFormat23x(int high, BytecodeStream stream) { super(stream); AA = (short) high; CC = read8BitValue(stream); BB = read8BitValue(stream); } - Format23x(int AA, int BB, int CC) { + DexFormat23x(int AA, int BB, int CC) { assert 0 <= AA && AA <= Constants.U8BIT_MAX; assert 0 <= BB && BB <= Constants.U8BIT_MAX; assert 0 <= CC && CC <= Constants.U8BIT_MAX; @@ -58,8 +58,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format23x) other, Format23x::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat23x) other, DexFormat23x::specify); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format30t.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat30t.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/Format30t.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat30t.java index ba986cc..b1372da 100644 --- a/src/main/java/com/android/tools/r8/code/Format30t.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat30t.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.GraphLens; @@ -12,17 +12,17 @@ import com.android.tools.r8.utils.structural.CompareToVisitor; import java.nio.ShortBuffer; -abstract class Format30t extends Base3Format { +abstract class DexFormat30t extends DexBase3Format { public /* offset */ int AAAAAAAA; // øø | op | AAAAlo | AAAAhi - Format30t(int high, BytecodeStream stream) { + DexFormat30t(int high, BytecodeStream stream) { super(stream); AAAAAAAA = readSigned32BitValue(stream); } - protected Format30t(int AAAAAAAA) { + protected DexFormat30t(int AAAAAAAA) { this.AAAAAAAA = AAAAAAAA; } @@ -43,8 +43,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visitInt(AAAAAAAA, ((Format30t) other).AAAAAAAA); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visitInt(AAAAAAAA, ((DexFormat30t) other).AAAAAAAA); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format31c.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat31c.java similarity index 78% rename from src/main/java/com/android/tools/r8/code/Format31c.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat31c.java index 6664662..b964ee3 100644 --- a/src/main/java/com/android/tools/r8/code/Format31c.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat31c.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import static com.android.tools.r8.dex.Constants.U8BIT_MAX; @@ -18,23 +18,23 @@ import java.nio.ShortBuffer; import java.util.function.BiPredicate; -abstract class Format31c extends Base3Format { +abstract class DexFormat31c extends DexBase3Format { public final short AA; public DexString BBBBBBBB; - private static void specify(StructuralSpecification<Format31c, ?> spec) { + private static void specify(StructuralSpecification<DexFormat31c, ?> spec) { spec.withInt(i -> i.AA).withItem(i -> i.BBBBBBBB); } // vAA | op | string@BBBBlo | string@#+BBBBhi - Format31c(int high, BytecodeStream stream, DexString[] map) { + DexFormat31c(int high, BytecodeStream stream, DexString[] map) { super(stream); AA = (short) high; BBBBBBBB = map[(int) read32BitValue(stream)]; } - Format31c(int AA, DexString BBBBBBBB) { + DexFormat31c(int AA, DexString BBBBBBBB) { assert 0 <= AA && AA <= U8BIT_MAX; this.AA = (short) AA; this.BBBBBBBB = BBBBBBBB; @@ -57,8 +57,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format31c) other, Format31c::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat31c) other, DexFormat31c::specify); } @Override @@ -77,11 +77,12 @@ } @Override - public boolean equals(Instruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { + public boolean equals( + DexInstruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { if (other == null || (this.getClass() != other.getClass())) { return false; } - Format31c o = (Format31c) other; + DexFormat31c o = (DexFormat31c) other; return o.AA == AA && equality.test(BBBBBBBB, o.BBBBBBBB); } }
diff --git a/src/main/java/com/android/tools/r8/code/Format31i.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat31i.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/Format31i.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat31i.java index c2fa1b1..9014f21 100644 --- a/src/main/java/com/android/tools/r8/code/Format31i.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat31i.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -14,23 +14,23 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -abstract class Format31i extends Base3Format { +abstract class DexFormat31i extends DexBase3Format { public final short AA; public final int BBBBBBBB; - private static void specify(StructuralSpecification<Format31i, ?> spec) { + private static void specify(StructuralSpecification<DexFormat31i, ?> spec) { spec.withInt(i -> i.AA).withInt(i -> i.BBBBBBBB); } // vAA | op | #+BBBBlo | #+BBBBhi - /*package*/ Format31i(int high, BytecodeStream stream) { + /*package*/ DexFormat31i(int high, BytecodeStream stream) { super(stream); AA = (short) high; BBBBBBBB = readSigned32BitValue(stream); } - /*package*/ Format31i(int AA, int BBBBBBBB) { + /*package*/ DexFormat31i(int AA, int BBBBBBBB) { assert 0 <= AA && AA <= Constants.U8BIT_MAX; this.AA = (short) AA; this.BBBBBBBB = BBBBBBBB; @@ -53,8 +53,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format31i) other, Format31i::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat31i) other, DexFormat31i::specify); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format31t.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat31t.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/Format31t.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat31t.java index f85aca6..e9f1ae5 100644 --- a/src/main/java/com/android/tools/r8/code/Format31t.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat31t.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -14,23 +14,23 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -public abstract class Format31t extends Base3Format { +public abstract class DexFormat31t extends DexBase3Format { public final short AA; protected /* offset */ int BBBBBBBB; - private static void specify(StructuralSpecification<Format31t, ?> spec) { + private static void specify(StructuralSpecification<DexFormat31t, ?> spec) { spec.withInt(i -> i.AA).withInt(i -> i.BBBBBBBB); } // vAA | op | +BBBBlo | +BBBBhi - Format31t(int high, BytecodeStream stream) { + DexFormat31t(int high, BytecodeStream stream) { super(stream); AA = (short) high; BBBBBBBB = readSigned32BitValue(stream); } - Format31t(int register, int payloadOffset) { + DexFormat31t(int register, int payloadOffset) { assert 0 <= register && register <= Constants.U8BIT_MAX; AA = (short) register; BBBBBBBB = payloadOffset; @@ -68,8 +68,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format31t) other, Format31t::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat31t) other, DexFormat31t::specify); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format32x.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat32x.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/Format32x.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat32x.java index c637383..c854dad 100644 --- a/src/main/java/com/android/tools/r8/code/Format32x.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat32x.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import static com.android.tools.r8.dex.Constants.U16BIT_MAX; @@ -15,23 +15,23 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -abstract class Format32x extends Base3Format { +abstract class DexFormat32x extends DexBase3Format { public final int AAAA; public final int BBBB; - private static void specify(StructuralSpecification<Format32x, ?> spec) { + private static void specify(StructuralSpecification<DexFormat32x, ?> spec) { spec.withInt(i -> i.AAAA).withInt(i -> i.BBBB); } // øø | op | AAAA | BBBB - Format32x(int high, BytecodeStream stream) { + DexFormat32x(int high, BytecodeStream stream) { super(stream); AAAA = read16BitValue(stream); BBBB = read16BitValue(stream); } - Format32x(int dest, int src) { + DexFormat32x(int dest, int src) { assert 0 <= dest && dest <= U16BIT_MAX; assert 0 <= src && src <= U16BIT_MAX; AAAA = dest; @@ -56,8 +56,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format32x) other, Format32x::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat32x) other, DexFormat32x::specify); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format35c.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat35c.java similarity index 77% rename from src/main/java/com/android/tools/r8/code/Format35c.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat35c.java index e5d2489..78a5323 100644 --- a/src/main/java/com/android/tools/r8/code/Format35c.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat35c.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.graph.IndexedDexItem; @@ -11,7 +11,8 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.util.function.BiPredicate; -public abstract class Format35c<T extends IndexedDexItem & StructuralItem<T>> extends Base3Format { +public abstract class DexFormat35c<T extends IndexedDexItem & StructuralItem<T>> + extends DexBase3Format { public final byte A; public final byte C; @@ -22,7 +23,7 @@ public T BBBB; private static <T extends IndexedDexItem & StructuralItem<T>> void specify( - StructuralSpecification<Format35c<T>, ?> spec) { + StructuralSpecification<DexFormat35c<T>, ?> spec) { spec.withInt(i -> i.A) .withInt(i -> i.C) .withInt(i -> i.D) @@ -33,7 +34,7 @@ } // A | G | op | BBBB | F | E | D | C - Format35c(int high, BytecodeStream stream, T[] map) { + DexFormat35c(int high, BytecodeStream stream, T[] map) { super(stream); G = (byte) (high & 0xf); A = (byte) ((high >> 4) & 0xf); @@ -46,7 +47,7 @@ D = (byte) ((next >> 4) & 0xf); } - Format35c(int A, T BBBB, int C, int D, int E, int F, int G) { + DexFormat35c(int A, T BBBB, int C, int D, int E, int F, int G) { assert 0 <= A && A <= Constants.U4BIT_MAX; assert 0 <= C && C <= Constants.U4BIT_MAX; assert 0 <= D && D <= Constants.U4BIT_MAX; @@ -64,19 +65,19 @@ @Override public final int hashCode() { - return ((BBBB.hashCode() << 24) | (A << 20) | (C << 16) | (D << 12) | (E << 8) | (F << 4) - | G) ^ getClass().hashCode(); + return ((BBBB.hashCode() << 24) | (A << 20) | (C << 16) | (D << 12) | (E << 8) | (F << 4) | G) + ^ getClass().hashCode(); } @SuppressWarnings("unchecked") @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format35c<T>) other, Format35c::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat35c<T>) other, DexFormat35c::specify); } private void appendRegisterArguments(StringBuilder builder, String separator) { builder.append("{ "); - int[] values = new int[]{C, D, E, F, G}; + int[] values = new int[] {C, D, E, F, G}; for (int i = 0; i < A; i++) { if (i != 0) { builder.append(separator); @@ -110,12 +111,18 @@ } @Override - public boolean equals(Instruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { + public boolean equals( + DexInstruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { if (other == null || (this.getClass() != other.getClass())) { return false; } - Format35c o = (Format35c) other; - return o.A == A && o.C == C && o.D == D && o.E == E && o.F == F && o.G == G + DexFormat35c o = (DexFormat35c) other; + return o.A == A + && o.C == C + && o.D == D + && o.E == E + && o.F == F + && o.G == G && equality.test(BBBB, o.BBBB); } }
diff --git a/src/main/java/com/android/tools/r8/code/Format3rc.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat3rc.java similarity index 79% rename from src/main/java/com/android/tools/r8/code/Format3rc.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat3rc.java index 0ceeb4a..01fff36b 100644 --- a/src/main/java/com/android/tools/r8/code/Format3rc.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat3rc.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.graph.IndexedDexItem; @@ -11,26 +11,27 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.util.function.BiPredicate; -public abstract class Format3rc<T extends IndexedDexItem & StructuralItem<T>> extends Base3Format { +public abstract class DexFormat3rc<T extends IndexedDexItem & StructuralItem<T>> + extends DexBase3Format { public final short AA; public final char CCCC; public T BBBB; private static <T extends IndexedDexItem & StructuralItem<T>> void specify( - StructuralSpecification<Format3rc<T>, ?> spec) { + StructuralSpecification<DexFormat3rc<T>, ?> spec) { spec.withInt(i -> i.AA).withInt(i -> i.CCCC).withItem(i -> i.BBBB); } // AA | op | [meth|type]@BBBBB | CCCC - Format3rc(int high, BytecodeStream stream, T[] map) { + DexFormat3rc(int high, BytecodeStream stream, T[] map) { super(stream); this.AA = (short) high; this.BBBB = map[read16BitValue(stream)]; this.CCCC = read16BitValue(stream); } - Format3rc(int firstArgumentRegister, int argumentCount, T dexItem) { + DexFormat3rc(int firstArgumentRegister, int argumentCount, T dexItem) { assert 0 <= firstArgumentRegister && firstArgumentRegister <= Constants.U16BIT_MAX; assert 0 <= argumentCount && argumentCount <= Constants.U8BIT_MAX; this.CCCC = (char) firstArgumentRegister; @@ -49,8 +50,8 @@ @SuppressWarnings("unchecked") @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format3rc<T>) other, Format3rc::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat3rc<T>) other, DexFormat3rc::specify); } private void appendRegisterRange(StringBuilder builder) { @@ -87,11 +88,12 @@ } @Override - public boolean equals(Instruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { + public boolean equals( + DexInstruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { if (other == null || (this.getClass() != other.getClass())) { return false; } - Format3rc<?> o = (Format3rc<?>) other; + DexFormat3rc<?> o = (DexFormat3rc<?>) other; return o.AA == AA && o.CCCC == CCCC && equality.test(BBBB, o.BBBB); } }
diff --git a/src/main/java/com/android/tools/r8/code/Format45cc.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat45cc.java similarity index 90% rename from src/main/java/com/android/tools/r8/code/Format45cc.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat45cc.java index 1542015..58970bd 100644 --- a/src/main/java/com/android/tools/r8/code/Format45cc.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat45cc.java
@@ -1,7 +1,7 @@ // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import static com.android.tools.r8.dex.Constants.U4BIT_MAX; @@ -21,7 +21,7 @@ import java.nio.ShortBuffer; /** Format45cc for instructions of size 4, with 5 registers and 2 constant pool index. */ -public abstract class Format45cc extends Base4Format { +public abstract class DexFormat45cc extends DexBase4Format { public final byte A; public final byte C; @@ -32,7 +32,7 @@ public DexMethod BBBB; public DexProto HHHH; - private static void specify(StructuralSpecification<Format45cc, ?> spec) { + private static void specify(StructuralSpecification<DexFormat45cc, ?> spec) { spec.withInt(i -> i.A) .withInt(i -> i.C) .withInt(i -> i.D) @@ -43,7 +43,7 @@ .withItem(i -> i.HHHH); } - Format45cc(int high, BytecodeStream stream, DexMethod[] methodMap, DexProto[] protoMap) { + DexFormat45cc(int high, BytecodeStream stream, DexMethod[] methodMap, DexProto[] protoMap) { super(stream); G = (byte) (high & 0xf); A = (byte) ((high >> 4) & 0xf); @@ -58,7 +58,7 @@ } // A | G | op | [meth]@BBBB | F | E | D | C | [proto]@HHHH - protected Format45cc(int A, DexMethod BBBB, DexProto HHHH, int C, int D, int E, int F, int G) { + protected DexFormat45cc(int A, DexMethod BBBB, DexProto HHHH, int C, int D, int E, int F, int G) { assert 0 <= A && A <= U4BIT_MAX; assert 0 <= C && C <= U4BIT_MAX; assert 0 <= D && D <= U4BIT_MAX; @@ -89,8 +89,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format45cc) other, Format45cc::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat45cc) other, DexFormat45cc::specify); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Format4rcc.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat4rcc.java similarity index 87% rename from src/main/java/com/android/tools/r8/code/Format4rcc.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat4rcc.java index 4da5b40..f459f21 100644 --- a/src/main/java/com/android/tools/r8/code/Format4rcc.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat4rcc.java
@@ -1,7 +1,7 @@ // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -21,19 +21,19 @@ import java.util.function.BiPredicate; /** Format4rcc for instructions of size 4, with a range of registers and 2 constant pool index. */ -public abstract class Format4rcc extends Base4Format { +public abstract class DexFormat4rcc extends DexBase4Format { public final short AA; public final char CCCC; public DexMethod BBBB; public DexProto HHHH; - private static void specify(StructuralSpecification<Format4rcc, ?> spec) { + private static void specify(StructuralSpecification<DexFormat4rcc, ?> spec) { spec.withInt(i -> i.AA).withInt(i -> i.CCCC).withItem(i -> i.BBBB).withItem(i -> i.HHHH); } // AA | op | [meth]@BBBB | CCCC | [proto]@HHHH - Format4rcc(int high, BytecodeStream stream, DexMethod[] methodMap, DexProto[] protoMap) { + DexFormat4rcc(int high, BytecodeStream stream, DexMethod[] methodMap, DexProto[] protoMap) { super(stream); this.AA = (short) high; this.BBBB = methodMap[read16BitValue(stream)]; @@ -41,7 +41,7 @@ this.HHHH = protoMap[read16BitValue(stream)]; } - Format4rcc(int firstArgumentRegister, int argumentCount, DexMethod method, DexProto proto) { + DexFormat4rcc(int firstArgumentRegister, int argumentCount, DexMethod method, DexProto proto) { assert 0 <= firstArgumentRegister && firstArgumentRegister <= Constants.U16BIT_MAX; assert 0 <= argumentCount && argumentCount <= Constants.U8BIT_MAX; this.CCCC = (char) firstArgumentRegister; @@ -75,8 +75,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format4rcc) other, Format4rcc::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat4rcc) other, DexFormat4rcc::specify); } @Override @@ -125,11 +125,12 @@ } @Override - public boolean equals(Instruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { + public boolean equals( + DexInstruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { if (other == null || (this.getClass() != other.getClass())) { return false; } - Format4rcc o = (Format4rcc) other; + DexFormat4rcc o = (DexFormat4rcc) other; return o.AA == AA && o.CCCC == CCCC && equality.test(BBBB, o.BBBB)
diff --git a/src/main/java/com/android/tools/r8/code/Format51l.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat51l.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/Format51l.java rename to src/main/java/com/android/tools/r8/dex/code/DexFormat51l.java index 1417bf8..438c4fb 100644 --- a/src/main/java/com/android/tools/r8/code/Format51l.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat51l.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.IndexedItemCollection; @@ -14,23 +14,23 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -abstract class Format51l extends Base5Format { +abstract class DexFormat51l extends DexBase5Format { public final short AA; public final long BBBBBBBBBBBBBBBB; - private static void specify(StructuralSpecification<Format51l, ?> spec) { + private static void specify(StructuralSpecification<DexFormat51l, ?> spec) { spec.withInt(i -> i.AA).withLong(i -> i.BBBBBBBBBBBBBBBB); } // AA | op | BBBB | BBBB | BBBB | BBBB - Format51l(int high, BytecodeStream stream) { + DexFormat51l(int high, BytecodeStream stream) { super(stream); AA = (short) high; BBBBBBBBBBBBBBBB = read64BitValue(stream); } - public Format51l(int AA, long BBBBBBBBBBBBBBBB) { + public DexFormat51l(int AA, long BBBBBBBBBBBBBBBB) { assert 0 <= AA && AA <= Constants.U8BIT_MAX; this.AA = (short) AA; this.BBBBBBBBBBBBBBBB = BBBBBBBBBBBBBBBB; @@ -53,8 +53,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (Format51l) other, Format51l::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexFormat51l) other, DexFormat51l::specify); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Goto.java b/src/main/java/com/android/tools/r8/dex/code/DexGoto.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/Goto.java rename to src/main/java/com/android/tools/r8/dex/code/DexGoto.java index fc911ee..6b7c0b2 100644 --- a/src/main/java/com/android/tools/r8/code/Goto.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexGoto.java
@@ -1,21 +1,21 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; -public class Goto extends Format10t { +public class DexGoto extends DexFormat10t { public static final int OPCODE = 0x28; public static final String NAME = "Goto"; public static final String SMALI_NAME = "goto"; - Goto(int high, BytecodeStream stream) { + DexGoto(int high, BytecodeStream stream) { super(high, stream); } - public Goto(int AA) { + public DexGoto(int AA) { super(AA); } @@ -36,7 +36,7 @@ @Override public int[] getTargets() { - return new int[] { AA }; + return new int[] {AA}; } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Goto16.java b/src/main/java/com/android/tools/r8/dex/code/DexGoto16.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/Goto16.java rename to src/main/java/com/android/tools/r8/dex/code/DexGoto16.java index c4cec89..0a41ab6 100644 --- a/src/main/java/com/android/tools/r8/code/Goto16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexGoto16.java
@@ -1,21 +1,21 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; -public class Goto16 extends Format20t { +public class DexGoto16 extends DexFormat20t { public static final int OPCODE = 0x29; public static final String NAME = "Goto16"; public static final String SMALI_NAME = "goto/16"; - Goto16(int high, BytecodeStream stream) { + DexGoto16(int high, BytecodeStream stream) { super(high, stream); } - public Goto16(int AAAA) { + public DexGoto16(int AAAA) { super(AAAA); } @@ -36,7 +36,7 @@ @Override public int[] getTargets() { - return new int[]{AAAA}; + return new int[] {AAAA}; } @Override
diff --git a/src/main/java/com/android/tools/r8/code/Goto32.java b/src/main/java/com/android/tools/r8/dex/code/DexGoto32.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/Goto32.java rename to src/main/java/com/android/tools/r8/dex/code/DexGoto32.java index 3a4c6b8..bfa83cc 100644 --- a/src/main/java/com/android/tools/r8/code/Goto32.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexGoto32.java
@@ -1,21 +1,21 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; -public class Goto32 extends Format30t { +public class DexGoto32 extends DexFormat30t { public static final int OPCODE = 0x2a; public static final String NAME = "Goto32"; public static final String SMALI_NAME = "goto/32"; - Goto32(int high, BytecodeStream stream) { + DexGoto32(int high, BytecodeStream stream) { super(high, stream); } - public Goto32(int AAAAAAAA) { + public DexGoto32(int AAAAAAAA) { super(AAAAAAAA); } @@ -36,7 +36,7 @@ @Override public int[] getTargets() { - return new int[]{AAAAAAAA}; + return new int[] {AAAAAAAA}; } @Override
diff --git a/src/main/java/com/android/tools/r8/code/IfEq.java b/src/main/java/com/android/tools/r8/dex/code/DexIfEq.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/IfEq.java rename to src/main/java/com/android/tools/r8/dex/code/DexIfEq.java index abd77ee..345328f 100644 --- a/src/main/java/com/android/tools/r8/code/IfEq.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIfEq.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.If.Type; import com.android.tools.r8.ir.code.ValueTypeConstraint; -public class IfEq extends Format22t { +public class DexIfEq extends DexFormat22t { public static final int OPCODE = 0x32; public static final String NAME = "IfEq"; public static final String SMALI_NAME = "if-eq"; - IfEq(int high, BytecodeStream stream) { + DexIfEq(int high, BytecodeStream stream) { super(high, stream); } - public IfEq(int register1, int register2, int offset) { + public DexIfEq(int register1, int register2, int offset) { super(register1, register2, offset); }
diff --git a/src/main/java/com/android/tools/r8/code/IfEqz.java b/src/main/java/com/android/tools/r8/dex/code/DexIfEqz.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/IfEqz.java rename to src/main/java/com/android/tools/r8/dex/code/DexIfEqz.java index 8bfed6d..517576c 100644 --- a/src/main/java/com/android/tools/r8/code/IfEqz.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIfEqz.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.If.Type; import com.android.tools.r8.ir.code.ValueTypeConstraint; -public class IfEqz extends Format21t { +public class DexIfEqz extends DexFormat21t { public static final int OPCODE = 0x38; public static final String NAME = "IfEqz"; public static final String SMALI_NAME = "if-eqz"; - IfEqz(int high, BytecodeStream stream) { + DexIfEqz(int high, BytecodeStream stream) { super(high, stream); } - public IfEqz(int register, int offset) { + public DexIfEqz(int register, int offset) { super(register, offset); }
diff --git a/src/main/java/com/android/tools/r8/code/IfGe.java b/src/main/java/com/android/tools/r8/dex/code/DexIfGe.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/IfGe.java rename to src/main/java/com/android/tools/r8/dex/code/DexIfGe.java index dd123f2..4c49892 100644 --- a/src/main/java/com/android/tools/r8/code/IfGe.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIfGe.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.If.Type; import com.android.tools.r8.ir.code.ValueTypeConstraint; -public class IfGe extends Format22t { +public class DexIfGe extends DexFormat22t { public static final int OPCODE = 0x35; public static final String NAME = "IfGe"; public static final String SMALI_NAME = "if-ge"; - IfGe(int high, BytecodeStream stream) { + DexIfGe(int high, BytecodeStream stream) { super(high, stream); } - public IfGe(int register1, int register2, int offset) { + public DexIfGe(int register1, int register2, int offset) { super(register1, register2, offset); }
diff --git a/src/main/java/com/android/tools/r8/code/IfGez.java b/src/main/java/com/android/tools/r8/dex/code/DexIfGez.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/IfGez.java rename to src/main/java/com/android/tools/r8/dex/code/DexIfGez.java index 9ca69c0..6a9b49e 100644 --- a/src/main/java/com/android/tools/r8/code/IfGez.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIfGez.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.If.Type; import com.android.tools.r8.ir.code.ValueTypeConstraint; -public class IfGez extends Format21t { +public class DexIfGez extends DexFormat21t { public static final int OPCODE = 0x3b; public static final String NAME = "IfGez"; public static final String SMALI_NAME = "if-gez"; - IfGez(int high, BytecodeStream stream) { + DexIfGez(int high, BytecodeStream stream) { super(high, stream); } - public IfGez(int register, int offset) { + public DexIfGez(int register, int offset) { super(register, offset); }
diff --git a/src/main/java/com/android/tools/r8/code/IfGt.java b/src/main/java/com/android/tools/r8/dex/code/DexIfGt.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/IfGt.java rename to src/main/java/com/android/tools/r8/dex/code/DexIfGt.java index 84a8fcb..20abfdc 100644 --- a/src/main/java/com/android/tools/r8/code/IfGt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIfGt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.If.Type; import com.android.tools.r8.ir.code.ValueTypeConstraint; -public class IfGt extends Format22t { +public class DexIfGt extends DexFormat22t { public static final int OPCODE = 0x36; public static final String NAME = "IfGt"; public static final String SMALI_NAME = "if-gt"; - IfGt(int high, BytecodeStream stream) { + DexIfGt(int high, BytecodeStream stream) { super(high, stream); } - public IfGt(int register1, int register2, int offset) { + public DexIfGt(int register1, int register2, int offset) { super(register1, register2, offset); }
diff --git a/src/main/java/com/android/tools/r8/code/IfGtz.java b/src/main/java/com/android/tools/r8/dex/code/DexIfGtz.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/IfGtz.java rename to src/main/java/com/android/tools/r8/dex/code/DexIfGtz.java index 8567a11..c3a8348 100644 --- a/src/main/java/com/android/tools/r8/code/IfGtz.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIfGtz.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.If.Type; import com.android.tools.r8.ir.code.ValueTypeConstraint; -public class IfGtz extends Format21t { +public class DexIfGtz extends DexFormat21t { public static final int OPCODE = 0x3c; public static final String NAME = "IfGtz"; public static final String SMALI_NAME = "if-gtz"; - IfGtz(int high, BytecodeStream stream) { + DexIfGtz(int high, BytecodeStream stream) { super(high, stream); } - public IfGtz(int register, int offset) { + public DexIfGtz(int register, int offset) { super(register, offset); }
diff --git a/src/main/java/com/android/tools/r8/code/IfLe.java b/src/main/java/com/android/tools/r8/dex/code/DexIfLe.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/IfLe.java rename to src/main/java/com/android/tools/r8/dex/code/DexIfLe.java index c313a4f..9fde6a5 100644 --- a/src/main/java/com/android/tools/r8/code/IfLe.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIfLe.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.If.Type; import com.android.tools.r8.ir.code.ValueTypeConstraint; -public class IfLe extends Format22t { +public class DexIfLe extends DexFormat22t { public static final int OPCODE = 0x37; public static final String NAME = "IfLe"; public static final String SMALI_NAME = "if-le"; - IfLe(int high, BytecodeStream stream) { + DexIfLe(int high, BytecodeStream stream) { super(high, stream); } - public IfLe(int register1, int register2, int offset) { + public DexIfLe(int register1, int register2, int offset) { super(register1, register2, offset); }
diff --git a/src/main/java/com/android/tools/r8/code/IfLez.java b/src/main/java/com/android/tools/r8/dex/code/DexIfLez.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/IfLez.java rename to src/main/java/com/android/tools/r8/dex/code/DexIfLez.java index 9024a98..04ebeff 100644 --- a/src/main/java/com/android/tools/r8/code/IfLez.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIfLez.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.If.Type; import com.android.tools.r8.ir.code.ValueTypeConstraint; -public class IfLez extends Format21t { +public class DexIfLez extends DexFormat21t { public static final int OPCODE = 0x3d; public static final String NAME = "IfLez"; public static final String SMALI_NAME = "if-lez"; - IfLez(int high, BytecodeStream stream) { + DexIfLez(int high, BytecodeStream stream) { super(high, stream); } - public IfLez(int register, int offset) { + public DexIfLez(int register, int offset) { super(register, offset); }
diff --git a/src/main/java/com/android/tools/r8/code/IfLt.java b/src/main/java/com/android/tools/r8/dex/code/DexIfLt.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/IfLt.java rename to src/main/java/com/android/tools/r8/dex/code/DexIfLt.java index 556de31..728ba10 100644 --- a/src/main/java/com/android/tools/r8/code/IfLt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIfLt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.If.Type; import com.android.tools.r8.ir.code.ValueTypeConstraint; -public class IfLt extends Format22t { +public class DexIfLt extends DexFormat22t { public static final int OPCODE = 0x34; public static final String NAME = "IfLt"; public static final String SMALI_NAME = "if-lt"; - IfLt(int high, BytecodeStream stream) { + DexIfLt(int high, BytecodeStream stream) { super(high, stream); } - public IfLt(int register1, int register2, int offset) { + public DexIfLt(int register1, int register2, int offset) { super(register1, register2, offset); }
diff --git a/src/main/java/com/android/tools/r8/code/IfLtz.java b/src/main/java/com/android/tools/r8/dex/code/DexIfLtz.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/IfLtz.java rename to src/main/java/com/android/tools/r8/dex/code/DexIfLtz.java index c19b0d9..0aba44f 100644 --- a/src/main/java/com/android/tools/r8/code/IfLtz.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIfLtz.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.If.Type; import com.android.tools.r8.ir.code.ValueTypeConstraint; -public class IfLtz extends Format21t { +public class DexIfLtz extends DexFormat21t { public static final int OPCODE = 0x3a; public static final String NAME = "IfLtz"; public static final String SMALI_NAME = "if-ltz"; - IfLtz(int high, BytecodeStream stream) { + DexIfLtz(int high, BytecodeStream stream) { super(high, stream); } - public IfLtz(int register, int offset) { + public DexIfLtz(int register, int offset) { super(register, offset); }
diff --git a/src/main/java/com/android/tools/r8/code/IfNe.java b/src/main/java/com/android/tools/r8/dex/code/DexIfNe.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/IfNe.java rename to src/main/java/com/android/tools/r8/dex/code/DexIfNe.java index 24e45d9..9919538 100644 --- a/src/main/java/com/android/tools/r8/code/IfNe.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIfNe.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.If.Type; import com.android.tools.r8.ir.code.ValueTypeConstraint; -public class IfNe extends Format22t { +public class DexIfNe extends DexFormat22t { public static final int OPCODE = 0x33; public static final String NAME = "IfNe"; public static final String SMALI_NAME = "if-ne"; - IfNe(int high, BytecodeStream stream) { + DexIfNe(int high, BytecodeStream stream) { super(high, stream); } - public IfNe(int register1, int register2, int offset) { + public DexIfNe(int register1, int register2, int offset) { super(register1, register2, offset); }
diff --git a/src/main/java/com/android/tools/r8/code/IfNez.java b/src/main/java/com/android/tools/r8/dex/code/DexIfNez.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/IfNez.java rename to src/main/java/com/android/tools/r8/dex/code/DexIfNez.java index f9057e6..cb74246 100644 --- a/src/main/java/com/android/tools/r8/code/IfNez.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIfNez.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.If.Type; import com.android.tools.r8.ir.code.ValueTypeConstraint; -public class IfNez extends Format21t { +public class DexIfNez extends DexFormat21t { public static final int OPCODE = 0x39; public static final String NAME = "IfNez"; public static final String SMALI_NAME = "if-nez"; - IfNez(int high, BytecodeStream stream) { + DexIfNez(int high, BytecodeStream stream) { super(high, stream); } - public IfNez(int register, int offset) { + public DexIfNez(int register, int offset) { super(register, offset); }
diff --git a/src/main/java/com/android/tools/r8/code/Iget.java b/src/main/java/com/android/tools/r8/dex/code/DexIget.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/Iget.java rename to src/main/java/com/android/tools/r8/dex/code/DexIget.java index ee8e7a0..0329505 100644 --- a/src/main/java/com/android/tools/r8/code/Iget.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIget.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class Iget extends IgetOrIput implements CfOrDexInstanceFieldRead { +public class DexIget extends DexIgetOrIput implements CfOrDexInstanceFieldRead { public static final int OPCODE = 0x52; public static final String NAME = "Iget"; public static final String SMALI_NAME = "iget"; - /*package*/ Iget(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIget(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public Iget(int destRegister, int objectRegister, DexField field) { + public DexIget(int destRegister, int objectRegister, DexField field) { super(destRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/IgetBoolean.java b/src/main/java/com/android/tools/r8/dex/code/DexIgetBoolean.java similarity index 79% rename from src/main/java/com/android/tools/r8/code/IgetBoolean.java rename to src/main/java/com/android/tools/r8/dex/code/DexIgetBoolean.java index 3212878..16bfd6d 100644 --- a/src/main/java/com/android/tools/r8/code/IgetBoolean.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIgetBoolean.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IgetBoolean extends IgetOrIput implements CfOrDexInstanceFieldRead { +public class DexIgetBoolean extends DexIgetOrIput implements CfOrDexInstanceFieldRead { public static final int OPCODE = 0x55; public static final String NAME = "IgetBoolean"; public static final String SMALI_NAME = "iget-boolean"; - /*package*/ IgetBoolean(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIgetBoolean(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public IgetBoolean(int destRegister, int objectRegister, DexField field) { + public DexIgetBoolean(int destRegister, int objectRegister, DexField field) { super(destRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/IgetByte.java b/src/main/java/com/android/tools/r8/dex/code/DexIgetByte.java similarity index 79% rename from src/main/java/com/android/tools/r8/code/IgetByte.java rename to src/main/java/com/android/tools/r8/dex/code/DexIgetByte.java index a876d70..a1a04db 100644 --- a/src/main/java/com/android/tools/r8/code/IgetByte.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIgetByte.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IgetByte extends IgetOrIput implements CfOrDexInstanceFieldRead { +public class DexIgetByte extends DexIgetOrIput implements CfOrDexInstanceFieldRead { public static final int OPCODE = 0x56; public static final String NAME = "IgetByte"; public static final String SMALI_NAME = "iget-byte"; - /*package*/ IgetByte(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIgetByte(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public IgetByte(int destRegister, int objectRegister, DexField field) { + public DexIgetByte(int destRegister, int objectRegister, DexField field) { super(destRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/IgetChar.java b/src/main/java/com/android/tools/r8/dex/code/DexIgetChar.java similarity index 79% rename from src/main/java/com/android/tools/r8/code/IgetChar.java rename to src/main/java/com/android/tools/r8/dex/code/DexIgetChar.java index efa458d..a546c34 100644 --- a/src/main/java/com/android/tools/r8/code/IgetChar.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIgetChar.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IgetChar extends IgetOrIput implements CfOrDexInstanceFieldRead { +public class DexIgetChar extends DexIgetOrIput implements CfOrDexInstanceFieldRead { public static final int OPCODE = 0x57; public static final String NAME = "IgetChar"; public static final String SMALI_NAME = "iget-char"; - /*package*/ IgetChar(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIgetChar(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public IgetChar(int destRegister, int objectRegister, DexField field) { + public DexIgetChar(int destRegister, int objectRegister, DexField field) { super(destRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/IgetObject.java b/src/main/java/com/android/tools/r8/dex/code/DexIgetObject.java similarity index 79% rename from src/main/java/com/android/tools/r8/code/IgetObject.java rename to src/main/java/com/android/tools/r8/dex/code/DexIgetObject.java index 93540d6..b9d1e38 100644 --- a/src/main/java/com/android/tools/r8/code/IgetObject.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIgetObject.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IgetObject extends IgetOrIput implements CfOrDexInstanceFieldRead { +public class DexIgetObject extends DexIgetOrIput implements CfOrDexInstanceFieldRead { public static final int OPCODE = 0x54; public static final String NAME = "IgetObject"; public static final String SMALI_NAME = "iget-object"; - /*package*/ IgetObject(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIgetObject(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public IgetObject(int destRegister, int objectRegister, DexField field) { + public DexIgetObject(int destRegister, int objectRegister, DexField field) { super(destRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/IgetOrIput.java b/src/main/java/com/android/tools/r8/dex/code/DexIgetOrIput.java similarity index 85% rename from src/main/java/com/android/tools/r8/code/IgetOrIput.java rename to src/main/java/com/android/tools/r8/dex/code/DexIgetOrIput.java index 33621e5..2ab30bc 100644 --- a/src/main/java/com/android/tools/r8/code/IgetOrIput.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIgetOrIput.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.DexField; @@ -11,13 +11,13 @@ import com.android.tools.r8.ir.conversion.LensCodeRewriterUtils; import java.nio.ShortBuffer; -public abstract class IgetOrIput extends Format22c<DexField> { +public abstract class DexIgetOrIput extends DexFormat22c<DexField> { - IgetOrIput(int high, BytecodeStream stream, DexField[] map) { + DexIgetOrIput(int high, BytecodeStream stream, DexField[] map) { super(high, stream, map); } - IgetOrIput(int A, int B, DexField CCCC) { + DexIgetOrIput(int A, int B, DexField CCCC) { super(A, B, CCCC); }
diff --git a/src/main/java/com/android/tools/r8/code/IgetShort.java b/src/main/java/com/android/tools/r8/dex/code/DexIgetShort.java similarity index 79% rename from src/main/java/com/android/tools/r8/code/IgetShort.java rename to src/main/java/com/android/tools/r8/dex/code/DexIgetShort.java index 23bd792..653aac0 100644 --- a/src/main/java/com/android/tools/r8/code/IgetShort.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIgetShort.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IgetShort extends IgetOrIput implements CfOrDexInstanceFieldRead { +public class DexIgetShort extends DexIgetOrIput implements CfOrDexInstanceFieldRead { public static final int OPCODE = 0x58; public static final String NAME = "IgetShort"; public static final String SMALI_NAME = "iget-short"; - /*package*/ IgetShort(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIgetShort(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public IgetShort(int destRegister, int objectRegister, DexField field) { + public DexIgetShort(int destRegister, int objectRegister, DexField field) { super(destRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/IgetWide.java b/src/main/java/com/android/tools/r8/dex/code/DexIgetWide.java similarity index 79% rename from src/main/java/com/android/tools/r8/code/IgetWide.java rename to src/main/java/com/android/tools/r8/dex/code/DexIgetWide.java index 12ad976..a2bcf17 100644 --- a/src/main/java/com/android/tools/r8/code/IgetWide.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIgetWide.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IgetWide extends IgetOrIput implements CfOrDexInstanceFieldRead { +public class DexIgetWide extends DexIgetOrIput implements CfOrDexInstanceFieldRead { public static final int OPCODE = 0x53; public static final String NAME = "IgetWide"; public static final String SMALI_NAME = "iget-wide"; - /*package*/ IgetWide(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIgetWide(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public IgetWide(int destRegister, int objectRegister, DexField field) { + public DexIgetWide(int destRegister, int objectRegister, DexField field) { super(destRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/DexInitClass.java b/src/main/java/com/android/tools/r8/dex/code/DexInitClass.java similarity index 90% rename from src/main/java/com/android/tools/r8/code/DexInitClass.java rename to src/main/java/com/android/tools/r8/dex/code/DexInitClass.java index 545c24c..87463b3 100644 --- a/src/main/java/com/android/tools/r8/code/DexInitClass.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInitClass.java
@@ -2,7 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.errors.Unreachable; @@ -20,7 +20,7 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -public class DexInitClass extends Base2Format { +public class DexInitClass extends DexBase2Format { public static final int OPCODE = 0x60; public static final String NAME = "InitClass"; @@ -87,20 +87,20 @@ switch (type) { case INT: case FLOAT: - return Sget.OPCODE; + return DexSget.OPCODE; case LONG: case DOUBLE: - return SgetWide.OPCODE; + return DexSgetWide.OPCODE; case OBJECT: - return SgetObject.OPCODE; + return DexSgetObject.OPCODE; case BOOLEAN: - return SgetBoolean.OPCODE; + return DexSgetBoolean.OPCODE; case BYTE: - return SgetByte.OPCODE; + return DexSgetByte.OPCODE; case CHAR: - return SgetChar.OPCODE; + return DexSgetChar.OPCODE; case SHORT: - return SgetShort.OPCODE; + return DexSgetShort.OPCODE; default: throw new Unreachable("Unexpected type: " + type); } @@ -132,7 +132,7 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { return visitor.visit(this, (DexInitClass) other, DexInitClass::specify); }
diff --git a/src/main/java/com/android/tools/r8/code/InstanceOf.java b/src/main/java/com/android/tools/r8/dex/code/DexInstanceOf.java similarity index 88% rename from src/main/java/com/android/tools/r8/code/InstanceOf.java rename to src/main/java/com/android/tools/r8/dex/code/DexInstanceOf.java index c1b8293..d5eaa35 100644 --- a/src/main/java/com/android/tools/r8/code/InstanceOf.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInstanceOf.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.DexType; @@ -14,22 +14,22 @@ import com.android.tools.r8.ir.conversion.LensCodeRewriterUtils; import java.nio.ShortBuffer; -public class InstanceOf extends Format22c<DexType> { +public class DexInstanceOf extends DexFormat22c<DexType> { public static final int OPCODE = 0x20; public static final String NAME = "InstanceOf"; public static final String SMALI_NAME = "instance-of"; - InstanceOf(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInstanceOf(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getTypeMap()); } - public InstanceOf(int dest, int value, DexType type) { + public DexInstanceOf(int dest, int value, DexType type) { super(dest, value, type); } @Override - public InstanceOf asInstanceOf() { + public DexInstanceOf asInstanceOf() { return this; }
diff --git a/src/main/java/com/android/tools/r8/code/Instruction.java b/src/main/java/com/android/tools/r8/dex/code/DexInstruction.java similarity index 86% rename from src/main/java/com/android/tools/r8/code/Instruction.java rename to src/main/java/com/android/tools/r8/dex/code/DexInstruction.java index 580d5ef..eebd95a 100644 --- a/src/main/java/com/android/tools/r8/code/Instruction.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInstruction.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.cf.code.CfInstruction; import com.android.tools.r8.dex.IndexedItemCollection; @@ -28,20 +28,20 @@ import java.nio.ShortBuffer; import java.util.function.BiPredicate; -public abstract class Instruction implements CfOrDexInstruction, StructuralItem<Instruction> { - public static final Instruction[] EMPTY_ARRAY = {}; +public abstract class DexInstruction implements CfOrDexInstruction, StructuralItem<DexInstruction> { + public static final DexInstruction[] EMPTY_ARRAY = {}; - public final static int[] NO_TARGETS = null; - public final static int[] EXIT_TARGET = {}; + public static final int[] NO_TARGETS = null; + public static final int[] EXIT_TARGET = {}; private int offset; - Instruction(BytecodeStream stream) { + DexInstruction(BytecodeStream stream) { // When this constructor is invoked, we have already read 1 ushort from the stream. this.offset = stream.getOffset() - 1; } - protected Instruction() { + protected DexInstruction() { this.offset = -1; } @@ -128,8 +128,8 @@ write16BitValue(index, dest); } - protected void write32BitReference(IndexedDexItem item, ShortBuffer dest, - ObjectToOffsetMapping mapping) { + protected void write32BitReference( + IndexedDexItem item, ShortBuffer dest, ObjectToOffsetMapping mapping) { write32BitValue(item.getOffset(mapping), dest); } @@ -156,11 +156,11 @@ } @Override - public Instruction asDexInstruction() { + public DexInstruction asDexInstruction() { return this; } - public CheckCast asCheckCast() { + public DexCheckCast asCheckCast() { return null; } @@ -168,7 +168,7 @@ return false; } - public InstanceOf asInstanceOf() { + public DexInstanceOf asInstanceOf() { return null; } @@ -176,7 +176,7 @@ return false; } - public ConstString asConstString() { + public DexConstString asConstString() { return null; } @@ -184,7 +184,7 @@ return false; } - public ConstClass asConstClass() { + public DexConstClass asConstClass() { return null; } @@ -204,7 +204,7 @@ return false; } - public ConstStringJumbo asConstStringJumbo() { + public DexConstStringJumbo asConstStringJumbo() { return null; } @@ -216,7 +216,7 @@ return false; } - public InvokeVirtual asInvokeVirtual() { + public DexInvokeVirtual asInvokeVirtual() { return null; } @@ -224,12 +224,12 @@ return false; } - public InvokeVirtualRange asInvokeVirtualRange() { + public DexInvokeVirtualRange asInvokeVirtualRange() { return null; } public boolean isSimpleNop() { - return !isPayload() && this instanceof Nop; + return !isPayload() && this instanceof DexNop; } public boolean isPayload() { @@ -324,12 +324,12 @@ public abstract int hashCode(); @Override - public Instruction self() { + public DexInstruction self() { return this; } @Override - public StructuralMapping<Instruction> getStructuralMapping() { + public StructuralMapping<DexInstruction> getStructuralMapping() { throw new Unreachable(); } @@ -338,10 +338,10 @@ } // Abstract compare-to called only if the opcode/compare-id of the instruction matches. - abstract int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor); + abstract int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor); @Override - public final int acceptCompareTo(Instruction other, CompareToVisitor visitor) { + public final int acceptCompareTo(DexInstruction other, CompareToVisitor visitor) { int opcodeDiff = visitor.visitInt(getCompareToId(), other.getCompareToId()); if (opcodeDiff != 0) { return opcodeDiff; @@ -367,7 +367,7 @@ public abstract int getSize(); - public String toSmaliString(Instruction payloadUser) { + public String toSmaliString(DexInstruction payloadUser) { throw new InternalCompilerError("Instruction " + payloadUser + " is not a payload user"); } @@ -379,7 +379,7 @@ public abstract String toString(ClassNameMapper naming); - public String toString(ClassNameMapper naming, Instruction payloadUser) { + public String toString(ClassNameMapper naming, DexInstruction payloadUser) { throw new InternalCompilerError("Instruction " + payloadUser + " is not a payload user"); } @@ -401,7 +401,8 @@ GraphLens graphLens, LensCodeRewriterUtils rewriter); - public boolean equals(Instruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { + public boolean equals( + DexInstruction other, BiPredicate<IndexedDexItem, IndexedDexItem> equality) { // In the default case, there is nothing to substitute. return this.equals(other); }
diff --git a/src/main/java/com/android/tools/r8/code/InstructionFactory.java b/src/main/java/com/android/tools/r8/dex/code/DexInstructionFactory.java similarity index 73% rename from src/main/java/com/android/tools/r8/code/InstructionFactory.java rename to src/main/java/com/android/tools/r8/dex/code/DexInstructionFactory.java index 6b60f29..356535c 100644 --- a/src/main/java/com/android/tools/r8/code/InstructionFactory.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInstructionFactory.java
@@ -1,32 +1,31 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.OffsetToObjectMapping; import java.nio.ShortBuffer; import java.util.ArrayList; import java.util.List; -public class InstructionFactory extends BaseInstructionFactory { +public class DexInstructionFactory extends DexBaseInstructionFactory { - static private Instruction readFrom(ShortBufferBytecodeStream stream, - OffsetToObjectMapping mapping) { + private static DexInstruction readFrom( + ShortBufferBytecodeStream stream, OffsetToObjectMapping mapping) { int high = stream.nextByte(); int opcode = stream.nextByte(); return create(high, opcode, stream, mapping); } - public Instruction[] readSequenceFrom(ShortBuffer buffer, int startIndex, int length, - OffsetToObjectMapping mapping) { - ShortBufferBytecodeStream range = - new ShortBufferBytecodeStream(buffer, startIndex, length); - List<Instruction> insn = new ArrayList<>(length); + public DexInstruction[] readSequenceFrom( + ShortBuffer buffer, int startIndex, int length, OffsetToObjectMapping mapping) { + ShortBufferBytecodeStream range = new ShortBufferBytecodeStream(buffer, startIndex, length); + List<DexInstruction> insn = new ArrayList<>(length); while (range.hasMore()) { - Instruction instruction = readFrom(range, mapping); + DexInstruction instruction = readFrom(range, mapping); insn.add(instruction); } - return insn.toArray(Instruction.EMPTY_ARRAY); + return insn.toArray(DexInstruction.EMPTY_ARRAY); } private static class ShortBufferBytecodeStream implements BytecodeStream {
diff --git a/src/main/java/com/android/tools/r8/code/IntToByte.java b/src/main/java/com/android/tools/r8/dex/code/DexIntToByte.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/IntToByte.java rename to src/main/java/com/android/tools/r8/dex/code/DexIntToByte.java index 2f6fde6..b2aefe3 100644 --- a/src/main/java/com/android/tools/r8/code/IntToByte.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIntToByte.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IntToByte extends Format12x { + +public class DexIntToByte extends DexFormat12x { public static final int OPCODE = 0x8d; public static final String NAME = "IntToByte"; public static final String SMALI_NAME = "int-to-byte"; - IntToByte(int high, BytecodeStream stream) { + DexIntToByte(int high, BytecodeStream stream) { super(high, stream); } - public IntToByte(int dest, int source) { + public DexIntToByte(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/IntToChar.java b/src/main/java/com/android/tools/r8/dex/code/DexIntToChar.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/IntToChar.java rename to src/main/java/com/android/tools/r8/dex/code/DexIntToChar.java index 1994d77..a096373 100644 --- a/src/main/java/com/android/tools/r8/code/IntToChar.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIntToChar.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IntToChar extends Format12x { +public class DexIntToChar extends DexFormat12x { public static final int OPCODE = 0x8e; public static final String NAME = "IntToChar"; public static final String SMALI_NAME = "int-to-char"; - IntToChar(int high, BytecodeStream stream) { + DexIntToChar(int high, BytecodeStream stream) { super(high, stream); } - public IntToChar(int dest, int source) { + public DexIntToChar(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/IntToDouble.java b/src/main/java/com/android/tools/r8/dex/code/DexIntToDouble.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/IntToDouble.java rename to src/main/java/com/android/tools/r8/dex/code/DexIntToDouble.java index e7a3a51..f3b1c19 100644 --- a/src/main/java/com/android/tools/r8/code/IntToDouble.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIntToDouble.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IntToDouble extends Format12x { +public class DexIntToDouble extends DexFormat12x { public static final int OPCODE = 0x83; public static final String NAME = "IntToDouble"; public static final String SMALI_NAME = "int-to-double"; - IntToDouble(int high, BytecodeStream stream) { + DexIntToDouble(int high, BytecodeStream stream) { super(high, stream); } - public IntToDouble(int dest, int source) { + public DexIntToDouble(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/IntToFloat.java b/src/main/java/com/android/tools/r8/dex/code/DexIntToFloat.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/IntToFloat.java rename to src/main/java/com/android/tools/r8/dex/code/DexIntToFloat.java index 5865d4d..9883869 100644 --- a/src/main/java/com/android/tools/r8/code/IntToFloat.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIntToFloat.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IntToFloat extends Format12x { + +public class DexIntToFloat extends DexFormat12x { public static final int OPCODE = 0x82; public static final String NAME = "IntToFloat"; public static final String SMALI_NAME = "int-to-float"; - IntToFloat(int high, BytecodeStream stream) { + DexIntToFloat(int high, BytecodeStream stream) { super(high, stream); } - public IntToFloat(int dest, int source) { + public DexIntToFloat(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/IntToLong.java b/src/main/java/com/android/tools/r8/dex/code/DexIntToLong.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/IntToLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexIntToLong.java index 5a3592e..8c319b1 100644 --- a/src/main/java/com/android/tools/r8/code/IntToLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIntToLong.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IntToLong extends Format12x { +public class DexIntToLong extends DexFormat12x { public static final int OPCODE = 0x81; public static final String NAME = "IntToLong"; public static final String SMALI_NAME = "int-to-long"; - IntToLong(int high, BytecodeStream stream) { + DexIntToLong(int high, BytecodeStream stream) { super(high, stream); } - public IntToLong(int dest, int source) { + public DexIntToLong(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/IntToShort.java b/src/main/java/com/android/tools/r8/dex/code/DexIntToShort.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/IntToShort.java rename to src/main/java/com/android/tools/r8/dex/code/DexIntToShort.java index 6fbdaaa..579cff4 100644 --- a/src/main/java/com/android/tools/r8/code/IntToShort.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIntToShort.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IntToShort extends Format12x { +public class DexIntToShort extends DexFormat12x { public static final int OPCODE = 0x8f; public static final String NAME = "IntToShort"; public static final String SMALI_NAME = "int-to-short"; - IntToShort(int high, BytecodeStream stream) { + DexIntToShort(int high, BytecodeStream stream) { super(high, stream); } - public IntToShort(int dest, int source) { + public DexIntToShort(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/InvokeCustom.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeCustom.java similarity index 88% rename from src/main/java/com/android/tools/r8/code/InvokeCustom.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeCustom.java index ea07822..4e73b38 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeCustom.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeCustom.java
@@ -1,7 +1,7 @@ // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.DexCallSite; @@ -14,17 +14,17 @@ import com.android.tools.r8.ir.conversion.LensCodeRewriterUtils; import java.nio.ShortBuffer; -public class InvokeCustom extends Format35c<DexCallSite> { +public class DexInvokeCustom extends DexFormat35c<DexCallSite> { public static final int OPCODE = 0xfc; public static final String NAME = "InvokeCustom"; public static final String SMALI_NAME = "invoke-custom"; - InvokeCustom(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokeCustom(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getCallSiteMap()); } - public InvokeCustom(int A, DexCallSite BBBB, int C, int D, int E, int F, int G) { + public DexInvokeCustom(int A, DexCallSite BBBB, int C, int D, int E, int F, int G) { super(A, BBBB, C, D, E, F, G); } @@ -65,7 +65,7 @@ @Override public void buildIR(IRBuilder builder) { - builder.addInvokeCustomRegisters(getCallSite(), A, new int[]{C, D, E, F, G}); + builder.addInvokeCustomRegisters(getCallSite(), A, new int[] {C, D, E, F, G}); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/InvokeCustomRange.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeCustomRange.java similarity index 88% rename from src/main/java/com/android/tools/r8/code/InvokeCustomRange.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeCustomRange.java index c057c94..bae7f30 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeCustomRange.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeCustomRange.java
@@ -1,7 +1,7 @@ // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.DexCallSite; @@ -14,17 +14,17 @@ import com.android.tools.r8.ir.conversion.LensCodeRewriterUtils; import java.nio.ShortBuffer; -public class InvokeCustomRange extends Format3rc<DexCallSite> { +public class DexInvokeCustomRange extends DexFormat3rc<DexCallSite> { public static final int OPCODE = 0xfd; public static final String NAME = "InvokeCustomRange"; public static final String SMALI_NAME = "invoke-custom/range"; - InvokeCustomRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokeCustomRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getCallSiteMap()); } - public InvokeCustomRange(int firstArgumentRegister, int argumentCount, DexCallSite callSite) { + public DexInvokeCustomRange(int firstArgumentRegister, int argumentCount, DexCallSite callSite) { super(firstArgumentRegister, argumentCount, callSite); }
diff --git a/src/main/java/com/android/tools/r8/code/InvokeDirect.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeDirect.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/InvokeDirect.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeDirect.java index 4f5938f..b918754 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeDirect.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeDirect.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.graph.OffsetToObjectMapping; @@ -9,17 +9,17 @@ import com.android.tools.r8.ir.code.Invoke.Type; import com.android.tools.r8.ir.conversion.IRBuilder; -public class InvokeDirect extends InvokeMethod { +public class DexInvokeDirect extends DexInvokeMethod { public static final int OPCODE = 0x70; public static final String NAME = "InvokeDirect"; public static final String SMALI_NAME = "invoke-direct"; - InvokeDirect(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokeDirect(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getMethodMap()); } - public InvokeDirect(int A, DexMethod BBBB, int C, int D, int E, int F, int G) { + public DexInvokeDirect(int A, DexMethod BBBB, int C, int D, int E, int F, int G) { super(A, BBBB, C, D, E, F, G); } @@ -50,7 +50,7 @@ @Override public void buildIR(IRBuilder builder) { - builder.addInvokeRegisters(Type.DIRECT, getMethod(), getProto(), A, new int[]{C, D, E, F, G}); + builder.addInvokeRegisters(Type.DIRECT, getMethod(), getProto(), A, new int[] {C, D, E, F, G}); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/InvokeDirectRange.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeDirectRange.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/InvokeDirectRange.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeDirectRange.java index 6f232c0..9134e4a 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeDirectRange.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeDirectRange.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.graph.OffsetToObjectMapping; @@ -9,17 +9,17 @@ import com.android.tools.r8.ir.code.Invoke.Type; import com.android.tools.r8.ir.conversion.IRBuilder; -public class InvokeDirectRange extends InvokeMethodRange { +public class DexInvokeDirectRange extends DexInvokeMethodRange { public static final int OPCODE = 0x76; public static final String NAME = "InvokeDirectRange"; public static final String SMALI_NAME = "invoke-direct/range"; - InvokeDirectRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokeDirectRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getMethodMap()); } - public InvokeDirectRange(int firstArgumentRegister, int argumentCount, DexMethod method) { + public DexInvokeDirectRange(int firstArgumentRegister, int argumentCount, DexMethod method) { super(firstArgumentRegister, argumentCount, method); }
diff --git a/src/main/java/com/android/tools/r8/code/InvokeInterface.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeInterface.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/InvokeInterface.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeInterface.java index 2e20c9c..d7a64be 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeInterface.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeInterface.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.graph.OffsetToObjectMapping; @@ -9,17 +9,17 @@ import com.android.tools.r8.ir.code.Invoke.Type; import com.android.tools.r8.ir.conversion.IRBuilder; -public class InvokeInterface extends InvokeMethod { +public class DexInvokeInterface extends DexInvokeMethod { public static final int OPCODE = 0x72; public static final String NAME = "InvokeInterface"; public static final String SMALI_NAME = "invoke-interface"; - InvokeInterface(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokeInterface(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getMethodMap()); } - public InvokeInterface(int A, DexMethod BBBB, int C, int D, int E, int F, int G) { + public DexInvokeInterface(int A, DexMethod BBBB, int C, int D, int E, int F, int G) { super(A, BBBB, C, D, E, F, G); }
diff --git a/src/main/java/com/android/tools/r8/code/InvokeInterfaceRange.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeInterfaceRange.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/InvokeInterfaceRange.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeInterfaceRange.java index 7592e3d..b8dfc7b 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeInterfaceRange.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeInterfaceRange.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.graph.OffsetToObjectMapping; @@ -9,17 +9,17 @@ import com.android.tools.r8.ir.code.Invoke.Type; import com.android.tools.r8.ir.conversion.IRBuilder; -public class InvokeInterfaceRange extends InvokeMethodRange { +public class DexInvokeInterfaceRange extends DexInvokeMethodRange { public static final int OPCODE = 0x78; public static final String NAME = "InvokeInterfaceRange"; public static final String SMALI_NAME = "invoke-interface/range"; - InvokeInterfaceRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokeInterfaceRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getMethodMap()); } - public InvokeInterfaceRange(int firstArgumentRegister, int argumentCount, DexMethod method) { + public DexInvokeInterfaceRange(int firstArgumentRegister, int argumentCount, DexMethod method) { super(firstArgumentRegister, argumentCount, method); }
diff --git a/src/main/java/com/android/tools/r8/code/InvokeMethod.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeMethod.java similarity index 86% rename from src/main/java/com/android/tools/r8/code/InvokeMethod.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeMethod.java index 9e5d8f2..f5211b1 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeMethod.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeMethod.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.DexMethod; @@ -13,13 +13,13 @@ import com.android.tools.r8.ir.conversion.LensCodeRewriterUtils; import java.nio.ShortBuffer; -public abstract class InvokeMethod extends Format35c<DexMethod> { +public abstract class DexInvokeMethod extends DexFormat35c<DexMethod> { - InvokeMethod(int high, BytecodeStream stream, DexMethod[] map) { + DexInvokeMethod(int high, BytecodeStream stream, DexMethod[] map) { super(high, stream, map); } - InvokeMethod(int A, DexMethod BBBB, int C, int D, int E, int F, int G) { + DexInvokeMethod(int A, DexMethod BBBB, int C, int D, int E, int F, int G) { super(A, BBBB, C, D, E, F, G); }
diff --git a/src/main/java/com/android/tools/r8/code/InvokeMethodRange.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeMethodRange.java similarity index 85% rename from src/main/java/com/android/tools/r8/code/InvokeMethodRange.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeMethodRange.java index ba248e0..db983f1 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeMethodRange.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeMethodRange.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.DexMethod; @@ -13,13 +13,13 @@ import com.android.tools.r8.ir.conversion.LensCodeRewriterUtils; import java.nio.ShortBuffer; -public abstract class InvokeMethodRange extends Format3rc<DexMethod> { +public abstract class DexInvokeMethodRange extends DexFormat3rc<DexMethod> { - InvokeMethodRange(int high, BytecodeStream stream, DexMethod[] map) { + DexInvokeMethodRange(int high, BytecodeStream stream, DexMethod[] map) { super(high, stream, map); } - InvokeMethodRange(int firstArgumentRegister, int argumentCount, DexMethod dexItem) { + DexInvokeMethodRange(int firstArgumentRegister, int argumentCount, DexMethod dexItem) { super(firstArgumentRegister, argumentCount, dexItem); }
diff --git a/src/main/java/com/android/tools/r8/code/InvokePolymorphic.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokePolymorphic.java similarity index 86% rename from src/main/java/com/android/tools/r8/code/InvokePolymorphic.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokePolymorphic.java index d5ecd11..72678f0 100644 --- a/src/main/java/com/android/tools/r8/code/InvokePolymorphic.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokePolymorphic.java
@@ -1,7 +1,7 @@ // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.graph.DexProto; @@ -13,17 +13,17 @@ * An invoke-polymorphic instruction used to invoke a method in a MethodHandle using either * MethodHandle.invoke or MethodHandle.invokeExact. */ -public class InvokePolymorphic extends Format45cc { +public class DexInvokePolymorphic extends DexFormat45cc { public static final int OPCODE = 0xfa; public static final String NAME = "InvokePolymorphic"; public static final String SMALI_NAME = "invoke-polymorphic"; - InvokePolymorphic(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokePolymorphic(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getMethodMap(), mapping.getProtosMap()); } - public InvokePolymorphic( + public DexInvokePolymorphic( int A, DexMethod BBBB, DexProto HHHH, int C, int D, int E, int F, int G) { super(A, BBBB, HHHH, C, D, E, F, G); }
diff --git a/src/main/java/com/android/tools/r8/code/InvokePolymorphicRange.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokePolymorphicRange.java similarity index 87% rename from src/main/java/com/android/tools/r8/code/InvokePolymorphicRange.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokePolymorphicRange.java index 07cf3a0..186952b 100644 --- a/src/main/java/com/android/tools/r8/code/InvokePolymorphicRange.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokePolymorphicRange.java
@@ -1,7 +1,7 @@ // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.graph.DexProto; @@ -11,17 +11,17 @@ import com.android.tools.r8.ir.conversion.IRBuilder; /** An invoke-polymorphic range instruction used to call method with polymorphic signature. */ -public class InvokePolymorphicRange extends Format4rcc { +public class DexInvokePolymorphicRange extends DexFormat4rcc { public static final int OPCODE = 0xfb; public static final String NAME = "InvokePolymorphicRange"; public static final String SMALI_NAME = "invoke-polymorphic/range"; - InvokePolymorphicRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokePolymorphicRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getMethodMap(), mapping.getProtosMap()); } - public InvokePolymorphicRange( + public DexInvokePolymorphicRange( int firstArgumentRegister, int argumentCount, DexMethod method, DexProto proto) { super(firstArgumentRegister, argumentCount, method, proto); }
diff --git a/src/main/java/com/android/tools/r8/code/InvokeStatic.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeStatic.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/InvokeStatic.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeStatic.java index fb198e4..b645556 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeStatic.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeStatic.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.graph.OffsetToObjectMapping; @@ -9,17 +9,17 @@ import com.android.tools.r8.ir.code.Invoke.Type; import com.android.tools.r8.ir.conversion.IRBuilder; -public class InvokeStatic extends InvokeMethod { +public class DexInvokeStatic extends DexInvokeMethod { public static final int OPCODE = 0x71; public static final String NAME = "InvokeStatic"; public static final String SMALI_NAME = "invoke-static"; - InvokeStatic(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokeStatic(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getMethodMap()); } - public InvokeStatic(int A, DexMethod BBBB, int C, int D, int E, int F, int G) { + public DexInvokeStatic(int A, DexMethod BBBB, int C, int D, int E, int F, int G) { super(A, BBBB, C, D, E, F, G); } @@ -50,7 +50,7 @@ @Override public void buildIR(IRBuilder builder) { - builder.addInvokeRegisters(Type.STATIC, getMethod(), getProto(), A, new int[]{C, D, E, F, G}); + builder.addInvokeRegisters(Type.STATIC, getMethod(), getProto(), A, new int[] {C, D, E, F, G}); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/InvokeStaticRange.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeStaticRange.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/InvokeStaticRange.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeStaticRange.java index de84a90..512632f 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeStaticRange.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeStaticRange.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.graph.OffsetToObjectMapping; @@ -9,17 +9,17 @@ import com.android.tools.r8.ir.code.Invoke.Type; import com.android.tools.r8.ir.conversion.IRBuilder; -public class InvokeStaticRange extends InvokeMethodRange { +public class DexInvokeStaticRange extends DexInvokeMethodRange { public static final int OPCODE = 0x77; public static final String NAME = "InvokeStaticRange"; public static final String SMALI_NAME = "invoke-static/range"; - InvokeStaticRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokeStaticRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getMethodMap()); } - public InvokeStaticRange(int firstArgumentRegister, int argumentCount, DexMethod method) { + public DexInvokeStaticRange(int firstArgumentRegister, int argumentCount, DexMethod method) { super(firstArgumentRegister, argumentCount, method); }
diff --git a/src/main/java/com/android/tools/r8/code/InvokeSuper.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeSuper.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/InvokeSuper.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeSuper.java index 24ab80e..3be61ac 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeSuper.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeSuper.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.graph.OffsetToObjectMapping; @@ -9,17 +9,17 @@ import com.android.tools.r8.ir.code.Invoke.Type; import com.android.tools.r8.ir.conversion.IRBuilder; -public class InvokeSuper extends InvokeMethod { +public class DexInvokeSuper extends DexInvokeMethod { public static final int OPCODE = 0x6f; public static final String NAME = "InvokeSuper"; public static final String SMALI_NAME = "invoke-super"; - InvokeSuper(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokeSuper(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getMethodMap()); } - public InvokeSuper(int A, DexMethod BBBB, int C, int D, int E, int F, int G) { + public DexInvokeSuper(int A, DexMethod BBBB, int C, int D, int E, int F, int G) { super(A, BBBB, C, D, E, F, G); } @@ -50,7 +50,7 @@ @Override public void buildIR(IRBuilder builder) { - builder.addInvokeRegisters(Type.SUPER, getMethod(), getProto(), A, new int[]{C, D, E, F, G}); + builder.addInvokeRegisters(Type.SUPER, getMethod(), getProto(), A, new int[] {C, D, E, F, G}); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/InvokeSuperRange.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeSuperRange.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/InvokeSuperRange.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeSuperRange.java index ac820c9..206e74f 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeSuperRange.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeSuperRange.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.graph.OffsetToObjectMapping; @@ -9,17 +9,17 @@ import com.android.tools.r8.ir.code.Invoke.Type; import com.android.tools.r8.ir.conversion.IRBuilder; -public class InvokeSuperRange extends InvokeMethodRange { +public class DexInvokeSuperRange extends DexInvokeMethodRange { public static final int OPCODE = 0x75; public static final String NAME = "InvokeSuperRange"; public static final String SMALI_NAME = "invoke-super/range"; - InvokeSuperRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokeSuperRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getMethodMap()); } - public InvokeSuperRange(int firstArgumentRegister, int argumentCount, DexMethod method) { + public DexInvokeSuperRange(int firstArgumentRegister, int argumentCount, DexMethod method) { super(firstArgumentRegister, argumentCount, method); }
diff --git a/src/main/java/com/android/tools/r8/code/InvokeVirtual.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeVirtual.java similarity index 79% rename from src/main/java/com/android/tools/r8/code/InvokeVirtual.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeVirtual.java index 27e37c5..f1704e5 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeVirtual.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeVirtual.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.graph.OffsetToObjectMapping; @@ -9,17 +9,17 @@ import com.android.tools.r8.ir.code.Invoke.Type; import com.android.tools.r8.ir.conversion.IRBuilder; -public class InvokeVirtual extends InvokeMethod { +public class DexInvokeVirtual extends DexInvokeMethod { public static final int OPCODE = 0x6e; public static final String NAME = "InvokeVirtual"; public static final String SMALI_NAME = "invoke-virtual"; - InvokeVirtual(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokeVirtual(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getMethodMap()); } - public InvokeVirtual(int A, DexMethod BBBB, int C, int D, int E, int F, int G) { + public DexInvokeVirtual(int A, DexMethod BBBB, int C, int D, int E, int F, int G) { super(A, BBBB, C, D, E, F, G); } @@ -49,7 +49,7 @@ } @Override - public InvokeVirtual asInvokeVirtual() { + public DexInvokeVirtual asInvokeVirtual() { return this; } @@ -60,7 +60,7 @@ @Override public void buildIR(IRBuilder builder) { - builder.addInvokeRegisters(Type.VIRTUAL, getMethod(), getProto(), A, new int[]{C, D, E, F, G}); + builder.addInvokeRegisters(Type.VIRTUAL, getMethod(), getProto(), A, new int[] {C, D, E, F, G}); } @Override
diff --git a/src/main/java/com/android/tools/r8/code/InvokeVirtualRange.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeVirtualRange.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/InvokeVirtualRange.java rename to src/main/java/com/android/tools/r8/dex/code/DexInvokeVirtualRange.java index e93733f..97a87f8 100644 --- a/src/main/java/com/android/tools/r8/code/InvokeVirtualRange.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeVirtualRange.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.graph.OffsetToObjectMapping; @@ -9,17 +9,17 @@ import com.android.tools.r8.ir.code.Invoke.Type; import com.android.tools.r8.ir.conversion.IRBuilder; -public class InvokeVirtualRange extends InvokeMethodRange { +public class DexInvokeVirtualRange extends DexInvokeMethodRange { public static final int OPCODE = 0x74; public static final String NAME = "InvokeVirtualRange"; public static final String SMALI_NAME = "invoke-virtual/range"; - InvokeVirtualRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexInvokeVirtualRange(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getMethodMap()); } - public InvokeVirtualRange(int firstArgumentRegister, int argumentCount, DexMethod method) { + public DexInvokeVirtualRange(int firstArgumentRegister, int argumentCount, DexMethod method) { super(firstArgumentRegister, argumentCount, method); } @@ -49,7 +49,7 @@ } @Override - public InvokeVirtualRange asInvokeVirtualRange() { + public DexInvokeVirtualRange asInvokeVirtualRange() { return this; }
diff --git a/src/main/java/com/android/tools/r8/code/Iput.java b/src/main/java/com/android/tools/r8/dex/code/DexIput.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/Iput.java rename to src/main/java/com/android/tools/r8/dex/code/DexIput.java index 76f90af..1a1cea9 100644 --- a/src/main/java/com/android/tools/r8/code/Iput.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIput.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class Iput extends IgetOrIput { +public class DexIput extends DexIgetOrIput { public static final int OPCODE = 0x59; public static final String NAME = "Iput"; public static final String SMALI_NAME = "iput"; - /*package*/ Iput(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIput(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public Iput(int valueRegister, int objectRegister, DexField field) { + public DexIput(int valueRegister, int objectRegister, DexField field) { super(valueRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/IputBoolean.java b/src/main/java/com/android/tools/r8/dex/code/DexIputBoolean.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/IputBoolean.java rename to src/main/java/com/android/tools/r8/dex/code/DexIputBoolean.java index 634657d..501d0e4 100644 --- a/src/main/java/com/android/tools/r8/code/IputBoolean.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIputBoolean.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IputBoolean extends IgetOrIput { +public class DexIputBoolean extends DexIgetOrIput { public static final int OPCODE = 0x5c; public static final String NAME = "IputBoolean"; public static final String SMALI_NAME = "iput-boolean"; - /*package*/ IputBoolean(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIputBoolean(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public IputBoolean(int valueRegister, int objectRegister, DexField field) { + public DexIputBoolean(int valueRegister, int objectRegister, DexField field) { super(valueRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/IputByte.java b/src/main/java/com/android/tools/r8/dex/code/DexIputByte.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/IputByte.java rename to src/main/java/com/android/tools/r8/dex/code/DexIputByte.java index b579bec..2d5fec3 100644 --- a/src/main/java/com/android/tools/r8/code/IputByte.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIputByte.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IputByte extends IgetOrIput { +public class DexIputByte extends DexIgetOrIput { public static final int OPCODE = 0x5d; public static final String NAME = "IputByte"; public static final String SMALI_NAME = "iput-byte"; - /*package*/ IputByte(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIputByte(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public IputByte(int valueRegister, int objectRegister, DexField field) { + public DexIputByte(int valueRegister, int objectRegister, DexField field) { super(valueRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/IputChar.java b/src/main/java/com/android/tools/r8/dex/code/DexIputChar.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/IputChar.java rename to src/main/java/com/android/tools/r8/dex/code/DexIputChar.java index 1b0d42d..bf96679 100644 --- a/src/main/java/com/android/tools/r8/code/IputChar.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIputChar.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IputChar extends IgetOrIput { +public class DexIputChar extends DexIgetOrIput { public static final int OPCODE = 0x5e; public static final String NAME = "IputChar"; public static final String SMALI_NAME = "iput-char"; - /*package*/ IputChar(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIputChar(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public IputChar(int valueRegister, int objectRegister, DexField field) { + public DexIputChar(int valueRegister, int objectRegister, DexField field) { super(valueRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/IputObject.java b/src/main/java/com/android/tools/r8/dex/code/DexIputObject.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/IputObject.java rename to src/main/java/com/android/tools/r8/dex/code/DexIputObject.java index 816f81f..3052fec 100644 --- a/src/main/java/com/android/tools/r8/code/IputObject.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIputObject.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IputObject extends IgetOrIput { +public class DexIputObject extends DexIgetOrIput { public static final int OPCODE = 0x5b; public static final String NAME = "IputObject"; public static final String SMALI_NAME = "iput-object"; - /*package*/ IputObject(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIputObject(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public IputObject(int valueRegister, int objectRegister, DexField field) { + public DexIputObject(int valueRegister, int objectRegister, DexField field) { super(valueRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/IputShort.java b/src/main/java/com/android/tools/r8/dex/code/DexIputShort.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/IputShort.java rename to src/main/java/com/android/tools/r8/dex/code/DexIputShort.java index dfa9ff7..d6d32a3 100644 --- a/src/main/java/com/android/tools/r8/code/IputShort.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIputShort.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IputShort extends IgetOrIput { +public class DexIputShort extends DexIgetOrIput { public static final int OPCODE = 0x5f; public static final String NAME = "IputShort"; public static final String SMALI_NAME = "iput-short"; - /*package*/ IputShort(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIputShort(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public IputShort(int valueRegister, int objectRegister, DexField field) { + public DexIputShort(int valueRegister, int objectRegister, DexField field) { super(valueRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/IputWide.java b/src/main/java/com/android/tools/r8/dex/code/DexIputWide.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/IputWide.java rename to src/main/java/com/android/tools/r8/dex/code/DexIputWide.java index 261dc26..2f70828 100644 --- a/src/main/java/com/android/tools/r8/code/IputWide.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexIputWide.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class IputWide extends IgetOrIput { +public class DexIputWide extends DexIgetOrIput { public static final int OPCODE = 0x5a; public static final String NAME = "IputWide"; public static final String SMALI_NAME = "iput-wide"; - /*package*/ IputWide(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexIputWide(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public IputWide(int valueRegister, int objectRegister, DexField field) { + public DexIputWide(int valueRegister, int objectRegister, DexField field) { super(valueRegister, objectRegister, field); }
diff --git a/src/main/java/com/android/tools/r8/code/DexItemBasedConstString.java b/src/main/java/com/android/tools/r8/dex/code/DexItemBasedConstString.java similarity index 94% rename from src/main/java/com/android/tools/r8/code/DexItemBasedConstString.java rename to src/main/java/com/android/tools/r8/dex/code/DexItemBasedConstString.java index 70e9c4f..a6930f3 100644 --- a/src/main/java/com/android/tools/r8/code/DexItemBasedConstString.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexItemBasedConstString.java
@@ -1,7 +1,7 @@ // Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.errors.Unreachable; @@ -17,7 +17,7 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -public class DexItemBasedConstString extends Format21c<DexReference> { +public class DexItemBasedConstString extends DexFormat21c<DexReference> { public static final String NAME = "DexItemBasedConstString"; public static final String SMALI_NAME = "const-string*"; @@ -69,7 +69,7 @@ } @Override - void internalSubSpecify(StructuralSpecification<Format21c<DexReference>, ?> spec) { + void internalSubSpecify(StructuralSpecification<DexFormat21c<DexReference>, ?> spec) { spec.withDexReference(i -> i.BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/LongToDouble.java b/src/main/java/com/android/tools/r8/dex/code/DexLongToDouble.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/LongToDouble.java rename to src/main/java/com/android/tools/r8/dex/code/DexLongToDouble.java index f2ac125..224b047 100644 --- a/src/main/java/com/android/tools/r8/code/LongToDouble.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexLongToDouble.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class LongToDouble extends Format12x { + +public class DexLongToDouble extends DexFormat12x { public static final int OPCODE = 0x86; public static final String NAME = "LongToDouble"; public static final String SMALI_NAME = "long-to-double"; - LongToDouble(int high, BytecodeStream stream) { + DexLongToDouble(int high, BytecodeStream stream) { super(high, stream); } - public LongToDouble(int dest, int source) { + public DexLongToDouble(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/LongToFloat.java b/src/main/java/com/android/tools/r8/dex/code/DexLongToFloat.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/LongToFloat.java rename to src/main/java/com/android/tools/r8/dex/code/DexLongToFloat.java index ead1ee2..ddec7bf 100644 --- a/src/main/java/com/android/tools/r8/code/LongToFloat.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexLongToFloat.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class LongToFloat extends Format12x { + +public class DexLongToFloat extends DexFormat12x { public static final int OPCODE = 0x85; public static final String NAME = "LongToFloat"; public static final String SMALI_NAME = "long-to-float"; - LongToFloat(int high, BytecodeStream stream) { + DexLongToFloat(int high, BytecodeStream stream) { super(high, stream); } - public LongToFloat(int dest, int source) { + public DexLongToFloat(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/LongToInt.java b/src/main/java/com/android/tools/r8/dex/code/DexLongToInt.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/LongToInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexLongToInt.java index bbb10b6..4d912a4 100644 --- a/src/main/java/com/android/tools/r8/code/LongToInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexLongToInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class LongToInt extends Format12x { +public class DexLongToInt extends DexFormat12x { public static final int OPCODE = 0x84; public static final String NAME = "LongToInt"; public static final String SMALI_NAME = "long-to-int"; - LongToInt(int high, BytecodeStream stream) { + DexLongToInt(int high, BytecodeStream stream) { super(high, stream); } - public LongToInt(int dest, int source) { + public DexLongToInt(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/MonitorEnter.java b/src/main/java/com/android/tools/r8/dex/code/DexMonitorEnter.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/MonitorEnter.java rename to src/main/java/com/android/tools/r8/dex/code/DexMonitorEnter.java index 17c9852..620c557 100644 --- a/src/main/java/com/android/tools/r8/code/MonitorEnter.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMonitorEnter.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.Monitor.Type; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MonitorEnter extends Format11x { + +public class DexMonitorEnter extends DexFormat11x { public static final int OPCODE = 0x1d; public static final String NAME = "MonitorEnter"; public static final String SMALI_NAME = "monitor-enter"; - MonitorEnter(int high, BytecodeStream stream) { + DexMonitorEnter(int high, BytecodeStream stream) { super(high, stream); } - public MonitorEnter(int register) { + public DexMonitorEnter(int register) { super(register); }
diff --git a/src/main/java/com/android/tools/r8/code/MonitorExit.java b/src/main/java/com/android/tools/r8/dex/code/DexMonitorExit.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/MonitorExit.java rename to src/main/java/com/android/tools/r8/dex/code/DexMonitorExit.java index 7725ca0..d001e32 100644 --- a/src/main/java/com/android/tools/r8/code/MonitorExit.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMonitorExit.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.Monitor.Type; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MonitorExit extends Format11x { + +public class DexMonitorExit extends DexFormat11x { public static final int OPCODE = 0x1e; public static final String NAME = "MonitorExit"; public static final String SMALI_NAME = "monitor-exit"; - MonitorExit(int high, BytecodeStream stream) { + DexMonitorExit(int high, BytecodeStream stream) { super(high, stream); } - public MonitorExit(int register) { + public DexMonitorExit(int register) { super(register); }
diff --git a/src/main/java/com/android/tools/r8/code/Move.java b/src/main/java/com/android/tools/r8/dex/code/DexMove.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/Move.java rename to src/main/java/com/android/tools/r8/dex/code/DexMove.java index 3e750a6..5c45e0c 100644 --- a/src/main/java/com/android/tools/r8/code/Move.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMove.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.ValueTypeConstraint; import com.android.tools.r8.ir.conversion.IRBuilder; -public class Move extends Format12x { +public class DexMove extends DexFormat12x { public static final int OPCODE = 0x1; public static final String NAME = "Move"; public static final String SMALI_NAME = "move"; - Move(int high, BytecodeStream stream) { + DexMove(int high, BytecodeStream stream) { super(high, stream); } - public Move(int dest, int src) { + public DexMove(int dest, int src) { super(dest, src); }
diff --git a/src/main/java/com/android/tools/r8/code/Move16.java b/src/main/java/com/android/tools/r8/dex/code/DexMove16.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/Move16.java rename to src/main/java/com/android/tools/r8/dex/code/DexMove16.java index 64a0f7c..a003bc3 100644 --- a/src/main/java/com/android/tools/r8/code/Move16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMove16.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.ValueTypeConstraint; import com.android.tools.r8.ir.conversion.IRBuilder; -public class Move16 extends Format32x { +public class DexMove16 extends DexFormat32x { public static final int OPCODE = 0x3; public static final String NAME = "Move16"; public static final String SMALI_NAME = "move/16"; - Move16(int high, BytecodeStream stream) { + DexMove16(int high, BytecodeStream stream) { super(high, stream); } - public Move16(int dest, int src) { + public DexMove16(int dest, int src) { super(dest, src); }
diff --git a/src/main/java/com/android/tools/r8/code/MoveException.java b/src/main/java/com/android/tools/r8/dex/code/DexMoveException.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/MoveException.java rename to src/main/java/com/android/tools/r8/dex/code/DexMoveException.java index ca79a0c..1f3888e 100644 --- a/src/main/java/com/android/tools/r8/code/MoveException.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMoveException.java
@@ -1,21 +1,21 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MoveException extends Format11x { +public class DexMoveException extends DexFormat11x { public static final int OPCODE = 0xd; public static final String NAME = "MoveException"; public static final String SMALI_NAME = "move-exception"; - MoveException(int high, BytecodeStream stream) { + DexMoveException(int high, BytecodeStream stream) { super(high, stream); } - public MoveException(int AA) { + public DexMoveException(int AA) { super(AA); }
diff --git a/src/main/java/com/android/tools/r8/code/MoveFrom16.java b/src/main/java/com/android/tools/r8/dex/code/DexMoveFrom16.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/MoveFrom16.java rename to src/main/java/com/android/tools/r8/dex/code/DexMoveFrom16.java index 51b456e..48f9fa8 100644 --- a/src/main/java/com/android/tools/r8/code/MoveFrom16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMoveFrom16.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.ValueTypeConstraint; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MoveFrom16 extends Format22x { +public class DexMoveFrom16 extends DexFormat22x { public static final int OPCODE = 0x2; public static final String NAME = "MoveFrom16"; public static final String SMALI_NAME = "move-from/16"; - MoveFrom16(int high, BytecodeStream stream) { + DexMoveFrom16(int high, BytecodeStream stream) { super(high, stream); } - public MoveFrom16(int dest, int src) { + public DexMoveFrom16(int dest, int src) { super(dest, src); }
diff --git a/src/main/java/com/android/tools/r8/code/MoveObject.java b/src/main/java/com/android/tools/r8/dex/code/DexMoveObject.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/MoveObject.java rename to src/main/java/com/android/tools/r8/dex/code/DexMoveObject.java index a308ab1..22ee41c 100644 --- a/src/main/java/com/android/tools/r8/code/MoveObject.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMoveObject.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.ValueType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MoveObject extends Format12x { +public class DexMoveObject extends DexFormat12x { public static final int OPCODE = 0x7; public static final String NAME = "MoveObject"; public static final String SMALI_NAME = "move-object"; - MoveObject(int high, BytecodeStream stream) { + DexMoveObject(int high, BytecodeStream stream) { super(high, stream); } - public MoveObject(int dest, int src) { + public DexMoveObject(int dest, int src) { super(dest, src); }
diff --git a/src/main/java/com/android/tools/r8/code/MoveObject16.java b/src/main/java/com/android/tools/r8/dex/code/DexMoveObject16.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/MoveObject16.java rename to src/main/java/com/android/tools/r8/dex/code/DexMoveObject16.java index a7eb12c..3598213 100644 --- a/src/main/java/com/android/tools/r8/code/MoveObject16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMoveObject16.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.ValueType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MoveObject16 extends Format32x { +public class DexMoveObject16 extends DexFormat32x { public static final int OPCODE = 0x9; public static final String NAME = "MoveObject16"; public static final String SMALI_NAME = "move-object/16"; - MoveObject16(int high, BytecodeStream stream) { + DexMoveObject16(int high, BytecodeStream stream) { super(high, stream); } - public MoveObject16(int dest, int src) { + public DexMoveObject16(int dest, int src) { super(dest, src); }
diff --git a/src/main/java/com/android/tools/r8/code/MoveObjectFrom16.java b/src/main/java/com/android/tools/r8/dex/code/DexMoveObjectFrom16.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/MoveObjectFrom16.java rename to src/main/java/com/android/tools/r8/dex/code/DexMoveObjectFrom16.java index 8b32125..4016567 100644 --- a/src/main/java/com/android/tools/r8/code/MoveObjectFrom16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMoveObjectFrom16.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.ValueType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MoveObjectFrom16 extends Format22x { + +public class DexMoveObjectFrom16 extends DexFormat22x { public static final int OPCODE = 0x8; public static final String NAME = "MoveObjectFrom16"; public static final String SMALI_NAME = "move-object-from/16"; - MoveObjectFrom16(int high, BytecodeStream stream) { + DexMoveObjectFrom16(int high, BytecodeStream stream) { super(high, stream); } - public MoveObjectFrom16(int dest, int src) { + public DexMoveObjectFrom16(int dest, int src) { super(dest, src); }
diff --git a/src/main/java/com/android/tools/r8/code/MoveResult.java b/src/main/java/com/android/tools/r8/dex/code/DexMoveResult.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/MoveResult.java rename to src/main/java/com/android/tools/r8/dex/code/DexMoveResult.java index cd9eb78..caa3883 100644 --- a/src/main/java/com/android/tools/r8/code/MoveResult.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMoveResult.java
@@ -1,20 +1,21 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MoveResult extends Format11x { + +public class DexMoveResult extends DexFormat11x { public static final int OPCODE = 0xa; public static final String NAME = "MoveResult"; public static final String SMALI_NAME = "move-result"; - /*package*/ MoveResult(int high, BytecodeStream stream) { + /*package*/ DexMoveResult(int high, BytecodeStream stream) { super(high, stream); } - public MoveResult(int AA) { + public DexMoveResult(int AA) { super(AA); }
diff --git a/src/main/java/com/android/tools/r8/code/MoveResultObject.java b/src/main/java/com/android/tools/r8/dex/code/DexMoveResultObject.java similarity index 78% rename from src/main/java/com/android/tools/r8/code/MoveResultObject.java rename to src/main/java/com/android/tools/r8/dex/code/DexMoveResultObject.java index 3210b71..d5248c7 100644 --- a/src/main/java/com/android/tools/r8/code/MoveResultObject.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMoveResultObject.java
@@ -1,21 +1,21 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MoveResultObject extends Format11x { +public class DexMoveResultObject extends DexFormat11x { public static final int OPCODE = 0xc; public static final String NAME = "MoveResultObject"; public static final String SMALI_NAME = "move-result-object"; - /*package*/ MoveResultObject(int high, BytecodeStream stream) { + /*package*/ DexMoveResultObject(int high, BytecodeStream stream) { super(high, stream); } - public MoveResultObject(int AA) { + public DexMoveResultObject(int AA) { super(AA); }
diff --git a/src/main/java/com/android/tools/r8/code/MoveResultWide.java b/src/main/java/com/android/tools/r8/dex/code/DexMoveResultWide.java similarity index 79% rename from src/main/java/com/android/tools/r8/code/MoveResultWide.java rename to src/main/java/com/android/tools/r8/dex/code/DexMoveResultWide.java index 95b4350..6bff9b6 100644 --- a/src/main/java/com/android/tools/r8/code/MoveResultWide.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMoveResultWide.java
@@ -1,21 +1,21 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MoveResultWide extends Format11x { +public class DexMoveResultWide extends DexFormat11x { public static final int OPCODE = 0xb; public static final String NAME = "MoveResultWide"; public static final String SMALI_NAME = "move-result-wide"; - /*package*/ MoveResultWide(int high, BytecodeStream stream) { + /*package*/ DexMoveResultWide(int high, BytecodeStream stream) { super(high, stream); } - public MoveResultWide(int AA) { + public DexMoveResultWide(int AA) { super(AA); }
diff --git a/src/main/java/com/android/tools/r8/code/MoveWide.java b/src/main/java/com/android/tools/r8/dex/code/DexMoveWide.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/MoveWide.java rename to src/main/java/com/android/tools/r8/dex/code/DexMoveWide.java index 06d44a2..88fe616 100644 --- a/src/main/java/com/android/tools/r8/code/MoveWide.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMoveWide.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.ValueTypeConstraint; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MoveWide extends Format12x { +public class DexMoveWide extends DexFormat12x { public static final int OPCODE = 0x4; public static final String NAME = "MoveWide"; public static final String SMALI_NAME = "move-wide"; - MoveWide(int high, BytecodeStream stream) { + DexMoveWide(int high, BytecodeStream stream) { super(high, stream); } - public MoveWide(int dest, int src) { + public DexMoveWide(int dest, int src) { super(dest, src); }
diff --git a/src/main/java/com/android/tools/r8/code/MoveWide16.java b/src/main/java/com/android/tools/r8/dex/code/DexMoveWide16.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/MoveWide16.java rename to src/main/java/com/android/tools/r8/dex/code/DexMoveWide16.java index 66fe3fd..fd80875 100644 --- a/src/main/java/com/android/tools/r8/code/MoveWide16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMoveWide16.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.ValueTypeConstraint; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MoveWide16 extends Format32x { +public class DexMoveWide16 extends DexFormat32x { public static final int OPCODE = 0x6; public static final String NAME = "MoveWide16"; public static final String SMALI_NAME = "move-wide/16"; - MoveWide16(int high, BytecodeStream stream) { + DexMoveWide16(int high, BytecodeStream stream) { super(high, stream); } - public MoveWide16(int dest, int src) { + public DexMoveWide16(int dest, int src) { super(dest, src); }
diff --git a/src/main/java/com/android/tools/r8/code/MoveWideFrom16.java b/src/main/java/com/android/tools/r8/dex/code/DexMoveWideFrom16.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/MoveWideFrom16.java rename to src/main/java/com/android/tools/r8/dex/code/DexMoveWideFrom16.java index 45c3840..a3c4f6d 100644 --- a/src/main/java/com/android/tools/r8/code/MoveWideFrom16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMoveWideFrom16.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.ValueTypeConstraint; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MoveWideFrom16 extends Format22x { +public class DexMoveWideFrom16 extends DexFormat22x { public static final int OPCODE = 0x5; public static final String NAME = "MoveWideFrom16"; public static final String SMALI_NAME = "move-wide-from/16"; - MoveWideFrom16(int high, BytecodeStream stream) { + DexMoveWideFrom16(int high, BytecodeStream stream) { super(high, stream); } - public MoveWideFrom16(int dest, int src) { + public DexMoveWideFrom16(int dest, int src) { super(dest, src); }
diff --git a/src/main/java/com/android/tools/r8/code/MulDouble.java b/src/main/java/com/android/tools/r8/dex/code/DexMulDouble.java similarity index 86% rename from src/main/java/com/android/tools/r8/code/MulDouble.java rename to src/main/java/com/android/tools/r8/dex/code/DexMulDouble.java index 5c3f9df..1f195a0 100644 --- a/src/main/java/com/android/tools/r8/code/MulDouble.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMulDouble.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MulDouble extends Format23x { +public class DexMulDouble extends DexFormat23x { public static final int OPCODE = 0xad; public static final String NAME = "MulDouble"; public static final String SMALI_NAME = "mul-double"; - MulDouble(int high, BytecodeStream stream) { + DexMulDouble(int high, BytecodeStream stream) { super(high, stream); } - public MulDouble(int dest, int left, int right) { + public DexMulDouble(int dest, int left, int right) { super(dest, left, right); // The art x86 backend had a bug that made it fail on "mul r0, r1, r0" instructions where // the second src register and the dst register is the same (but the first src register is
diff --git a/src/main/java/com/android/tools/r8/code/MulDouble2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexMulDouble2Addr.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/MulDouble2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexMulDouble2Addr.java index 347ef3a..8290b14 100644 --- a/src/main/java/com/android/tools/r8/code/MulDouble2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMulDouble2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MulDouble2Addr extends Format12x { +public class DexMulDouble2Addr extends DexFormat12x { public static final int OPCODE = 0xcd; public static final String NAME = "MulDouble2Addr"; public static final String SMALI_NAME = "mul-double/2addr"; - MulDouble2Addr(int high, BytecodeStream stream) { + DexMulDouble2Addr(int high, BytecodeStream stream) { super(high, stream); } - public MulDouble2Addr(int left, int right) { + public DexMulDouble2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/MulFloat.java b/src/main/java/com/android/tools/r8/dex/code/DexMulFloat.java similarity index 86% rename from src/main/java/com/android/tools/r8/code/MulFloat.java rename to src/main/java/com/android/tools/r8/dex/code/DexMulFloat.java index 1792264..7155e5e 100644 --- a/src/main/java/com/android/tools/r8/code/MulFloat.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMulFloat.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MulFloat extends Format23x { +public class DexMulFloat extends DexFormat23x { public static final int OPCODE = 0xa8; public static final String NAME = "MulFloat"; public static final String SMALI_NAME = "mul-float"; - MulFloat(int high, BytecodeStream stream) { + DexMulFloat(int high, BytecodeStream stream) { super(high, stream); } - public MulFloat(int dest, int left, int right) { + public DexMulFloat(int dest, int left, int right) { super(dest, left, right); // The art x86 backend had a bug that made it fail on "mul r0, r1, r0" instructions where // the second src register and the dst register is the same (but the first src register is
diff --git a/src/main/java/com/android/tools/r8/code/MulFloat2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexMulFloat2Addr.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/MulFloat2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexMulFloat2Addr.java index 1e56be6..0147cac 100644 --- a/src/main/java/com/android/tools/r8/code/MulFloat2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMulFloat2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MulFloat2Addr extends Format12x { +public class DexMulFloat2Addr extends DexFormat12x { public static final int OPCODE = 0xc8; public static final String NAME = "MulFloat2Addr"; public static final String SMALI_NAME = "mul-float/2addr"; - MulFloat2Addr(int high, BytecodeStream stream) { + DexMulFloat2Addr(int high, BytecodeStream stream) { super(high, stream); } - public MulFloat2Addr(int left, int right) { + public DexMulFloat2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/MulInt.java b/src/main/java/com/android/tools/r8/dex/code/DexMulInt.java similarity index 86% rename from src/main/java/com/android/tools/r8/code/MulInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexMulInt.java index 2513ab9..12c5ed9 100644 --- a/src/main/java/com/android/tools/r8/code/MulInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMulInt.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MulInt extends Format23x { + +public class DexMulInt extends DexFormat23x { public static final int OPCODE = 0x92; public static final String NAME = "MulInt"; public static final String SMALI_NAME = "mul-int"; - MulInt(int high, BytecodeStream stream) { + DexMulInt(int high, BytecodeStream stream) { super(high, stream); } - public MulInt(int dest, int left, int right) { + public DexMulInt(int dest, int left, int right) { super(dest, left, right); // The art x86 backend had a bug that made it fail on "mul r0, r1, r0" instructions where // the second src register and the dst register is the same (but the first src register is
diff --git a/src/main/java/com/android/tools/r8/code/MulInt2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexMulInt2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/MulInt2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexMulInt2Addr.java index e65146a..d0fda45 100644 --- a/src/main/java/com/android/tools/r8/code/MulInt2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMulInt2Addr.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MulInt2Addr extends Format12x { + +public class DexMulInt2Addr extends DexFormat12x { public static final int OPCODE = 0xb2; public static final String NAME = "MulInt2Addr"; public static final String SMALI_NAME = "mul-int/2addr"; - MulInt2Addr(int high, BytecodeStream stream) { + DexMulInt2Addr(int high, BytecodeStream stream) { super(high, stream); } - public MulInt2Addr(int left, int right) { + public DexMulInt2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/MulIntLit16.java b/src/main/java/com/android/tools/r8/dex/code/DexMulIntLit16.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/MulIntLit16.java rename to src/main/java/com/android/tools/r8/dex/code/DexMulIntLit16.java index efa2cfb..ba7acd0 100644 --- a/src/main/java/com/android/tools/r8/code/MulIntLit16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMulIntLit16.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MulIntLit16 extends Format22s { +public class DexMulIntLit16 extends DexFormat22s { public static final int OPCODE = 0xd2; public static final String NAME = "MulIntLit16"; public static final String SMALI_NAME = "mul-int/lit16"; - MulIntLit16(int high, BytecodeStream stream) { + DexMulIntLit16(int high, BytecodeStream stream) { super(high, stream); } - public MulIntLit16(int dest, int register, int constant) { + public DexMulIntLit16(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/MulIntLit8.java b/src/main/java/com/android/tools/r8/dex/code/DexMulIntLit8.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/MulIntLit8.java rename to src/main/java/com/android/tools/r8/dex/code/DexMulIntLit8.java index 0de1c6f..0173322 100644 --- a/src/main/java/com/android/tools/r8/code/MulIntLit8.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMulIntLit8.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MulIntLit8 extends Format22b { +public class DexMulIntLit8 extends DexFormat22b { public static final int OPCODE = 0xda; public static final String NAME = "MulIntLit8"; public static final String SMALI_NAME = "mul-int/lit8"; - MulIntLit8(int high, BytecodeStream stream) { + DexMulIntLit8(int high, BytecodeStream stream) { super(high, stream); } - public MulIntLit8(int dest, int register, int constant) { + public DexMulIntLit8(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/MulLong.java b/src/main/java/com/android/tools/r8/dex/code/DexMulLong.java similarity index 86% rename from src/main/java/com/android/tools/r8/code/MulLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexMulLong.java index 486b4d6..d545bec 100644 --- a/src/main/java/com/android/tools/r8/code/MulLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMulLong.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MulLong extends Format23x { +public class DexMulLong extends DexFormat23x { public static final int OPCODE = 0x9d; public static final String NAME = "MulLong"; public static final String SMALI_NAME = "mul-long"; - MulLong(int high, BytecodeStream stream) { + DexMulLong(int high, BytecodeStream stream) { super(high, stream); } - public MulLong(int dest, int left, int right) { + public DexMulLong(int dest, int left, int right) { super(dest, left, right); // The art x86 backend had a bug that made it fail on "mul r0, r1, r0" instructions where // the second src register and the dst register is the same (but the first src register is
diff --git a/src/main/java/com/android/tools/r8/code/MulLong2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexMulLong2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/MulLong2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexMulLong2Addr.java index 2cd78f6..ae0c5cf 100644 --- a/src/main/java/com/android/tools/r8/code/MulLong2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexMulLong2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class MulLong2Addr extends Format12x { +public class DexMulLong2Addr extends DexFormat12x { public static final int OPCODE = 0xbd; public static final String NAME = "MulLong2Addr"; public static final String SMALI_NAME = "mul-long/2addr"; - MulLong2Addr(int high, BytecodeStream stream) { + DexMulLong2Addr(int high, BytecodeStream stream) { super(high, stream); } - public MulLong2Addr(int left, int right) { + public DexMulLong2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/NegDouble.java b/src/main/java/com/android/tools/r8/dex/code/DexNegDouble.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/NegDouble.java rename to src/main/java/com/android/tools/r8/dex/code/DexNegDouble.java index bd054aa..64c6dcd 100644 --- a/src/main/java/com/android/tools/r8/code/NegDouble.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexNegDouble.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class NegDouble extends Format12x { + +public class DexNegDouble extends DexFormat12x { public static final int OPCODE = 0x80; public static final String NAME = "NegDouble"; public static final String SMALI_NAME = "neg-double"; - /*package*/ NegDouble(int high, BytecodeStream stream) { + /*package*/ DexNegDouble(int high, BytecodeStream stream) { super(high, stream); } - public NegDouble(int dest, int source) { + public DexNegDouble(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/NegFloat.java b/src/main/java/com/android/tools/r8/dex/code/DexNegFloat.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/NegFloat.java rename to src/main/java/com/android/tools/r8/dex/code/DexNegFloat.java index 54d3053..58d214c 100644 --- a/src/main/java/com/android/tools/r8/code/NegFloat.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexNegFloat.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class NegFloat extends Format12x { +public class DexNegFloat extends DexFormat12x { public static final int OPCODE = 0x7f; public static final String NAME = "NegFloat"; public static final String SMALI_NAME = "neg-float"; - /*package*/ NegFloat(int high, BytecodeStream stream) { + /*package*/ DexNegFloat(int high, BytecodeStream stream) { super(high, stream); } - public NegFloat(int dest, int source) { + public DexNegFloat(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/NegInt.java b/src/main/java/com/android/tools/r8/dex/code/DexNegInt.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/NegInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexNegInt.java index 82e7b86..fda8099 100644 --- a/src/main/java/com/android/tools/r8/code/NegInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexNegInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class NegInt extends Format12x { +public class DexNegInt extends DexFormat12x { public static final int OPCODE = 0x7b; public static final String NAME = "NegInt"; public static final String SMALI_NAME = "neg-int"; - /*package*/ NegInt(int high, BytecodeStream stream) { + /*package*/ DexNegInt(int high, BytecodeStream stream) { super(high, stream); } - public NegInt(int dest, int source) { + public DexNegInt(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/NegLong.java b/src/main/java/com/android/tools/r8/dex/code/DexNegLong.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/NegLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexNegLong.java index 3b2a304..43a8780 100644 --- a/src/main/java/com/android/tools/r8/code/NegLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexNegLong.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class NegLong extends Format12x { + +public class DexNegLong extends DexFormat12x { public static final int OPCODE = 0x7d; public static final String NAME = "NegLong"; public static final String SMALI_NAME = "neg-long"; - /*package*/ NegLong(int high, BytecodeStream stream) { + /*package*/ DexNegLong(int high, BytecodeStream stream) { super(high, stream); } - public NegLong(int dest, int source) { + public DexNegLong(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/NewArray.java b/src/main/java/com/android/tools/r8/dex/code/DexNewArray.java similarity index 89% rename from src/main/java/com/android/tools/r8/code/NewArray.java rename to src/main/java/com/android/tools/r8/dex/code/DexNewArray.java index 35b3187..70fba01 100644 --- a/src/main/java/com/android/tools/r8/code/NewArray.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexNewArray.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.DexType; @@ -14,17 +14,17 @@ import com.android.tools.r8.ir.conversion.LensCodeRewriterUtils; import java.nio.ShortBuffer; -public class NewArray extends Format22c<DexType> { +public class DexNewArray extends DexFormat22c<DexType> { public static final int OPCODE = 0x23; public static final String NAME = "NewArray"; public static final String SMALI_NAME = "new-array"; - /*package*/ NewArray(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexNewArray(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getTypeMap()); } - public NewArray(int dest, int size, DexType type) { + public DexNewArray(int dest, int size, DexType type) { super(dest, size, type); }
diff --git a/src/main/java/com/android/tools/r8/code/NewInstance.java b/src/main/java/com/android/tools/r8/dex/code/DexNewInstance.java similarity index 87% rename from src/main/java/com/android/tools/r8/code/NewInstance.java rename to src/main/java/com/android/tools/r8/dex/code/DexNewInstance.java index 1aed86e..4867c22 100644 --- a/src/main/java/com/android/tools/r8/code/NewInstance.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexNewInstance.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.DexType; @@ -15,17 +15,17 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -public class NewInstance extends Format21c<DexType> { +public class DexNewInstance extends DexFormat21c<DexType> { public static final int OPCODE = 0x22; public static final String NAME = "NewInstance"; public static final String SMALI_NAME = "new-instance"; - NewInstance(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexNewInstance(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getTypeMap()); } - public NewInstance(int AA, DexType BBBB) { + public DexNewInstance(int AA, DexType BBBB) { super(AA, BBBB); } @@ -45,7 +45,7 @@ } @Override - void internalSubSpecify(StructuralSpecification<Format21c<DexType>, ?> spec) { + void internalSubSpecify(StructuralSpecification<DexFormat21c<DexType>, ?> spec) { spec.withItem(i -> i.BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/DexNewUnboxedEnumInstance.java b/src/main/java/com/android/tools/r8/dex/code/DexNewUnboxedEnumInstance.java similarity index 91% rename from src/main/java/com/android/tools/r8/code/DexNewUnboxedEnumInstance.java rename to src/main/java/com/android/tools/r8/dex/code/DexNewUnboxedEnumInstance.java index 9909ac6..235aaca 100644 --- a/src/main/java/com/android/tools/r8/code/DexNewUnboxedEnumInstance.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexNewUnboxedEnumInstance.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.errors.Unreachable; @@ -16,7 +16,7 @@ import java.nio.ShortBuffer; /** The dex representation of {@link com.android.tools.r8.ir.code.NewUnboxedEnumInstance}. */ -public class DexNewUnboxedEnumInstance extends Format21c<DexType> { +public class DexNewUnboxedEnumInstance extends DexFormat21c<DexType> { public static final int OPCODE = 0x22; public static final String NAME = "NewUnboxedEnumInstance"; @@ -45,7 +45,7 @@ } @Override - void internalSubSpecify(StructuralSpecification<Format21c<DexType>, ?> spec) { + void internalSubSpecify(StructuralSpecification<DexFormat21c<DexType>, ?> spec) { spec.withItem(i -> i.BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/Nop.java b/src/main/java/com/android/tools/r8/dex/code/DexNop.java similarity index 71% rename from src/main/java/com/android/tools/r8/code/Nop.java rename to src/main/java/com/android/tools/r8/dex/code/DexNop.java index 1e46cfc..f25e0ec 100644 --- a/src/main/java/com/android/tools/r8/code/Nop.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexNop.java
@@ -1,40 +1,39 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; import com.android.tools.r8.utils.structural.CompareToVisitor; -public class Nop extends Format10x { +public class DexNop extends DexFormat10x { public static final int OPCODE = 0x0; public static final String NAME = "Nop"; public static final String SMALI_NAME = "nop"; - Nop(int high, BytecodeStream stream) { + DexNop(int high, BytecodeStream stream) { super(high, stream); } - public Nop() { - } + public DexNop() {} - public static Nop create(int high, BytecodeStream stream) { + public static DexNop create(int high, BytecodeStream stream) { switch (high) { case 0x01: - return new PackedSwitchPayload(high, stream); + return new DexPackedSwitchPayload(high, stream); case 0x02: - return new SparseSwitchPayload(high, stream); + return new DexSparseSwitchPayload(high, stream); case 0x03: - return new FillArrayDataPayload(high, stream); + return new DexFillArrayDataPayload(high, stream); default: - return new Nop(high, stream); + return new DexNop(high, stream); } } // Notice that this must be overridden by the "Nop" subtypes! @Override - int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { + int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { return DexCompareHelper.compareIdUniquelyDeterminesEquality(this, other); }
diff --git a/src/main/java/com/android/tools/r8/code/NotInt.java b/src/main/java/com/android/tools/r8/dex/code/DexNotInt.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/NotInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexNotInt.java index c9681a7..0dde493 100644 --- a/src/main/java/com/android/tools/r8/code/NotInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexNotInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class NotInt extends Format12x { +public class DexNotInt extends DexFormat12x { public static final int OPCODE = 0x7c; public static final String NAME = "NotInt"; public static final String SMALI_NAME = "not-int"; - NotInt(int high, BytecodeStream stream) { + DexNotInt(int high, BytecodeStream stream) { super(high, stream); } - public NotInt(int dest, int source) { + public DexNotInt(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/NotLong.java b/src/main/java/com/android/tools/r8/dex/code/DexNotLong.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/NotLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexNotLong.java index fcbf475..ec5af4d 100644 --- a/src/main/java/com/android/tools/r8/code/NotLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexNotLong.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class NotLong extends Format12x { + +public class DexNotLong extends DexFormat12x { public static final int OPCODE = 0x7e; public static final String NAME = "NotLong"; public static final String SMALI_NAME = "not-long"; - NotLong(int high, BytecodeStream stream) { + DexNotLong(int high, BytecodeStream stream) { super(high, stream); } - public NotLong(int dest, int source) { + public DexNotLong(int dest, int source) { super(dest, source); }
diff --git a/src/main/java/com/android/tools/r8/code/OrInt.java b/src/main/java/com/android/tools/r8/dex/code/DexOrInt.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/OrInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexOrInt.java index b7aeba4..61be0ac 100644 --- a/src/main/java/com/android/tools/r8/code/OrInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexOrInt.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class OrInt extends Format23x { + +public class DexOrInt extends DexFormat23x { public static final int OPCODE = 0x96; public static final String NAME = "OrInt"; public static final String SMALI_NAME = "or-int"; - OrInt(int high, BytecodeStream stream) { + DexOrInt(int high, BytecodeStream stream) { super(high, stream); } - public OrInt(int dest, int left, int right) { + public DexOrInt(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/OrInt2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexOrInt2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/OrInt2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexOrInt2Addr.java index 869be4d..a152de8 100644 --- a/src/main/java/com/android/tools/r8/code/OrInt2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexOrInt2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class OrInt2Addr extends Format12x { +public class DexOrInt2Addr extends DexFormat12x { public static final int OPCODE = 0xb6; public static final String NAME = "OrInt2Addr"; public static final String SMALI_NAME = "or-int/2addr"; - OrInt2Addr(int high, BytecodeStream stream) { + DexOrInt2Addr(int high, BytecodeStream stream) { super(high, stream); } - public OrInt2Addr(int left, int right) { + public DexOrInt2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/OrIntLit16.java b/src/main/java/com/android/tools/r8/dex/code/DexOrIntLit16.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/OrIntLit16.java rename to src/main/java/com/android/tools/r8/dex/code/DexOrIntLit16.java index 73e384d..9d3f245 100644 --- a/src/main/java/com/android/tools/r8/code/OrIntLit16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexOrIntLit16.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class OrIntLit16 extends Format22s { +public class DexOrIntLit16 extends DexFormat22s { public static final int OPCODE = 0xd6; public static final String NAME = "OrIntLit16"; public static final String SMALI_NAME = "or-int/lit16"; - OrIntLit16(int high, BytecodeStream stream) { + DexOrIntLit16(int high, BytecodeStream stream) { super(high, stream); } - public OrIntLit16(int dest, int register, int constant) { + public DexOrIntLit16(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/OrIntLit8.java b/src/main/java/com/android/tools/r8/dex/code/DexOrIntLit8.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/OrIntLit8.java rename to src/main/java/com/android/tools/r8/dex/code/DexOrIntLit8.java index 8c37e7b..4810953 100644 --- a/src/main/java/com/android/tools/r8/code/OrIntLit8.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexOrIntLit8.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class OrIntLit8 extends Format22b { +public class DexOrIntLit8 extends DexFormat22b { public static final int OPCODE = 0xde; public static final String NAME = "OrIntLit8"; public static final String SMALI_NAME = "or-int/lit8"; - OrIntLit8(int high, BytecodeStream stream) { + DexOrIntLit8(int high, BytecodeStream stream) { super(high, stream); } - public OrIntLit8(int dest, int register, int constant) { + public DexOrIntLit8(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/OrLong.java b/src/main/java/com/android/tools/r8/dex/code/DexOrLong.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/OrLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexOrLong.java index 0cef69b..02c9f52 100644 --- a/src/main/java/com/android/tools/r8/code/OrLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexOrLong.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class OrLong extends Format23x { + +public class DexOrLong extends DexFormat23x { public static final int OPCODE = 0xA1; public static final String NAME = "OrLong"; public static final String SMALI_NAME = "or-long"; - OrLong(int high, BytecodeStream stream) { + DexOrLong(int high, BytecodeStream stream) { super(high, stream); } - public OrLong(int dest, int left, int right) { + public DexOrLong(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/OrLong2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexOrLong2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/OrLong2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexOrLong2Addr.java index 175a4a7..5fffef9 100644 --- a/src/main/java/com/android/tools/r8/code/OrLong2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexOrLong2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class OrLong2Addr extends Format12x { +public class DexOrLong2Addr extends DexFormat12x { public static final int OPCODE = 0xc1; public static final String NAME = "OrLong2Addr"; public static final String SMALI_NAME = "or-long/2addr"; - OrLong2Addr(int high, BytecodeStream stream) { + DexOrLong2Addr(int high, BytecodeStream stream) { super(high, stream); } - public OrLong2Addr(int left, int right) { + public DexOrLong2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/PackedSwitch.java b/src/main/java/com/android/tools/r8/dex/code/DexPackedSwitch.java similarity index 86% rename from src/main/java/com/android/tools/r8/code/PackedSwitch.java rename to src/main/java/com/android/tools/r8/dex/code/DexPackedSwitch.java index 070b870..34029d8 100644 --- a/src/main/java/com/android/tools/r8/code/PackedSwitch.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexPackedSwitch.java
@@ -2,22 +2,22 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; import com.android.tools.r8.naming.ClassNameMapper; -public class PackedSwitch extends Format31t { +public class DexPackedSwitch extends DexFormat31t { public static final int OPCODE = 0x2b; public static final String NAME = "PackedSwitch"; public static final String SMALI_NAME = "packed-switch"; - PackedSwitch(int high, BytecodeStream stream) { + DexPackedSwitch(int high, BytecodeStream stream) { super(high, stream); } - public PackedSwitch(int valueRegister) { + public DexPackedSwitch(int valueRegister) { super(valueRegister, -1); }
diff --git a/src/main/java/com/android/tools/r8/code/PackedSwitchPayload.java b/src/main/java/com/android/tools/r8/dex/code/DexPackedSwitchPayload.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/PackedSwitchPayload.java rename to src/main/java/com/android/tools/r8/dex/code/DexPackedSwitchPayload.java index 3d297bb..2b0a21f 100644 --- a/src/main/java/com/android/tools/r8/code/PackedSwitchPayload.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexPackedSwitchPayload.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.GraphLens; import com.android.tools.r8.graph.ObjectToOffsetMapping; @@ -14,17 +14,17 @@ import java.nio.ShortBuffer; import java.util.Arrays; -public class PackedSwitchPayload extends SwitchPayload { +public class DexPackedSwitchPayload extends DexSwitchPayload { public final int size; public final int first_key; public final /* offset */ int[] targets; - private static void specify(StructuralSpecification<PackedSwitchPayload, ?> spec) { + private static void specify(StructuralSpecification<DexPackedSwitchPayload, ?> spec) { spec.withInt(i -> i.size).withInt(i -> i.first_key).withIntArray(i -> i.targets); } - public PackedSwitchPayload(int high, BytecodeStream stream) { + public DexPackedSwitchPayload(int high, BytecodeStream stream) { super(high, stream); size = read16BitValue(stream); first_key = readSigned32BitValue(stream); @@ -34,8 +34,8 @@ } } - public PackedSwitchPayload(int first_key, int[] targets) { - assert targets.length > 0; // Empty switches should be eliminated. + public DexPackedSwitchPayload(int first_key, int[] targets) { + assert targets.length > 0; // Empty switches should be eliminated. this.size = targets.length; this.first_key = first_key; this.targets = targets; @@ -53,7 +53,7 @@ GraphLens graphLens, ObjectToOffsetMapping mapping, LensCodeRewriterUtils rewriter) { - writeFirst(1, dest); // Pseudo-opcode = 0x0100 + writeFirst(1, dest); // Pseudo-opcode = 0x0100 write16BitValue(size, dest); write32BitValue(first_key, dest); for (int i = 0; i < size; i++) { @@ -62,8 +62,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (PackedSwitchPayload) other, PackedSwitchPayload::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexPackedSwitchPayload) other, DexPackedSwitchPayload::specify); } @Override @@ -92,7 +92,7 @@ @Override public int[] keys() { - return new int[]{first_key}; + return new int[] {first_key}; } @Override @@ -101,7 +101,7 @@ } @Override - public String toString(ClassNameMapper naming, Instruction payloadUser) { + public String toString(ClassNameMapper naming, DexInstruction payloadUser) { StringBuilder builder = new StringBuilder("[PackedSwitchPayload"); if (payloadUser == null) { builder.append(" offsets relative to associated PackedSwitch"); @@ -121,7 +121,7 @@ } @Override - public String toSmaliString(Instruction payloadUser) { + public String toSmaliString(DexInstruction payloadUser) { StringBuilder builder = new StringBuilder(); builder.append(" "); builder.append(".packed-switch ");
diff --git a/src/main/java/com/android/tools/r8/code/DexRecordFieldValues.java b/src/main/java/com/android/tools/r8/dex/code/DexRecordFieldValues.java similarity index 93% rename from src/main/java/com/android/tools/r8/code/DexRecordFieldValues.java rename to src/main/java/com/android/tools/r8/dex/code/DexRecordFieldValues.java index 13cde75..14e564b 100644 --- a/src/main/java/com/android/tools/r8/code/DexRecordFieldValues.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexRecordFieldValues.java
@@ -1,7 +1,7 @@ -// Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file +// Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.errors.Unreachable; @@ -20,7 +20,7 @@ import java.nio.ShortBuffer; import java.util.Arrays; -public class DexRecordFieldValues extends Instruction { +public class DexRecordFieldValues extends DexInstruction { public static final String NAME = "RecordFieldValues"; public static final String SMALI_NAME = "record-field-values*"; @@ -73,7 +73,7 @@ } @Override - int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { + int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { return visitor.visit(this, (DexRecordFieldValues) other, DexRecordFieldValues::specify); }
diff --git a/src/main/java/com/android/tools/r8/code/RemDouble.java b/src/main/java/com/android/tools/r8/dex/code/DexRemDouble.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/RemDouble.java rename to src/main/java/com/android/tools/r8/dex/code/DexRemDouble.java index 4107bf0..8ca18cb 100644 --- a/src/main/java/com/android/tools/r8/code/RemDouble.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexRemDouble.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class RemDouble extends Format23x { +public class DexRemDouble extends DexFormat23x { public static final int OPCODE = 0xaf; public static final String NAME = "RemDouble"; public static final String SMALI_NAME = "rem-double"; - RemDouble(int high, BytecodeStream stream) { + DexRemDouble(int high, BytecodeStream stream) { super(high, stream); } - public RemDouble(int dest, int left, int right) { + public DexRemDouble(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/RemDouble2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexRemDouble2Addr.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/RemDouble2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexRemDouble2Addr.java index a538dfd..022087a 100644 --- a/src/main/java/com/android/tools/r8/code/RemDouble2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexRemDouble2Addr.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class RemDouble2Addr extends Format12x { + +public class DexRemDouble2Addr extends DexFormat12x { public static final int OPCODE = 0xcf; public static final String NAME = "RemDouble2Addr"; public static final String SMALI_NAME = "rem-double/2addr"; - RemDouble2Addr(int high, BytecodeStream stream) { + DexRemDouble2Addr(int high, BytecodeStream stream) { super(high, stream); } - public RemDouble2Addr(int left, int right) { + public DexRemDouble2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/RemFloat.java b/src/main/java/com/android/tools/r8/dex/code/DexRemFloat.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/RemFloat.java rename to src/main/java/com/android/tools/r8/dex/code/DexRemFloat.java index 944332b..ac5984b 100644 --- a/src/main/java/com/android/tools/r8/code/RemFloat.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexRemFloat.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class RemFloat extends Format23x { + +public class DexRemFloat extends DexFormat23x { public static final int OPCODE = 0xaA; public static final String NAME = "RemFloat"; public static final String SMALI_NAME = "rem-float"; - RemFloat(int high, BytecodeStream stream) { + DexRemFloat(int high, BytecodeStream stream) { super(high, stream); } - public RemFloat(int dest, int left, int right) { + public DexRemFloat(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/RemFloat2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexRemFloat2Addr.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/RemFloat2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexRemFloat2Addr.java index ddfdb15..fcad4b1 100644 --- a/src/main/java/com/android/tools/r8/code/RemFloat2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexRemFloat2Addr.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class RemFloat2Addr extends Format12x { + +public class DexRemFloat2Addr extends DexFormat12x { public static final int OPCODE = 0xca; public static final String NAME = "RemFloat2Addr"; public static final String SMALI_NAME = "rem-float/2addr"; - RemFloat2Addr(int high, BytecodeStream stream) { + DexRemFloat2Addr(int high, BytecodeStream stream) { super(high, stream); } - public RemFloat2Addr(int left, int right) { + public DexRemFloat2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/RemInt.java b/src/main/java/com/android/tools/r8/dex/code/DexRemInt.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/RemInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexRemInt.java index f345fc6..3b6850e 100644 --- a/src/main/java/com/android/tools/r8/code/RemInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexRemInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class RemInt extends Format23x { +public class DexRemInt extends DexFormat23x { public static final int OPCODE = 0x94; public static final String NAME = "RemInt"; public static final String SMALI_NAME = "rem-int"; - RemInt(int high, BytecodeStream stream) { + DexRemInt(int high, BytecodeStream stream) { super(high, stream); } - public RemInt(int dest, int left, int right) { + public DexRemInt(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/RemInt2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexRemInt2Addr.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/RemInt2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexRemInt2Addr.java index 5e357d6..f1d1d8d 100644 --- a/src/main/java/com/android/tools/r8/code/RemInt2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexRemInt2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class RemInt2Addr extends Format12x { +public class DexRemInt2Addr extends DexFormat12x { public static final int OPCODE = 0xb4; public static final String NAME = "RemInt2Addr"; public static final String SMALI_NAME = "rem-int/2addr"; - RemInt2Addr(int high, BytecodeStream stream) { + DexRemInt2Addr(int high, BytecodeStream stream) { super(high, stream); } - public RemInt2Addr(int left, int right) { + public DexRemInt2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/RemIntLit16.java b/src/main/java/com/android/tools/r8/dex/code/DexRemIntLit16.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/RemIntLit16.java rename to src/main/java/com/android/tools/r8/dex/code/DexRemIntLit16.java index 80f3277..630b564 100644 --- a/src/main/java/com/android/tools/r8/code/RemIntLit16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexRemIntLit16.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class RemIntLit16 extends Format22s { +public class DexRemIntLit16 extends DexFormat22s { public static final int OPCODE = 0xd4; public static final String NAME = "RemIntLit16"; public static final String SMALI_NAME = "rem-int/lit16"; - RemIntLit16(int high, BytecodeStream stream) { + DexRemIntLit16(int high, BytecodeStream stream) { super(high, stream); } - public RemIntLit16(int dest, int register, int constant) { + public DexRemIntLit16(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/RemIntLit8.java b/src/main/java/com/android/tools/r8/dex/code/DexRemIntLit8.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/RemIntLit8.java rename to src/main/java/com/android/tools/r8/dex/code/DexRemIntLit8.java index d1fcc7f..15ec213 100644 --- a/src/main/java/com/android/tools/r8/code/RemIntLit8.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexRemIntLit8.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class RemIntLit8 extends Format22b { + +public class DexRemIntLit8 extends DexFormat22b { public static final int OPCODE = 0xdc; public static final String NAME = "RemIntLit8"; public static final String SMALI_NAME = "rem-int/lit8"; - RemIntLit8(int high, BytecodeStream stream) { + DexRemIntLit8(int high, BytecodeStream stream) { super(high, stream); } - public RemIntLit8(int dest, int register, int constant) { + public DexRemIntLit8(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/RemLong.java b/src/main/java/com/android/tools/r8/dex/code/DexRemLong.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/RemLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexRemLong.java index fa48d0c..46f1278 100644 --- a/src/main/java/com/android/tools/r8/code/RemLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexRemLong.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class RemLong extends Format23x { +public class DexRemLong extends DexFormat23x { public static final int OPCODE = 0x9f; public static final String NAME = "RemLong"; public static final String SMALI_NAME = "rem-long"; - RemLong(int high, BytecodeStream stream) { + DexRemLong(int high, BytecodeStream stream) { super(high, stream); } - public RemLong(int dest, int left, int right) { + public DexRemLong(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/RemLong2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexRemLong2Addr.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/RemLong2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexRemLong2Addr.java index ec14f4f..dcf2dc3 100644 --- a/src/main/java/com/android/tools/r8/code/RemLong2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexRemLong2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class RemLong2Addr extends Format12x { +public class DexRemLong2Addr extends DexFormat12x { public static final int OPCODE = 0xbf; public static final String NAME = "RemLong2Addr"; public static final String SMALI_NAME = "rem-long/2addr"; - RemLong2Addr(int high, BytecodeStream stream) { + DexRemLong2Addr(int high, BytecodeStream stream) { super(high, stream); } - public RemLong2Addr(int left, int right) { + public DexRemLong2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/Return.java b/src/main/java/com/android/tools/r8/dex/code/DexReturn.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/Return.java rename to src/main/java/com/android/tools/r8/dex/code/DexReturn.java index 6792c3a..2d3662d 100644 --- a/src/main/java/com/android/tools/r8/code/Return.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexReturn.java
@@ -1,21 +1,21 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; -public class Return extends Format11x { +public class DexReturn extends DexFormat11x { public static final int OPCODE = 0xf; public static final String NAME = "Return"; public static final String SMALI_NAME = "return"; - Return(int high, BytecodeStream stream) { + DexReturn(int high, BytecodeStream stream) { super(high, stream); } - public Return(int AA) { + public DexReturn(int AA) { super(AA); }
diff --git a/src/main/java/com/android/tools/r8/code/ReturnObject.java b/src/main/java/com/android/tools/r8/dex/code/DexReturnObject.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/ReturnObject.java rename to src/main/java/com/android/tools/r8/dex/code/DexReturnObject.java index c5008c7..07a795d 100644 --- a/src/main/java/com/android/tools/r8/code/ReturnObject.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexReturnObject.java
@@ -1,21 +1,21 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; -public class ReturnObject extends Format11x { +public class DexReturnObject extends DexFormat11x { public static final int OPCODE = 0x11; public static final String NAME = "ReturnObject"; public static final String SMALI_NAME = "return-object"; - ReturnObject(int high, BytecodeStream stream) { + DexReturnObject(int high, BytecodeStream stream) { super(high, stream); } - public ReturnObject(int AA) { + public DexReturnObject(int AA) { super(AA); }
diff --git a/src/main/java/com/android/tools/r8/code/ReturnVoid.java b/src/main/java/com/android/tools/r8/dex/code/DexReturnVoid.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/ReturnVoid.java rename to src/main/java/com/android/tools/r8/dex/code/DexReturnVoid.java index 32d75f8..fae79fc 100644 --- a/src/main/java/com/android/tools/r8/code/ReturnVoid.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexReturnVoid.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; import com.android.tools.r8.utils.structural.CompareToVisitor; -public class ReturnVoid extends Format10x { +public class DexReturnVoid extends DexFormat10x { public static final int OPCODE = 0xe; public static final String NAME = "ReturnVoid"; public static final String SMALI_NAME = "return-void"; - ReturnVoid(int high, BytecodeStream stream) { + DexReturnVoid(int high, BytecodeStream stream) { super(high, stream); } - public ReturnVoid() {} + public DexReturnVoid() {} @Override public String getName() { @@ -34,7 +34,7 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { return DexCompareHelper.compareIdUniquelyDeterminesEquality(this, other); }
diff --git a/src/main/java/com/android/tools/r8/code/ReturnWide.java b/src/main/java/com/android/tools/r8/dex/code/DexReturnWide.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/ReturnWide.java rename to src/main/java/com/android/tools/r8/dex/code/DexReturnWide.java index f1f40b2..c3670f0 100644 --- a/src/main/java/com/android/tools/r8/code/ReturnWide.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexReturnWide.java
@@ -1,21 +1,21 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; -public class ReturnWide extends Format11x { +public class DexReturnWide extends DexFormat11x { public static final int OPCODE = 0x10; public static final String NAME = "ReturnWide"; public static final String SMALI_NAME = "return-wide"; - ReturnWide(int high, BytecodeStream stream) { + DexReturnWide(int high, BytecodeStream stream) { super(high, stream); } - public ReturnWide(int AA) { + public DexReturnWide(int AA) { super(AA); } @@ -43,4 +43,4 @@ public void buildIR(IRBuilder builder) { builder.addReturn(AA); } -} \ No newline at end of file +}
diff --git a/src/main/java/com/android/tools/r8/code/RsubInt.java b/src/main/java/com/android/tools/r8/dex/code/DexRsubInt.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/RsubInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexRsubInt.java index 410f81a..7a2d7bd 100644 --- a/src/main/java/com/android/tools/r8/code/RsubInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexRsubInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class RsubInt extends Format22s { +public class DexRsubInt extends DexFormat22s { public static final int OPCODE = 0xd1; public static final String NAME = "RsubInt"; public static final String SMALI_NAME = "rsub-int"; - RsubInt(int high, BytecodeStream stream) { + DexRsubInt(int high, BytecodeStream stream) { super(high, stream); } - public RsubInt(int dest, int register, int constant) { + public DexRsubInt(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/RsubIntLit8.java b/src/main/java/com/android/tools/r8/dex/code/DexRsubIntLit8.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/RsubIntLit8.java rename to src/main/java/com/android/tools/r8/dex/code/DexRsubIntLit8.java index 242a3ba..8ea9a48 100644 --- a/src/main/java/com/android/tools/r8/code/RsubIntLit8.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexRsubIntLit8.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class RsubIntLit8 extends Format22b { + +public class DexRsubIntLit8 extends DexFormat22b { public static final int OPCODE = 0xd9; public static final String NAME = "RsubIntLit8"; public static final String SMALI_NAME = "rsub-int/lit8"; - RsubIntLit8(int high, BytecodeStream stream) { + DexRsubIntLit8(int high, BytecodeStream stream) { super(high, stream); } - public RsubIntLit8(int dest, int register, int constant) { + public DexRsubIntLit8(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/SafeCheckCast.java b/src/main/java/com/android/tools/r8/dex/code/DexSafeCheckCast.java similarity index 68% rename from src/main/java/com/android/tools/r8/code/SafeCheckCast.java rename to src/main/java/com/android/tools/r8/dex/code/DexSafeCheckCast.java index 8f19396..004708b 100644 --- a/src/main/java/com/android/tools/r8/code/SafeCheckCast.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSafeCheckCast.java
@@ -1,21 +1,21 @@ -// Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file +// Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexType; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SafeCheckCast extends CheckCast { +public class DexSafeCheckCast extends DexCheckCast { - SafeCheckCast(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexSafeCheckCast(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping); } - public SafeCheckCast(int valueRegister, DexType type) { + public DexSafeCheckCast(int valueRegister, DexType type) { super(valueRegister, type, true); }
diff --git a/src/main/java/com/android/tools/r8/code/Sget.java b/src/main/java/com/android/tools/r8/dex/code/DexSget.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/Sget.java rename to src/main/java/com/android/tools/r8/dex/code/DexSget.java index 2bd4653..91bfbd9 100644 --- a/src/main/java/com/android/tools/r8/code/Sget.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSget.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class Sget extends SgetOrSput implements CfOrDexStaticFieldRead { +public class DexSget extends DexSgetOrSput implements CfOrDexStaticFieldRead { public static final int OPCODE = 0x60; public static final String NAME = "Sget"; public static final String SMALI_NAME = "sget"; - Sget(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexSget(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public Sget(int AA, DexField BBBB) { + public DexSget(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/SgetBoolean.java b/src/main/java/com/android/tools/r8/dex/code/DexSgetBoolean.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/SgetBoolean.java rename to src/main/java/com/android/tools/r8/dex/code/DexSgetBoolean.java index fb51776..1f669e0 100644 --- a/src/main/java/com/android/tools/r8/code/SgetBoolean.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSgetBoolean.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SgetBoolean extends SgetOrSput implements CfOrDexStaticFieldRead { +public class DexSgetBoolean extends DexSgetOrSput implements CfOrDexStaticFieldRead { public static final int OPCODE = 0x63; public static final String NAME = "SgetBoolean"; public static final String SMALI_NAME = "sget-boolean"; - SgetBoolean(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexSgetBoolean(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public SgetBoolean(int AA, DexField BBBB) { + public DexSgetBoolean(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/SgetByte.java b/src/main/java/com/android/tools/r8/dex/code/DexSgetByte.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/SgetByte.java rename to src/main/java/com/android/tools/r8/dex/code/DexSgetByte.java index ee693ac..ace5c84 100644 --- a/src/main/java/com/android/tools/r8/code/SgetByte.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSgetByte.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SgetByte extends SgetOrSput implements CfOrDexStaticFieldRead { +public class DexSgetByte extends DexSgetOrSput implements CfOrDexStaticFieldRead { public static final int OPCODE = 0x64; public static final String NAME = "SgetByte"; public static final String SMALI_NAME = "sget-byte"; - SgetByte(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexSgetByte(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public SgetByte(int AA, DexField BBBB) { + public DexSgetByte(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/SgetChar.java b/src/main/java/com/android/tools/r8/dex/code/DexSgetChar.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/SgetChar.java rename to src/main/java/com/android/tools/r8/dex/code/DexSgetChar.java index 5f61f90..4219043 100644 --- a/src/main/java/com/android/tools/r8/code/SgetChar.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSgetChar.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SgetChar extends SgetOrSput implements CfOrDexStaticFieldRead { +public class DexSgetChar extends DexSgetOrSput implements CfOrDexStaticFieldRead { public static final int OPCODE = 0x65; public static final String NAME = "SgetChar"; public static final String SMALI_NAME = "sget-char"; - SgetChar(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexSgetChar(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public SgetChar(int AA, DexField BBBB) { + public DexSgetChar(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/SgetObject.java b/src/main/java/com/android/tools/r8/dex/code/DexSgetObject.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/SgetObject.java rename to src/main/java/com/android/tools/r8/dex/code/DexSgetObject.java index 8e5018e..7894adf 100644 --- a/src/main/java/com/android/tools/r8/code/SgetObject.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSgetObject.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SgetObject extends SgetOrSput implements CfOrDexStaticFieldRead { +public class DexSgetObject extends DexSgetOrSput implements CfOrDexStaticFieldRead { public static final int OPCODE = 0x62; public static final String NAME = "SgetObject"; public static final String SMALI_NAME = "sget-object"; - SgetObject(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexSgetObject(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public SgetObject(int AA, DexField BBBB) { + public DexSgetObject(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/SgetOrSput.java b/src/main/java/com/android/tools/r8/dex/code/DexSgetOrSput.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/SgetOrSput.java rename to src/main/java/com/android/tools/r8/dex/code/DexSgetOrSput.java index 499d679..959659c 100644 --- a/src/main/java/com/android/tools/r8/code/SgetOrSput.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSgetOrSput.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.graph.DexField; @@ -12,13 +12,13 @@ import com.android.tools.r8.utils.structural.StructuralSpecification; import java.nio.ShortBuffer; -abstract class SgetOrSput extends Format21c<DexField> { +abstract class DexSgetOrSput extends DexFormat21c<DexField> { - SgetOrSput(int high, BytecodeStream stream, DexField[] map) { + DexSgetOrSput(int high, BytecodeStream stream, DexField[] map) { super(high, stream, map); } - protected SgetOrSput(int AA, DexField BBBB) { + protected DexSgetOrSput(int AA, DexField BBBB) { super(AA, BBBB); } @@ -50,7 +50,7 @@ } @Override - void internalSubSpecify(StructuralSpecification<Format21c<DexField>, ?> spec) { + void internalSubSpecify(StructuralSpecification<DexFormat21c<DexField>, ?> spec) { spec.withItem(i -> i.BBBB); } }
diff --git a/src/main/java/com/android/tools/r8/code/SgetShort.java b/src/main/java/com/android/tools/r8/dex/code/DexSgetShort.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/SgetShort.java rename to src/main/java/com/android/tools/r8/dex/code/DexSgetShort.java index 99fc4ee..b98797d 100644 --- a/src/main/java/com/android/tools/r8/code/SgetShort.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSgetShort.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SgetShort extends SgetOrSput implements CfOrDexStaticFieldRead { +public class DexSgetShort extends DexSgetOrSput implements CfOrDexStaticFieldRead { public static final int OPCODE = 0x66; public static final String NAME = "SgetShort"; public static final String SMALI_NAME = "sget-short"; - SgetShort(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexSgetShort(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public SgetShort(int AA, DexField BBBB) { + public DexSgetShort(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/SgetWide.java b/src/main/java/com/android/tools/r8/dex/code/DexSgetWide.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/SgetWide.java rename to src/main/java/com/android/tools/r8/dex/code/DexSgetWide.java index 75a4343..5964d85 100644 --- a/src/main/java/com/android/tools/r8/code/SgetWide.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSgetWide.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SgetWide extends SgetOrSput implements CfOrDexStaticFieldRead { +public class DexSgetWide extends DexSgetOrSput implements CfOrDexStaticFieldRead { public static final int OPCODE = 0x61; public static final String NAME = "SgetWide"; public static final String SMALI_NAME = "sget-wide"; - SgetWide(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexSgetWide(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public SgetWide(int AA, DexField BBBB) { + public DexSgetWide(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/ShlInt.java b/src/main/java/com/android/tools/r8/dex/code/DexShlInt.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/ShlInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexShlInt.java index 2f724c0..1b8780e 100644 --- a/src/main/java/com/android/tools/r8/code/ShlInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexShlInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class ShlInt extends Format23x { +public class DexShlInt extends DexFormat23x { public static final int OPCODE = 0x98; public static final String NAME = "ShlInt"; public static final String SMALI_NAME = "shl-int"; - ShlInt(int high, BytecodeStream stream) { + DexShlInt(int high, BytecodeStream stream) { super(high, stream); } - public ShlInt(int dest, int left, int right) { + public DexShlInt(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/ShlInt2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexShlInt2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/ShlInt2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexShlInt2Addr.java index 97a0c89..88ee095 100644 --- a/src/main/java/com/android/tools/r8/code/ShlInt2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexShlInt2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class ShlInt2Addr extends Format12x { +public class DexShlInt2Addr extends DexFormat12x { public static final int OPCODE = 0xb8; public static final String NAME = "ShlInt2Addr"; public static final String SMALI_NAME = "shl-int/2addr"; - ShlInt2Addr(int high, BytecodeStream stream) { + DexShlInt2Addr(int high, BytecodeStream stream) { super(high, stream); } - public ShlInt2Addr(int left, int right) { + public DexShlInt2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/ShlIntLit8.java b/src/main/java/com/android/tools/r8/dex/code/DexShlIntLit8.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/ShlIntLit8.java rename to src/main/java/com/android/tools/r8/dex/code/DexShlIntLit8.java index 173acdc..948680f 100644 --- a/src/main/java/com/android/tools/r8/code/ShlIntLit8.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexShlIntLit8.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class ShlIntLit8 extends Format22b { + +public class DexShlIntLit8 extends DexFormat22b { public static final int OPCODE = 0xe0; public static final String NAME = "ShlIntLit8"; public static final String SMALI_NAME = "shl-int/lit8"; - ShlIntLit8(int high, BytecodeStream stream) { + DexShlIntLit8(int high, BytecodeStream stream) { super(high, stream); } - public ShlIntLit8(int dest, int register, int constant) { + public DexShlIntLit8(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/ShlLong.java b/src/main/java/com/android/tools/r8/dex/code/DexShlLong.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/ShlLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexShlLong.java index 54b98f9..1fcc10e 100644 --- a/src/main/java/com/android/tools/r8/code/ShlLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexShlLong.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class ShlLong extends Format23x { +public class DexShlLong extends DexFormat23x { public static final int OPCODE = 0xA3; public static final String NAME = "ShlLong"; public static final String SMALI_NAME = "shl-long"; - ShlLong(int high, BytecodeStream stream) { + DexShlLong(int high, BytecodeStream stream) { super(high, stream); } - public ShlLong(int dest, int left, int right) { + public DexShlLong(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/ShlLong2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexShlLong2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/ShlLong2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexShlLong2Addr.java index e7f35b0..36151a2 100644 --- a/src/main/java/com/android/tools/r8/code/ShlLong2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexShlLong2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class ShlLong2Addr extends Format12x { +public class DexShlLong2Addr extends DexFormat12x { public static final int OPCODE = 0xc3; public static final String NAME = "ShlLong2Addr"; public static final String SMALI_NAME = "shl-long/2addr"; - ShlLong2Addr(int high, BytecodeStream stream) { + DexShlLong2Addr(int high, BytecodeStream stream) { super(high, stream); } - public ShlLong2Addr(int left, int right) { + public DexShlLong2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/ShrInt.java b/src/main/java/com/android/tools/r8/dex/code/DexShrInt.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/ShrInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexShrInt.java index d51cce7..d86bdd6 100644 --- a/src/main/java/com/android/tools/r8/code/ShrInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexShrInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class ShrInt extends Format23x { +public class DexShrInt extends DexFormat23x { public static final int OPCODE = 0x99; public static final String NAME = "ShrInt"; public static final String SMALI_NAME = "shr-int"; - ShrInt(int high, BytecodeStream stream) { + DexShrInt(int high, BytecodeStream stream) { super(high, stream); } - public ShrInt(int dest, int left, int right) { + public DexShrInt(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/ShrInt2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexShrInt2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/ShrInt2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexShrInt2Addr.java index b90172b..10023c2 100644 --- a/src/main/java/com/android/tools/r8/code/ShrInt2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexShrInt2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class ShrInt2Addr extends Format12x { +public class DexShrInt2Addr extends DexFormat12x { public static final int OPCODE = 0xb9; public static final String NAME = "ShrInt2Addr"; public static final String SMALI_NAME = "shr-int/2addr"; - ShrInt2Addr(int high, BytecodeStream stream) { + DexShrInt2Addr(int high, BytecodeStream stream) { super(high, stream); } - public ShrInt2Addr(int left, int right) { + public DexShrInt2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/ShrIntLit8.java b/src/main/java/com/android/tools/r8/dex/code/DexShrIntLit8.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/ShrIntLit8.java rename to src/main/java/com/android/tools/r8/dex/code/DexShrIntLit8.java index ecb58ff..0e5e6e9 100644 --- a/src/main/java/com/android/tools/r8/code/ShrIntLit8.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexShrIntLit8.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class ShrIntLit8 extends Format22b { +public class DexShrIntLit8 extends DexFormat22b { public static final int OPCODE = 0xe1; public static final String NAME = "ShrIntLit8"; public static final String SMALI_NAME = "shr-int/lit8"; - ShrIntLit8(int high, BytecodeStream stream) { + DexShrIntLit8(int high, BytecodeStream stream) { super(high, stream); } - public ShrIntLit8(int dest, int register, int constant) { + public DexShrIntLit8(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/ShrLong.java b/src/main/java/com/android/tools/r8/dex/code/DexShrLong.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/ShrLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexShrLong.java index fbf9ef2..913535b 100644 --- a/src/main/java/com/android/tools/r8/code/ShrLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexShrLong.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class ShrLong extends Format23x { +public class DexShrLong extends DexFormat23x { public static final int OPCODE = 0xA4; public static final String NAME = "ShrLong"; public static final String SMALI_NAME = "shr-long"; - ShrLong(int high, BytecodeStream stream) { + DexShrLong(int high, BytecodeStream stream) { super(high, stream); } - public ShrLong(int dest, int left, int right) { + public DexShrLong(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/ShrLong2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexShrLong2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/ShrLong2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexShrLong2Addr.java index 4732c39..c73273f 100644 --- a/src/main/java/com/android/tools/r8/code/ShrLong2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexShrLong2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class ShrLong2Addr extends Format12x { +public class DexShrLong2Addr extends DexFormat12x { public static final int OPCODE = 0xc4; public static final String NAME = "ShrLong2Addr"; public static final String SMALI_NAME = "shr-long/2addr"; - ShrLong2Addr(int high, BytecodeStream stream) { + DexShrLong2Addr(int high, BytecodeStream stream) { super(high, stream); } - public ShrLong2Addr(int left, int right) { + public DexShrLong2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/SparseSwitch.java b/src/main/java/com/android/tools/r8/dex/code/DexSparseSwitch.java similarity index 86% rename from src/main/java/com/android/tools/r8/code/SparseSwitch.java rename to src/main/java/com/android/tools/r8/dex/code/DexSparseSwitch.java index b0a048a..4f15ab7 100644 --- a/src/main/java/com/android/tools/r8/code/SparseSwitch.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSparseSwitch.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; import com.android.tools.r8.naming.ClassNameMapper; -public class SparseSwitch extends Format31t { +public class DexSparseSwitch extends DexFormat31t { public static final int OPCODE = 0x2c; public static final String NAME = "SparseSwitch"; public static final String SMALI_NAME = "sparse-switch"; - SparseSwitch(int high, BytecodeStream stream) { + DexSparseSwitch(int high, BytecodeStream stream) { super(high, stream); } - public SparseSwitch(int value) { + public DexSparseSwitch(int value) { super(value, -1); }
diff --git a/src/main/java/com/android/tools/r8/code/SparseSwitchPayload.java b/src/main/java/com/android/tools/r8/dex/code/DexSparseSwitchPayload.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/SparseSwitchPayload.java rename to src/main/java/com/android/tools/r8/dex/code/DexSparseSwitchPayload.java index 9dac193e..f9ed49e 100644 --- a/src/main/java/com/android/tools/r8/code/SparseSwitchPayload.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSparseSwitchPayload.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.GraphLens; import com.android.tools.r8.graph.ObjectToOffsetMapping; @@ -14,17 +14,17 @@ import java.nio.ShortBuffer; import java.util.Arrays; -public class SparseSwitchPayload extends SwitchPayload { +public class DexSparseSwitchPayload extends DexSwitchPayload { public final int size; public final int[] keys; public final /* offset */ int[] targets; - private static void specify(StructuralSpecification<SparseSwitchPayload, ?> spec) { + private static void specify(StructuralSpecification<DexSparseSwitchPayload, ?> spec) { spec.withInt(i -> i.size).withIntArray(i -> i.keys).withIntArray(i -> i.targets); } - public SparseSwitchPayload(int high, BytecodeStream stream) { + public DexSparseSwitchPayload(int high, BytecodeStream stream) { super(high, stream); size = read16BitValue(stream); keys = new int[size]; @@ -38,8 +38,8 @@ } } - public SparseSwitchPayload(int[] keys, int[] targets) { - assert targets.length > 0; // Empty switches should be eliminated. + public DexSparseSwitchPayload(int[] keys, int[] targets) { + assert targets.length > 0; // Empty switches should be eliminated. this.size = targets.length; this.keys = keys; this.targets = targets; @@ -57,7 +57,7 @@ GraphLens graphLens, ObjectToOffsetMapping mapping, LensCodeRewriterUtils rewriter) { - writeFirst(2, dest); // Pseudo-opcode = 0x0200 + writeFirst(2, dest); // Pseudo-opcode = 0x0200 write16BitValue(size, dest); for (int i = 0; i < size; i++) { write32BitValue(keys[i], dest); @@ -68,8 +68,8 @@ } @Override - final int internalAcceptCompareTo(Instruction other, CompareToVisitor visitor) { - return visitor.visit(this, (SparseSwitchPayload) other, SparseSwitchPayload::specify); + final int internalAcceptCompareTo(DexInstruction other, CompareToVisitor visitor) { + return visitor.visit(this, (DexSparseSwitchPayload) other, DexSparseSwitchPayload::specify); } @Override @@ -107,7 +107,7 @@ } @Override - public String toString(ClassNameMapper naming, Instruction payloadUser) { + public String toString(ClassNameMapper naming, DexInstruction payloadUser) { StringBuilder builder = new StringBuilder("[SparseSwitchPayload"); if (payloadUser == null) { builder.append(" offsets relative to associated SparseSwitch"); @@ -127,7 +127,7 @@ } @Override - public String toSmaliString(Instruction payloadUser) { + public String toSmaliString(DexInstruction payloadUser) { StringBuilder builder = new StringBuilder(); builder.append(" "); builder.append(".sparse-switch");
diff --git a/src/main/java/com/android/tools/r8/code/Sput.java b/src/main/java/com/android/tools/r8/dex/code/DexSput.java similarity index 84% rename from src/main/java/com/android/tools/r8/code/Sput.java rename to src/main/java/com/android/tools/r8/dex/code/DexSput.java index e9e7f56..8a7ab46 100644 --- a/src/main/java/com/android/tools/r8/code/Sput.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSput.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class Sput extends SgetOrSput { +public class DexSput extends DexSgetOrSput { public static final int OPCODE = 0x67; public static final String NAME = "Sput"; public static final String SMALI_NAME = "sput"; - Sput(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + DexSput(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public Sput(int AA, DexField BBBB) { + public DexSput(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/SputBoolean.java b/src/main/java/com/android/tools/r8/dex/code/DexSputBoolean.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/SputBoolean.java rename to src/main/java/com/android/tools/r8/dex/code/DexSputBoolean.java index d3ba949..1bc6555 100644 --- a/src/main/java/com/android/tools/r8/code/SputBoolean.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSputBoolean.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SputBoolean extends SgetOrSput { +public class DexSputBoolean extends DexSgetOrSput { public static final int OPCODE = 0x6a; public static final String NAME = "SputBoolean"; public static final String SMALI_NAME = "sput-boolean"; - /*package*/ SputBoolean(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexSputBoolean(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public SputBoolean(int AA, DexField BBBB) { + public DexSputBoolean(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/SputByte.java b/src/main/java/com/android/tools/r8/dex/code/DexSputByte.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/SputByte.java rename to src/main/java/com/android/tools/r8/dex/code/DexSputByte.java index e1c09f5..40f754e 100644 --- a/src/main/java/com/android/tools/r8/code/SputByte.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSputByte.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SputByte extends SgetOrSput { +public class DexSputByte extends DexSgetOrSput { public static final int OPCODE = 0x6b; public static final String NAME = "SputByte"; public static final String SMALI_NAME = "sput-byte"; - /*package*/ SputByte(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexSputByte(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public SputByte(int AA, DexField BBBB) { + public DexSputByte(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/SputChar.java b/src/main/java/com/android/tools/r8/dex/code/DexSputChar.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/SputChar.java rename to src/main/java/com/android/tools/r8/dex/code/DexSputChar.java index 2497f76..c4a1174 100644 --- a/src/main/java/com/android/tools/r8/code/SputChar.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSputChar.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SputChar extends SgetOrSput { +public class DexSputChar extends DexSgetOrSput { public static final int OPCODE = 0x6c; public static final String NAME = "SputChar"; public static final String SMALI_NAME = "sput-char"; - /*package*/ SputChar(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexSputChar(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public SputChar(int AA, DexField BBBB) { + public DexSputChar(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/SputObject.java b/src/main/java/com/android/tools/r8/dex/code/DexSputObject.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/SputObject.java rename to src/main/java/com/android/tools/r8/dex/code/DexSputObject.java index 43a92b6..91dfca4 100644 --- a/src/main/java/com/android/tools/r8/code/SputObject.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSputObject.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SputObject extends SgetOrSput { +public class DexSputObject extends DexSgetOrSput { public static final int OPCODE = 0x69; public static final String NAME = "SputObject"; public static final String SMALI_NAME = "sput-object"; - /*package*/ SputObject(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexSputObject(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public SputObject(int AA, DexField BBBB) { + public DexSputObject(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/SputShort.java b/src/main/java/com/android/tools/r8/dex/code/DexSputShort.java similarity index 82% rename from src/main/java/com/android/tools/r8/code/SputShort.java rename to src/main/java/com/android/tools/r8/dex/code/DexSputShort.java index 2335606..d4aec47 100644 --- a/src/main/java/com/android/tools/r8/code/SputShort.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSputShort.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SputShort extends SgetOrSput { +public class DexSputShort extends DexSgetOrSput { public static final int OPCODE = 0x6d; public static final String NAME = "SputShort"; public static final String SMALI_NAME = "sput-short"; - /*package*/ SputShort(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexSputShort(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public SputShort(int AA, DexField BBBB) { + public DexSputShort(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/SputWide.java b/src/main/java/com/android/tools/r8/dex/code/DexSputWide.java similarity index 83% rename from src/main/java/com/android/tools/r8/code/SputWide.java rename to src/main/java/com/android/tools/r8/dex/code/DexSputWide.java index 278418a..a3a8003 100644 --- a/src/main/java/com/android/tools/r8/code/SputWide.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSputWide.java
@@ -1,24 +1,24 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.OffsetToObjectMapping; import com.android.tools.r8.graph.UseRegistry; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SputWide extends SgetOrSput { +public class DexSputWide extends DexSgetOrSput { public static final int OPCODE = 0x68; public static final String NAME = "SputWide"; public static final String SMALI_NAME = "sput-wide"; - /*package*/ SputWide(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { + /*package*/ DexSputWide(int high, BytecodeStream stream, OffsetToObjectMapping mapping) { super(high, stream, mapping.getFieldMap()); } - public SputWide(int AA, DexField BBBB) { + public DexSputWide(int AA, DexField BBBB) { super(AA, BBBB); }
diff --git a/src/main/java/com/android/tools/r8/code/SubDouble.java b/src/main/java/com/android/tools/r8/dex/code/DexSubDouble.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/SubDouble.java rename to src/main/java/com/android/tools/r8/dex/code/DexSubDouble.java index f68b270..fc2176e 100644 --- a/src/main/java/com/android/tools/r8/code/SubDouble.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSubDouble.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SubDouble extends Format23x { +public class DexSubDouble extends DexFormat23x { public static final int OPCODE = 0xac; public static final String NAME = "SubDouble"; public static final String SMALI_NAME = "sub-double"; - SubDouble(int high, BytecodeStream stream) { + DexSubDouble(int high, BytecodeStream stream) { super(high, stream); } - public SubDouble(int dest, int left, int right) { + public DexSubDouble(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/SubDouble2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexSubDouble2Addr.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/SubDouble2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexSubDouble2Addr.java index 2cd16ac..3b99bfc 100644 --- a/src/main/java/com/android/tools/r8/code/SubDouble2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSubDouble2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SubDouble2Addr extends Format12x { +public class DexSubDouble2Addr extends DexFormat12x { public static final int OPCODE = 0xcc; public static final String NAME = "SubDouble2Addr"; public static final String SMALI_NAME = "sub-double/2addr"; - SubDouble2Addr(int high, BytecodeStream stream) { + DexSubDouble2Addr(int high, BytecodeStream stream) { super(high, stream); } - public SubDouble2Addr(int left, int right) { + public DexSubDouble2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/SubFloat.java b/src/main/java/com/android/tools/r8/dex/code/DexSubFloat.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/SubFloat.java rename to src/main/java/com/android/tools/r8/dex/code/DexSubFloat.java index e49e843..45fa530 100644 --- a/src/main/java/com/android/tools/r8/code/SubFloat.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSubFloat.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SubFloat extends Format23x { +public class DexSubFloat extends DexFormat23x { public static final int OPCODE = 0xA7; public static final String NAME = "SubFloat"; public static final String SMALI_NAME = "sub-float"; - SubFloat(int high, BytecodeStream stream) { + DexSubFloat(int high, BytecodeStream stream) { super(high, stream); } - public SubFloat(int dest, int left, int right) { + public DexSubFloat(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/SubFloat2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexSubFloat2Addr.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/SubFloat2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexSubFloat2Addr.java index 42c4442..4df6f33 100644 --- a/src/main/java/com/android/tools/r8/code/SubFloat2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSubFloat2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SubFloat2Addr extends Format12x { +public class DexSubFloat2Addr extends DexFormat12x { public static final int OPCODE = 0xc7; public static final String NAME = "SubFloat2Addr"; public static final String SMALI_NAME = "sub-float/2addr"; - SubFloat2Addr(int high, BytecodeStream stream) { + DexSubFloat2Addr(int high, BytecodeStream stream) { super(high, stream); } - public SubFloat2Addr(int left, int right) { + public DexSubFloat2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/SubInt.java b/src/main/java/com/android/tools/r8/dex/code/DexSubInt.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/SubInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexSubInt.java index d187ea3..a161d5c 100644 --- a/src/main/java/com/android/tools/r8/code/SubInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSubInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SubInt extends Format23x { +public class DexSubInt extends DexFormat23x { public static final int OPCODE = 0x91; public static final String NAME = "SubInt"; public static final String SMALI_NAME = "sub-int"; - SubInt(int high, BytecodeStream stream) { + DexSubInt(int high, BytecodeStream stream) { super(high, stream); } - public SubInt(int dest, int left, int right) { + public DexSubInt(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/SubInt2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexSubInt2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/SubInt2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexSubInt2Addr.java index 97f94a4..314744c 100644 --- a/src/main/java/com/android/tools/r8/code/SubInt2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSubInt2Addr.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SubInt2Addr extends Format12x { + +public class DexSubInt2Addr extends DexFormat12x { public static final int OPCODE = 0xb1; public static final String NAME = "SubInt2Addr"; public static final String SMALI_NAME = "sub-int/2addr"; - SubInt2Addr(int high, BytecodeStream stream) { + DexSubInt2Addr(int high, BytecodeStream stream) { super(high, stream); } - public SubInt2Addr(int left, int right) { + public DexSubInt2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/SubLong.java b/src/main/java/com/android/tools/r8/dex/code/DexSubLong.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/SubLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexSubLong.java index a2a0697..e418a52 100644 --- a/src/main/java/com/android/tools/r8/code/SubLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSubLong.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SubLong extends Format23x { +public class DexSubLong extends DexFormat23x { public static final int OPCODE = 0x9c; public static final String NAME = "SubLong"; public static final String SMALI_NAME = "sub-long"; - SubLong(int high, BytecodeStream stream) { + DexSubLong(int high, BytecodeStream stream) { super(high, stream); } - public SubLong(int dest, int left, int right) { + public DexSubLong(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/SubLong2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexSubLong2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/SubLong2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexSubLong2Addr.java index 40d2c6b..75e13b7 100644 --- a/src/main/java/com/android/tools/r8/code/SubLong2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSubLong2Addr.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class SubLong2Addr extends Format12x { + +public class DexSubLong2Addr extends DexFormat12x { public static final int OPCODE = 0xbc; public static final String NAME = "SubLong2Addr"; public static final String SMALI_NAME = "sub-long/2addr"; - SubLong2Addr(int high, BytecodeStream stream) { + DexSubLong2Addr(int high, BytecodeStream stream) { super(high, stream); } - public SubLong2Addr(int left, int right) { + public DexSubLong2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/SwitchPayload.java b/src/main/java/com/android/tools/r8/dex/code/DexSwitchPayload.java similarity index 76% rename from src/main/java/com/android/tools/r8/code/SwitchPayload.java rename to src/main/java/com/android/tools/r8/dex/code/DexSwitchPayload.java index 0525e41..7f18ec2 100644 --- a/src/main/java/com/android/tools/r8/code/SwitchPayload.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexSwitchPayload.java
@@ -2,20 +2,21 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; -public abstract class SwitchPayload extends Nop { - SwitchPayload(int high, BytecodeStream stream) { +public abstract class DexSwitchPayload extends DexNop { + DexSwitchPayload(int high, BytecodeStream stream) { super(high, stream); } - public SwitchPayload() { - } + public DexSwitchPayload() {} public abstract int[] keys(); + public abstract int numberOfKeys(); + public abstract int[] switchTargetOffsets(); @Override
diff --git a/src/main/java/com/android/tools/r8/code/Throw.java b/src/main/java/com/android/tools/r8/dex/code/DexThrow.java similarity index 84% rename from src/main/java/com/android/tools/r8/code/Throw.java rename to src/main/java/com/android/tools/r8/dex/code/DexThrow.java index 40d69f1..2df333a 100644 --- a/src/main/java/com/android/tools/r8/code/Throw.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexThrow.java
@@ -1,21 +1,21 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.conversion.IRBuilder; -public class Throw extends Format11x { +public class DexThrow extends DexFormat11x { public static final int OPCODE = 0x27; public static final String NAME = "Throw"; public static final String SMALI_NAME = "throw"; - Throw(int high, BytecodeStream stream) { + DexThrow(int high, BytecodeStream stream) { super(high, stream); } - public Throw(int AA) { + public DexThrow(int AA) { super(AA); }
diff --git a/src/main/java/com/android/tools/r8/code/UshrInt.java b/src/main/java/com/android/tools/r8/dex/code/DexUshrInt.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/UshrInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexUshrInt.java index 6f480b1..c3ac597 100644 --- a/src/main/java/com/android/tools/r8/code/UshrInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexUshrInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class UshrInt extends Format23x { +public class DexUshrInt extends DexFormat23x { public static final int OPCODE = 0x9A; public static final String NAME = "UshrInt"; public static final String SMALI_NAME = "ushr-int"; - UshrInt(int high, BytecodeStream stream) { + DexUshrInt(int high, BytecodeStream stream) { super(high, stream); } - public UshrInt(int dest, int left, int right) { + public DexUshrInt(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/UshrInt2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexUshrInt2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/UshrInt2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexUshrInt2Addr.java index 3d9c135..fc5e4a7 100644 --- a/src/main/java/com/android/tools/r8/code/UshrInt2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexUshrInt2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class UshrInt2Addr extends Format12x { +public class DexUshrInt2Addr extends DexFormat12x { public static final int OPCODE = 0xba; public static final String NAME = "UshrInt2Addr"; public static final String SMALI_NAME = "ushr-int/2addr"; - UshrInt2Addr(int high, BytecodeStream stream) { + DexUshrInt2Addr(int high, BytecodeStream stream) { super(high, stream); } - public UshrInt2Addr(int left, int right) { + public DexUshrInt2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/UshrIntLit8.java b/src/main/java/com/android/tools/r8/dex/code/DexUshrIntLit8.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/UshrIntLit8.java rename to src/main/java/com/android/tools/r8/dex/code/DexUshrIntLit8.java index 499c34d..625e1ee 100644 --- a/src/main/java/com/android/tools/r8/code/UshrIntLit8.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexUshrIntLit8.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class UshrIntLit8 extends Format22b { +public class DexUshrIntLit8 extends DexFormat22b { public static final int OPCODE = 0xe2; public static final String NAME = "UshrIntLit8"; public static final String SMALI_NAME = "ushr-int/lit8"; - UshrIntLit8(int high, BytecodeStream stream) { + DexUshrIntLit8(int high, BytecodeStream stream) { super(high, stream); } - public UshrIntLit8(int dest, int register, int constant) { + public DexUshrIntLit8(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/UshrLong.java b/src/main/java/com/android/tools/r8/dex/code/DexUshrLong.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/UshrLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexUshrLong.java index 43b816a..0aed94f 100644 --- a/src/main/java/com/android/tools/r8/code/UshrLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexUshrLong.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class UshrLong extends Format23x { + +public class DexUshrLong extends DexFormat23x { public static final int OPCODE = 0xa5; public static final String NAME = "UshrLong"; public static final String SMALI_NAME = "ushr-long"; - UshrLong(int high, BytecodeStream stream) { + DexUshrLong(int high, BytecodeStream stream) { super(high, stream); } - public UshrLong(int dest, int left, int right) { + public DexUshrLong(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/UshrLong2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexUshrLong2Addr.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/UshrLong2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexUshrLong2Addr.java index 1651d6d..d140899 100644 --- a/src/main/java/com/android/tools/r8/code/UshrLong2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexUshrLong2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class UshrLong2Addr extends Format12x { +public class DexUshrLong2Addr extends DexFormat12x { public static final int OPCODE = 0xc5; public static final String NAME = "UshrLong2Addr"; public static final String SMALI_NAME = "ushr-long/2addr"; - UshrLong2Addr(int high, BytecodeStream stream) { + DexUshrLong2Addr(int high, BytecodeStream stream) { super(high, stream); } - public UshrLong2Addr(int left, int right) { + public DexUshrLong2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/XorInt.java b/src/main/java/com/android/tools/r8/dex/code/DexXorInt.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/XorInt.java rename to src/main/java/com/android/tools/r8/dex/code/DexXorInt.java index 3e68cf6..063e107 100644 --- a/src/main/java/com/android/tools/r8/code/XorInt.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexXorInt.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class XorInt extends Format23x { +public class DexXorInt extends DexFormat23x { public static final int OPCODE = 0x97; public static final String NAME = "XorInt"; public static final String SMALI_NAME = "xor-int"; - XorInt(int high, BytecodeStream stream) { + DexXorInt(int high, BytecodeStream stream) { super(high, stream); } - public XorInt(int dest, int left, int right) { + public DexXorInt(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/XorInt2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexXorInt2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/XorInt2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexXorInt2Addr.java index 1c0f1a6..b927dba 100644 --- a/src/main/java/com/android/tools/r8/code/XorInt2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexXorInt2Addr.java
@@ -1,21 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class XorInt2Addr extends Format12x { + +public class DexXorInt2Addr extends DexFormat12x { public static final int OPCODE = 0xb7; public static final String NAME = "XorInt2Addr"; public static final String SMALI_NAME = "xor-int/2addr"; - XorInt2Addr(int high, BytecodeStream stream) { + DexXorInt2Addr(int high, BytecodeStream stream) { super(high, stream); } - public XorInt2Addr(int left, int right) { + public DexXorInt2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/XorIntLit16.java b/src/main/java/com/android/tools/r8/dex/code/DexXorIntLit16.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/XorIntLit16.java rename to src/main/java/com/android/tools/r8/dex/code/DexXorIntLit16.java index 8efa8ac..e55d037 100644 --- a/src/main/java/com/android/tools/r8/code/XorIntLit16.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexXorIntLit16.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class XorIntLit16 extends Format22s { +public class DexXorIntLit16 extends DexFormat22s { public static final int OPCODE = 0xd7; public static final String NAME = "XorIntLit16"; public static final String SMALI_NAME = "xor-int/lit16"; - XorIntLit16(int high, BytecodeStream stream) { + DexXorIntLit16(int high, BytecodeStream stream) { super(high, stream); } - public XorIntLit16(int dest, int register, int constant) { + public DexXorIntLit16(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/XorIntLit8.java b/src/main/java/com/android/tools/r8/dex/code/DexXorIntLit8.java similarity index 80% rename from src/main/java/com/android/tools/r8/code/XorIntLit8.java rename to src/main/java/com/android/tools/r8/dex/code/DexXorIntLit8.java index 8447abb..0cdceff 100644 --- a/src/main/java/com/android/tools/r8/code/XorIntLit8.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexXorIntLit8.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class XorIntLit8 extends Format22b { +public class DexXorIntLit8 extends DexFormat22b { public static final int OPCODE = 0xdf; public static final String NAME = "XorIntLit8"; public static final String SMALI_NAME = "xor-int/lit8"; - XorIntLit8(int high, BytecodeStream stream) { + DexXorIntLit8(int high, BytecodeStream stream) { super(high, stream); } - public XorIntLit8(int dest, int register, int constant) { + public DexXorIntLit8(int dest, int register, int constant) { super(dest, register, constant); }
diff --git a/src/main/java/com/android/tools/r8/code/XorLong.java b/src/main/java/com/android/tools/r8/dex/code/DexXorLong.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/XorLong.java rename to src/main/java/com/android/tools/r8/dex/code/DexXorLong.java index c2f7b7f..53a3deb 100644 --- a/src/main/java/com/android/tools/r8/code/XorLong.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexXorLong.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class XorLong extends Format23x { +public class DexXorLong extends DexFormat23x { public static final int OPCODE = 0xA2; public static final String NAME = "XorLong"; public static final String SMALI_NAME = "xor-long"; - XorLong(int high, BytecodeStream stream) { + DexXorLong(int high, BytecodeStream stream) { super(high, stream); } - public XorLong(int dest, int left, int right) { + public DexXorLong(int dest, int left, int right) { super(dest, left, right); }
diff --git a/src/main/java/com/android/tools/r8/code/XorLong2Addr.java b/src/main/java/com/android/tools/r8/dex/code/DexXorLong2Addr.java similarity index 81% rename from src/main/java/com/android/tools/r8/code/XorLong2Addr.java rename to src/main/java/com/android/tools/r8/dex/code/DexXorLong2Addr.java index ec3f5ef..6e8ddb3 100644 --- a/src/main/java/com/android/tools/r8/code/XorLong2Addr.java +++ b/src/main/java/com/android/tools/r8/dex/code/DexXorLong2Addr.java
@@ -1,22 +1,22 @@ // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -package com.android.tools.r8.code; +package com.android.tools.r8.dex.code; import com.android.tools.r8.ir.code.NumericType; import com.android.tools.r8.ir.conversion.IRBuilder; -public class XorLong2Addr extends Format12x { +public class DexXorLong2Addr extends DexFormat12x { public static final int OPCODE = 0xc2; public static final String NAME = "XorLong2Addr"; public static final String SMALI_NAME = "xor-long/2addr"; - XorLong2Addr(int high, BytecodeStream stream) { + DexXorLong2Addr(int high, BytecodeStream stream) { super(high, stream); } - public XorLong2Addr(int left, int right) { + public DexXorLong2Addr(int left, int right) { super(left, right); }
diff --git a/src/main/java/com/android/tools/r8/graph/CfCode.java b/src/main/java/com/android/tools/r8/graph/CfCode.java index 3a727a8..321c775 100644 --- a/src/main/java/com/android/tools/r8/graph/CfCode.java +++ b/src/main/java/com/android/tools/r8/graph/CfCode.java
@@ -18,8 +18,8 @@ import com.android.tools.r8.cf.code.CfPosition; import com.android.tools.r8.cf.code.CfReturnVoid; import com.android.tools.r8.cf.code.CfTryCatch; -import com.android.tools.r8.code.Base5Format; -import com.android.tools.r8.code.CfOrDexInstruction; +import com.android.tools.r8.dex.code.CfOrDexInstruction; +import com.android.tools.r8.dex.code.DexBase5Format; import com.android.tools.r8.errors.InvalidDebugInfoException; import com.android.tools.r8.errors.Unimplemented; import com.android.tools.r8.errors.Unreachable; @@ -303,7 +303,7 @@ @Override public int estimatedDexCodeSizeUpperBoundInBytes() { - return estimatedSizeForInlining() * Base5Format.SIZE; + return estimatedSizeForInlining() * DexBase5Format.SIZE; } public int bytecodeSizeUpperBound() {
diff --git a/src/main/java/com/android/tools/r8/graph/Code.java b/src/main/java/com/android/tools/r8/graph/Code.java index 8152305..0edeb6f 100644 --- a/src/main/java/com/android/tools/r8/graph/Code.java +++ b/src/main/java/com/android/tools/r8/graph/Code.java
@@ -3,8 +3,8 @@ // BSD-style license that can be found in the LICENSE file. package com.android.tools.r8.graph; -import com.android.tools.r8.code.CfOrDexInstruction; import com.android.tools.r8.dex.MixedSectionCollection; +import com.android.tools.r8.dex.code.CfOrDexInstruction; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.bytecodemetadata.BytecodeInstructionMetadata; import com.android.tools.r8.graph.bytecodemetadata.BytecodeMetadata;
diff --git a/src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java b/src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java index 07fd8c4..906d92d 100644 --- a/src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java +++ b/src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java
@@ -9,11 +9,11 @@ import com.android.tools.r8.cf.code.CfInvoke; import com.android.tools.r8.cf.code.CfLoad; import com.android.tools.r8.cf.code.CfReturnVoid; -import com.android.tools.r8.code.InvokeDirect; -import com.android.tools.r8.code.ReturnVoid; import com.android.tools.r8.dex.CodeToKeep; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.dex.MixedSectionCollection; +import com.android.tools.r8.dex.code.DexInvokeDirect; +import com.android.tools.r8.dex.code.DexReturnVoid; import com.android.tools.r8.graph.DexCode.Try; import com.android.tools.r8.graph.DexCode.TryHandler; import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription; @@ -169,7 +169,7 @@ @Override public int codeSizeInBytes() { - return InvokeDirect.SIZE + ReturnVoid.SIZE; + return DexInvokeDirect.SIZE + DexReturnVoid.SIZE; } @Override @@ -369,9 +369,9 @@ GraphLens graphLens, LensCodeRewriterUtils lensCodeRewriter, ObjectToOffsetMapping mapping) { - new InvokeDirect(1, getParentConstructor(context, mapping.dexItemFactory()), 0, 0, 0, 0, 0) + new DexInvokeDirect(1, getParentConstructor(context, mapping.dexItemFactory()), 0, 0, 0, 0, 0) .write(shortBuffer, context, graphLens, mapping, lensCodeRewriter); - new ReturnVoid().write(shortBuffer, context, graphLens, mapping, lensCodeRewriter); + new DexReturnVoid().write(shortBuffer, context, graphLens, mapping, lensCodeRewriter); } @Override
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 c99b310..8dd617b 100644 --- a/src/main/java/com/android/tools/r8/graph/DexCode.java +++ b/src/main/java/com/android/tools/r8/graph/DexCode.java
@@ -3,14 +3,14 @@ // BSD-style license that can be found in the LICENSE file. package com.android.tools.r8.graph; -import com.android.tools.r8.code.CfOrDexInstruction; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.ReturnVoid; -import com.android.tools.r8.code.SwitchPayload; import com.android.tools.r8.dex.CodeToKeep; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.dex.JumboStringRewriter; import com.android.tools.r8.dex.MixedSectionCollection; +import com.android.tools.r8.dex.code.CfOrDexInstruction; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexReturnVoid; +import com.android.tools.r8.dex.code.DexSwitchPayload; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.DexCode.TryHandler.TypeAddrPair; import com.android.tools.r8.graph.DexDebugEvent.SetPositionFrame; @@ -60,13 +60,13 @@ public final int outgoingRegisterSize; public final Try[] tries; public final TryHandler[] handlers; - public final Instruction[] instructions; + public final DexInstruction[] instructions; public DexString highestSortingString; private DexDebugInfo debugInfo; private DexDebugInfoForWriting debugInfoForWriting; - private final BytecodeMetadata<Instruction> metadata; + private final BytecodeMetadata<DexInstruction> metadata; private static void specify(StructuralSpecification<DexCode, ?> spec) { spec.withInt(c -> c.registerSize) @@ -82,7 +82,7 @@ int registerSize, int insSize, int outsSize, - Instruction[] instructions, + DexInstruction[] instructions, Try[] tries, TryHandler[] handlers, DexDebugInfo debugInfo) { @@ -101,11 +101,11 @@ int registerSize, int insSize, int outsSize, - Instruction[] instructions, + DexInstruction[] instructions, Try[] tries, TryHandler[] handlers, DexDebugInfo debugInfo, - BytecodeMetadata<Instruction> metadata) { + BytecodeMetadata<DexInstruction> metadata) { this.incomingRegisterSize = insSize; this.registerSize = registerSize; this.outgoingRegisterSize = outsSize; @@ -126,7 +126,7 @@ } @Override - public BytecodeMetadata<Instruction> getMetadata() { + public BytecodeMetadata<DexInstruction> getMetadata() { return metadata; } @@ -135,7 +135,7 @@ return getMetadata(instruction.asDexInstruction()); } - public BytecodeInstructionMetadata getMetadata(Instruction instruction) { + public BytecodeInstructionMetadata getMetadata(DexInstruction instruction) { return metadata.getMetadata(instruction); } @@ -157,8 +157,8 @@ firstJumboString = mapping.getFirstString(); } else { assert highestSortingString != null - || Arrays.stream(instructions).noneMatch(Instruction::isConstString); - assert Arrays.stream(instructions).noneMatch(Instruction::isDexItemBasedConstString); + || Arrays.stream(instructions).noneMatch(DexInstruction::isConstString); + assert Arrays.stream(instructions).noneMatch(DexInstruction::isDexItemBasedConstString); if (highestSortingString != null && highestSortingString.isGreaterThanOrEqualTo(mapping.getFirstJumboString())) { firstJumboString = mapping.getFirstJumboString(); @@ -171,7 +171,7 @@ @Override public void setCallSiteContexts(ProgramMethod method) { - for (Instruction instruction : instructions) { + for (DexInstruction instruction : instructions) { DexCallSite callSite = instruction.getCallSite(); if (callSite != null) { callSite.setContext(method.getReference(), instruction.getOffset()); @@ -363,7 +363,7 @@ @Override public boolean isEmptyVoidMethod() { - return instructions.length == 1 && instructions[0] instanceof ReturnVoid; + return instructions.length == 1 && instructions[0] instanceof DexReturnVoid; } @Override @@ -421,7 +421,7 @@ private void internalRegisterCodeReferences(DexClassAndMethod method, UseRegistry registry) { assert registry.getTraversalContinuation().shouldContinue(); - for (Instruction insn : instructions) { + for (DexInstruction insn : instructions) { insn.registerUse(registry); if (registry.getTraversalContinuation().shouldBreak()) { return; @@ -456,8 +456,8 @@ builder.append("------------------------------------------------------------\n"); // Collect payload users. - Map<Integer, Instruction> payloadUsers = new HashMap<>(); - for (Instruction dex : instructions) { + Map<Integer, DexInstruction> payloadUsers = new HashMap<>(); + for (DexInstruction dex : instructions) { if (dex.hasPayload()) { payloadUsers.put(dex.getOffset() + dex.getPayloadOffset(), dex); } @@ -472,7 +472,7 @@ } int instructionNumber = 0; Map<Integer, DebugLocalInfo> locals = Collections.emptyMap(); - for (Instruction insn : instructions) { + for (DexInstruction insn : instructions) { debugInfo = advanceToOffset(insn.getOffset() - 1, debugInfo, debugInfoIterator); while (debugInfo != null && debugInfo.address == insn.getOffset()) { if (debugInfo.lineEntry || !locals.equals(debugInfo.locals)) { @@ -484,7 +484,7 @@ StringUtils.appendLeftPadded(builder, Integer.toString(instructionNumber++), 5); builder.append(": "); if (insn.isSwitchPayload()) { - Instruction payloadUser = payloadUsers.get(insn.getOffset()); + DexInstruction payloadUser = payloadUsers.get(insn.getOffset()); builder.append(insn.toString(naming, payloadUser)); } else { builder.append(insn.toString(naming)); @@ -494,7 +494,7 @@ if (isPcBasedInfo) { builder.append(getDebugInfo()).append("\n"); } else if (debugInfoIterator.hasNext()) { - Instruction lastInstruction = ArrayUtils.last(instructions); + DexInstruction lastInstruction = ArrayUtils.last(instructions); debugInfo = advanceToOffset(lastInstruction.getOffset(), debugInfo, debugInfoIterator); if (debugInfo != null) { throw new Unreachable("Could not print all debug information."); @@ -531,12 +531,12 @@ public String toSmaliString(ClassNameMapper naming) { StringBuilder builder = new StringBuilder(); // Find labeled targets. - Map<Integer, Instruction> payloadUsers = new HashMap<>(); + Map<Integer, DexInstruction> payloadUsers = new HashMap<>(); Set<Integer> labledTargets = new HashSet<>(); // Collect payload users and labeled targets for non-payload instructions. - for (Instruction dex : instructions) { + for (DexInstruction dex : instructions) { int[] targets = dex.getTargets(); - if (targets != Instruction.NO_TARGETS && targets != Instruction.EXIT_TARGET) { + if (targets != DexInstruction.NO_TARGETS && targets != DexInstruction.EXIT_TARGET) { assert targets.length <= 2; // For if instructions the second target is the fallthrough, for which no label is needed. labledTargets.add(dex.getOffset() + targets[0]); @@ -546,11 +546,11 @@ } } // Collect labeled targets for payload instructions. - for (Instruction dex : instructions) { + for (DexInstruction dex : instructions) { if (dex.isSwitchPayload()) { - Instruction payloadUser = payloadUsers.get(dex.getOffset()); - if (dex instanceof SwitchPayload) { - SwitchPayload payload = (SwitchPayload) dex; + DexInstruction payloadUser = payloadUsers.get(dex.getOffset()); + if (dex instanceof DexSwitchPayload) { + DexSwitchPayload payload = (DexSwitchPayload) dex; for (int target : payload.switchTargetOffsets()) { labledTargets.add(payloadUser.getOffset() + target); } @@ -558,14 +558,14 @@ } } // Generate smali for all instructions. - for (Instruction dex : instructions) { + for (DexInstruction dex : instructions) { if (labledTargets.contains(dex.getOffset())) { builder.append(" :label_"); builder.append(dex.getOffset()); builder.append("\n"); } if (dex.isSwitchPayload()) { - Instruction payloadUser = payloadUsers.get(dex.getOffset()); + DexInstruction payloadUser = payloadUsers.get(dex.getOffset()); builder.append(dex.toSmaliString(payloadUser)).append('\n'); } else { builder.append(dex.toSmaliString(naming)).append('\n'); @@ -594,7 +594,7 @@ GraphLens graphLens, LensCodeRewriterUtils rewriter) { highestSortingString = null; - for (Instruction insn : instructions) { + for (DexInstruction insn : instructions) { assert !insn.isDexItemBasedConstString(); insn.collectIndexedItems(indexedItems, context, graphLens, rewriter); if (insn.isConstString()) { @@ -665,7 +665,7 @@ @Override public int codeSizeInBytes() { - Instruction last = instructions[instructions.length - 1]; + DexInstruction last = instructions[instructions.length - 1]; assert last.hasOffset(); int result = last.getOffset() + last.getSize(); assert result == computeCodeSizeInBytes(); @@ -674,7 +674,7 @@ private int computeCodeSizeInBytes() { int size = 0; - for (Instruction insn : instructions) { + for (DexInstruction insn : instructions) { size += insn.getSize(); } return size; @@ -682,7 +682,7 @@ @Override public void writeKeepRulesForDesugaredLibrary(CodeToKeep desugaredLibraryCodeToKeep) { - for (Instruction instruction : instructions) { + for (DexInstruction instruction : instructions) { DexMethod method = instruction.getMethod(); DexField field = instruction.getField(); if (field != null) { @@ -707,7 +707,7 @@ GraphLens graphLens, LensCodeRewriterUtils lensCodeRewriter, ObjectToOffsetMapping mapping) { - for (Instruction instruction : instructions) { + for (DexInstruction instruction : instructions) { instruction.write(shortBuffer, context, graphLens, mapping, lensCodeRewriter); } }
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 09f740e..88d9f04 100644 --- a/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java +++ b/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java
@@ -3,11 +3,11 @@ // BSD-style license that can be found in the LICENSE file. package com.android.tools.r8.graph; -import com.android.tools.r8.code.Instruction; import com.android.tools.r8.dex.Constants; import com.android.tools.r8.dex.DebugBytecodeWriter; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.dex.MixedSectionCollection; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.utils.ArrayUtils; import com.android.tools.r8.utils.LebUtils; @@ -298,7 +298,7 @@ List<DexDebugEvent> events = new ArrayList<>(code.instructions.length); int pc = 0; int delta = 0; - for (Instruction instruction : code.instructions) { + for (DexInstruction instruction : code.instructions) { if (instruction.canThrow()) { DexDebugEventBuilder.addDefaultEventWithAdvancePcIfNecessary(delta, delta, events, factory); pc += delta;
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 4196ca2..73e3420 100644 --- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java +++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -29,16 +29,16 @@ import com.android.tools.r8.cf.code.CfStackInstruction.Opcode; import com.android.tools.r8.cf.code.CfStore; import com.android.tools.r8.cf.code.CfThrow; -import com.android.tools.r8.code.ConstString; -import com.android.tools.r8.code.InstanceOf; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.InvokeDirect; -import com.android.tools.r8.code.InvokeStatic; -import com.android.tools.r8.code.NewInstance; -import com.android.tools.r8.code.Return; -import com.android.tools.r8.code.Throw; -import com.android.tools.r8.code.XorIntLit8; import com.android.tools.r8.dex.MixedSectionCollection; +import com.android.tools.r8.dex.code.DexConstString; +import com.android.tools.r8.dex.code.DexInstanceOf; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeDirect; +import com.android.tools.r8.dex.code.DexInvokeStatic; +import com.android.tools.r8.dex.code.DexNewInstance; +import com.android.tools.r8.dex.code.DexReturn; +import com.android.tools.r8.dex.code.DexThrow; +import com.android.tools.r8.dex.code.DexXorIntLit8; import com.android.tools.r8.errors.InternalCompilerError; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.DexAnnotation.AnnotatedKind; @@ -889,13 +889,11 @@ return getReference().toSourceString(); } - /** - * Generates a {@link DexCode} object for the given instructions. - */ + /** Generates a {@link DexCode} object for the given instructions. */ private DexCode generateCodeFromTemplate( - int numberOfRegisters, int outRegisters, Instruction... instructions) { + int numberOfRegisters, int outRegisters, DexInstruction... instructions) { int offset = 0; - for (Instruction instruction : instructions) { + for (DexInstruction instruction : instructions) { instruction.setOffset(offset); offset += instruction.getSize(); } @@ -937,13 +935,13 @@ } public DexCode buildInstanceOfDexCode(DexType type, boolean negate) { - Instruction[] instructions = new Instruction[2 + BooleanUtils.intValue(negate)]; + DexInstruction[] instructions = new DexInstruction[2 + BooleanUtils.intValue(negate)]; int i = 0; - instructions[i++] = new InstanceOf(0, 0, type); + instructions[i++] = new DexInstanceOf(0, 0, type); if (negate) { - instructions[i++] = new XorIntLit8(0, 0, 1); + instructions[i++] = new DexXorIntLit8(0, 0, 1); } - instructions[i] = new Return(0); + instructions[i] = new DexReturn(0); return generateCodeFromTemplate(1, 0, instructions); } @@ -998,12 +996,12 @@ return generateCodeFromTemplate( 2, 2, - new ConstString(0, tag), - new ConstString(1, message), - new InvokeStatic(2, logMethod, 0, 1, 0, 0, 0), - new NewInstance(0, exceptionType), - new InvokeDirect(2, exceptionInitMethod, 0, 1, 0, 0, 0), - new Throw(0)); + new DexConstString(0, tag), + new DexConstString(1, message), + new DexInvokeStatic(2, logMethod, 0, 1, 0, 0, 0), + new DexNewInstance(0, exceptionType), + new DexInvokeDirect(2, exceptionInitMethod, 0, 1, 0, 0, 0), + new DexThrow(0)); } private CfCode toCfCodeThatLogsError(DexItemFactory itemFactory) {
diff --git a/src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java b/src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java index 55e6f8c..d2a55cb 100644 --- a/src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java +++ b/src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java
@@ -4,12 +4,12 @@ package com.android.tools.r8.graph; -import com.android.tools.r8.code.InvokeDirect; -import com.android.tools.r8.code.NewInstance; -import com.android.tools.r8.code.Throw; import com.android.tools.r8.dex.CodeToKeep; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.dex.MixedSectionCollection; +import com.android.tools.r8.dex.code.DexInvokeDirect; +import com.android.tools.r8.dex.code.DexNewInstance; +import com.android.tools.r8.dex.code.DexThrow; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.DexCode.Try; import com.android.tools.r8.graph.DexCode.TryHandler; @@ -72,7 +72,7 @@ @Override public int codeSizeInBytes() { - return NewInstance.SIZE + InvokeDirect.SIZE + Throw.SIZE; + return DexNewInstance.SIZE + DexInvokeDirect.SIZE + DexThrow.SIZE; } @Override @@ -216,14 +216,14 @@ int register = 0; int notUsed = 0; int argumentCount = 1; - new NewInstance(register, exceptionType) + new DexNewInstance(register, exceptionType) .write(shortBuffer, context, graphLens, mapping, lensCodeRewriter); DexMethod instanceInitializer = lensCodeRewriter.dexItemFactory().createInstanceInitializer(exceptionType); - new InvokeDirect( + new DexInvokeDirect( argumentCount, instanceInitializer, register, notUsed, notUsed, notUsed, notUsed) .write(shortBuffer, context, graphLens, mapping, lensCodeRewriter); - new Throw(register).write(shortBuffer, context, graphLens, mapping, lensCodeRewriter); + new DexThrow(register).write(shortBuffer, context, graphLens, mapping, lensCodeRewriter); } @Override
diff --git a/src/main/java/com/android/tools/r8/graph/ThrowNullCode.java b/src/main/java/com/android/tools/r8/graph/ThrowNullCode.java index 5b02c12..b2418cb 100644 --- a/src/main/java/com/android/tools/r8/graph/ThrowNullCode.java +++ b/src/main/java/com/android/tools/r8/graph/ThrowNullCode.java
@@ -5,11 +5,11 @@ package com.android.tools.r8.graph; import com.android.tools.r8.cf.CfVersion; -import com.android.tools.r8.code.Const4; -import com.android.tools.r8.code.Throw; import com.android.tools.r8.dex.CodeToKeep; import com.android.tools.r8.dex.IndexedItemCollection; import com.android.tools.r8.dex.MixedSectionCollection; +import com.android.tools.r8.dex.code.DexConst4; +import com.android.tools.r8.dex.code.DexThrow; import com.android.tools.r8.graph.DexCode.Try; import com.android.tools.r8.graph.DexCode.TryHandler; import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription; @@ -81,7 +81,7 @@ @Override public int codeSizeInBytes() { - return Const4.SIZE + Throw.SIZE; + return DexConst4.SIZE + DexThrow.SIZE; } @Override @@ -251,8 +251,8 @@ LensCodeRewriterUtils lensCodeRewriter, ObjectToOffsetMapping mapping) { int register = 0; - new Const4(register, 0).write(shortBuffer, context, graphLens, mapping, lensCodeRewriter); - new Throw(register).write(shortBuffer, context, graphLens, mapping, lensCodeRewriter); + new DexConst4(register, 0).write(shortBuffer, context, graphLens, mapping, lensCodeRewriter); + new DexThrow(register).write(shortBuffer, context, graphLens, mapping, lensCodeRewriter); } @Override
diff --git a/src/main/java/com/android/tools/r8/graph/UseRegistry.java b/src/main/java/com/android/tools/r8/graph/UseRegistry.java index 6e08e6c..0b066d6 100644 --- a/src/main/java/com/android/tools/r8/graph/UseRegistry.java +++ b/src/main/java/com/android/tools/r8/graph/UseRegistry.java
@@ -3,9 +3,9 @@ // BSD-style license that can be found in the LICENSE file. package com.android.tools.r8.graph; -import com.android.tools.r8.code.CfOrDexInstanceFieldRead; -import com.android.tools.r8.code.CfOrDexInstruction; -import com.android.tools.r8.code.CfOrDexStaticFieldRead; +import com.android.tools.r8.dex.code.CfOrDexInstanceFieldRead; +import com.android.tools.r8.dex.code.CfOrDexInstruction; +import com.android.tools.r8.dex.code.CfOrDexStaticFieldRead; import com.android.tools.r8.ir.code.Invoke; import com.android.tools.r8.utils.TraversalContinuation; import java.util.ListIterator;
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/ComputeApiLevelOfSyntheticClass.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/ComputeApiLevelOfSyntheticClass.java index 0faa7e9..3568c17 100644 --- a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/ComputeApiLevelOfSyntheticClass.java +++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/ComputeApiLevelOfSyntheticClass.java
@@ -6,7 +6,7 @@ import com.android.tools.r8.androidapi.AndroidApiLevelCompute; import com.android.tools.r8.androidapi.ComputedApiLevel; -import com.android.tools.r8.code.CfOrDexInstruction; +import com.android.tools.r8.dex.code.CfOrDexInstruction; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexCallSite; import com.android.tools.r8.graph.DexEncodedMethod;
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoClassInitializerCycles.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoClassInitializerCycles.java index 0b2c884..744154c 100644 --- a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoClassInitializerCycles.java +++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoClassInitializerCycles.java
@@ -9,7 +9,7 @@ import static com.android.tools.r8.ir.desugar.LambdaDescriptor.isLambdaMetafactoryMethod; import static com.android.tools.r8.utils.MapUtils.ignoreKey; -import com.android.tools.r8.code.CfOrDexInstruction; +import com.android.tools.r8.dex.code.CfOrDexInstruction; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexCallSite; import com.android.tools.r8.graph.DexClassAndMethod;
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/TrivialFieldAccessReprocessor.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/TrivialFieldAccessReprocessor.java index d2b1d3b..acc6daa 100644 --- a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/TrivialFieldAccessReprocessor.java +++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/TrivialFieldAccessReprocessor.java
@@ -9,8 +9,8 @@ import static com.android.tools.r8.shaking.ObjectAllocationInfoCollectionUtils.mayHaveFinalizeMethodDirectlyOrIndirectly; import static com.android.tools.r8.utils.MapUtils.ignoreKey; -import com.android.tools.r8.code.CfOrDexInstanceFieldRead; -import com.android.tools.r8.code.CfOrDexStaticFieldRead; +import com.android.tools.r8.dex.code.CfOrDexInstanceFieldRead; +import com.android.tools.r8.dex.code.CfOrDexStaticFieldRead; import com.android.tools.r8.graph.AbstractAccessContexts; import com.android.tools.r8.graph.AbstractAccessContexts.ConcreteAccessContexts; import com.android.tools.r8.graph.AppView;
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/proto/ProtoEnqueuerUseRegistry.java b/src/main/java/com/android/tools/r8/ir/analysis/proto/ProtoEnqueuerUseRegistry.java index 253665f..13495c35 100644 --- a/src/main/java/com/android/tools/r8/ir/analysis/proto/ProtoEnqueuerUseRegistry.java +++ b/src/main/java/com/android/tools/r8/ir/analysis/proto/ProtoEnqueuerUseRegistry.java
@@ -7,7 +7,7 @@ import static com.android.tools.r8.graph.DexProgramClass.asProgramClassOrNull; import com.android.tools.r8.androidapi.AndroidApiLevelCompute; -import com.android.tools.r8.code.CfOrDexInstruction; +import com.android.tools.r8.dex.code.CfOrDexInstruction; import com.android.tools.r8.graph.AppInfoWithClassHierarchy; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexField;
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 3a5fa32..dc8cb05 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
@@ -5,16 +5,17 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfArithmeticBinop; -import com.android.tools.r8.code.AddDouble; -import com.android.tools.r8.code.AddDouble2Addr; -import com.android.tools.r8.code.AddFloat; -import com.android.tools.r8.code.AddFloat2Addr; -import com.android.tools.r8.code.AddInt; -import com.android.tools.r8.code.AddInt2Addr; -import com.android.tools.r8.code.AddIntLit16; -import com.android.tools.r8.code.AddIntLit8; -import com.android.tools.r8.code.AddLong; -import com.android.tools.r8.code.AddLong2Addr; +import com.android.tools.r8.dex.code.DexAddDouble; +import com.android.tools.r8.dex.code.DexAddDouble2Addr; +import com.android.tools.r8.dex.code.DexAddFloat; +import com.android.tools.r8.dex.code.DexAddFloat2Addr; +import com.android.tools.r8.dex.code.DexAddInt; +import com.android.tools.r8.dex.code.DexAddInt2Addr; +import com.android.tools.r8.dex.code.DexAddIntLit16; +import com.android.tools.r8.dex.code.DexAddIntLit8; +import com.android.tools.r8.dex.code.DexAddLong; +import com.android.tools.r8.dex.code.DexAddLong2Addr; +import com.android.tools.r8.dex.code.DexInstruction; public class Add extends ArithmeticBinop { @@ -38,53 +39,53 @@ } @Override - public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { - return new AddInt(dest, left, right); + public DexInstruction CreateInt(int dest, int left, int right) { + return new DexAddInt(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { - return new AddLong(dest, left, right); + public DexInstruction CreateLong(int dest, int left, int right) { + return new DexAddLong(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateFloat(int dest, int left, int right) { - return new AddFloat(dest, left, right); + public DexInstruction CreateFloat(int dest, int left, int right) { + return new DexAddFloat(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateDouble(int dest, int left, int right) { - return new AddDouble(dest, left, right); + public DexInstruction CreateDouble(int dest, int left, int right) { + return new DexAddDouble(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { - return new AddInt2Addr(left, right); + public DexInstruction CreateInt2Addr(int left, int right) { + return new DexAddInt2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { - return new AddLong2Addr(left, right); + public DexInstruction CreateLong2Addr(int left, int right) { + return new DexAddLong2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateFloat2Addr(int left, int right) { - return new AddFloat2Addr(left, right); + public DexInstruction CreateFloat2Addr(int left, int right) { + return new DexAddFloat2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateDouble2Addr(int left, int right) { - return new AddDouble2Addr(left, right); + public DexInstruction CreateDouble2Addr(int left, int right) { + return new DexAddDouble2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { - return new AddIntLit8(dest, left, constant); + public DexInstruction CreateIntLit8(int dest, int left, int constant) { + return new DexAddIntLit8(dest, left, constant); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { - return new AddIntLit16(dest, left, constant); + public DexInstruction CreateIntLit16(int dest, int left, int constant) { + return new DexAddIntLit16(dest, left, constant); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/AlwaysMaterializingDefinition.java b/src/main/java/com/android/tools/r8/ir/code/AlwaysMaterializingDefinition.java index ed2cdd8..7f3a0b9 100644 --- a/src/main/java/com/android/tools/r8/ir/code/AlwaysMaterializingDefinition.java +++ b/src/main/java/com/android/tools/r8/ir/code/AlwaysMaterializingDefinition.java
@@ -4,9 +4,9 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.LoadStoreHelper; -import com.android.tools.r8.code.Const16; -import com.android.tools.r8.code.Const4; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexConst16; +import com.android.tools.r8.dex.code.DexConst4; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.ir.conversion.CfBuilder; @@ -39,7 +39,8 @@ public void buildDex(DexBuilder builder) { int register = builder.allocatedRegister(outValue, getNumber()); builder.add( - this, (register & 0xf) == register ? new Const4(register, 0) : new Const16(register, 0)); + this, + (register & 0xf) == register ? new DexConst4(register, 0) : new DexConst16(register, 0)); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/And.java b/src/main/java/com/android/tools/r8/ir/code/And.java index 86c193b..f7aac6c 100644 --- a/src/main/java/com/android/tools/r8/ir/code/And.java +++ b/src/main/java/com/android/tools/r8/ir/code/And.java
@@ -5,12 +5,13 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfLogicalBinop; -import com.android.tools.r8.code.AndInt; -import com.android.tools.r8.code.AndInt2Addr; -import com.android.tools.r8.code.AndIntLit16; -import com.android.tools.r8.code.AndIntLit8; -import com.android.tools.r8.code.AndLong; -import com.android.tools.r8.code.AndLong2Addr; +import com.android.tools.r8.dex.code.DexAndInt; +import com.android.tools.r8.dex.code.DexAndInt2Addr; +import com.android.tools.r8.dex.code.DexAndIntLit16; +import com.android.tools.r8.dex.code.DexAndIntLit8; +import com.android.tools.r8.dex.code.DexAndLong; +import com.android.tools.r8.dex.code.DexAndLong2Addr; +import com.android.tools.r8.dex.code.DexInstruction; import java.util.Set; public class And extends LogicalBinop { @@ -45,33 +46,33 @@ } @Override - public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { - return new AndInt(dest, left, right); + public DexInstruction CreateInt(int dest, int left, int right) { + return new DexAndInt(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { - return new AndLong(dest, left, right); + public DexInstruction CreateLong(int dest, int left, int right) { + return new DexAndLong(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { - return new AndInt2Addr(left, right); + public DexInstruction CreateInt2Addr(int left, int right) { + return new DexAndInt2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { - return new AndLong2Addr(left, right); + public DexInstruction CreateLong2Addr(int left, int right) { + return new DexAndLong2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { - return new AndIntLit8(dest, left, constant); + public DexInstruction CreateIntLit8(int dest, int left, int constant) { + return new DexAndIntLit8(dest, left, constant); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { - return new AndIntLit16(dest, left, constant); + public DexInstruction CreateIntLit16(int dest, int left, int constant) { + return new DexAndIntLit16(dest, left, constant); } @Override
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 a4be195..cf6039c 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
@@ -4,7 +4,7 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfArithmeticBinop; -import com.android.tools.r8.code.Instruction; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.ir.analysis.constant.Bottom; import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement; @@ -20,25 +20,25 @@ super(type, dest, left, right); } - public abstract com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right); + public abstract DexInstruction CreateInt(int dest, int left, int right); - public abstract Instruction CreateLong(int dest, int left, int right); + public abstract DexInstruction CreateLong(int dest, int left, int right); - public abstract Instruction CreateFloat(int dest, int left, int right); + public abstract DexInstruction CreateFloat(int dest, int left, int right); - public abstract Instruction CreateDouble(int dest, int left, int right); + public abstract DexInstruction CreateDouble(int dest, int left, int right); - public abstract Instruction CreateInt2Addr(int left, int right); + public abstract DexInstruction CreateInt2Addr(int left, int right); - public abstract Instruction CreateLong2Addr(int left, int right); + public abstract DexInstruction CreateLong2Addr(int left, int right); - public abstract Instruction CreateFloat2Addr(int left, int right); + public abstract DexInstruction CreateFloat2Addr(int left, int right); - public abstract Instruction CreateDouble2Addr(int left, int right); + public abstract DexInstruction CreateDouble2Addr(int left, int right); - public abstract Instruction CreateIntLit8(int dest, int left, int constant); + public abstract DexInstruction CreateIntLit8(int dest, int left, int constant); - public abstract Instruction CreateIntLit16(int dest, int left, int constant); + public abstract DexInstruction CreateIntLit16(int dest, int left, int constant); @Override public boolean canBeFolded() { @@ -64,7 +64,7 @@ // Method needsValueInRegister ensures that left value has an allocated register. int left = builder.allocatedRegister(leftValue(), getNumber()); int dest = builder.allocatedRegister(outValue, getNumber()); - Instruction instruction = null; + DexInstruction instruction = null; if (isTwoAddr(builder.getRegisterAllocator())) { int right = builder.allocatedRegister(rightValue(), getNumber()); if (left != dest) {
diff --git a/src/main/java/com/android/tools/r8/ir/code/ArrayGet.java b/src/main/java/com/android/tools/r8/ir/code/ArrayGet.java index 82a2ef7..2bfd3c3 100644 --- a/src/main/java/com/android/tools/r8/ir/code/ArrayGet.java +++ b/src/main/java/com/android/tools/r8/ir/code/ArrayGet.java
@@ -6,14 +6,15 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.cf.code.CfArrayLoad; -import com.android.tools.r8.code.Aget; -import com.android.tools.r8.code.AgetBoolean; -import com.android.tools.r8.code.AgetByte; -import com.android.tools.r8.code.AgetChar; -import com.android.tools.r8.code.AgetObject; -import com.android.tools.r8.code.AgetShort; -import com.android.tools.r8.code.AgetWide; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexAget; +import com.android.tools.r8.dex.code.DexAgetBoolean; +import com.android.tools.r8.dex.code.DexAgetByte; +import com.android.tools.r8.dex.code.DexAgetChar; +import com.android.tools.r8.dex.code.DexAgetObject; +import com.android.tools.r8.dex.code.DexAgetShort; +import com.android.tools.r8.dex.code.DexAgetWide; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.errors.CompilationError; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; @@ -73,36 +74,36 @@ int dest = builder.allocatedRegister(dest(), getNumber()); int array = builder.allocatedRegister(array(), getNumber()); int index = builder.allocatedRegister(index(), getNumber()); - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; switch (type) { case INT: case FLOAT: - instruction = new Aget(dest, array, index); + instruction = new DexAget(dest, array, index); break; case LONG: case DOUBLE: assert builder.getOptions().canUseSameArrayAndResultRegisterInArrayGetWide() || dest != array; - instruction = new AgetWide(dest, array, index); + instruction = new DexAgetWide(dest, array, index); break; case OBJECT: - instruction = new AgetObject(dest, array, index); + instruction = new DexAgetObject(dest, array, index); break; case BOOLEAN_OR_BYTE: ArrayTypeElement arrayType = array().getType().asArrayType(); if (arrayType != null && arrayType.getMemberType() == TypeElement.getBoolean()) { - instruction = new AgetBoolean(dest, array, index); + instruction = new DexAgetBoolean(dest, array, index); } else { assert array().getType().isDefinitelyNull() || arrayType.getMemberType() == TypeElement.getByte(); - instruction = new AgetByte(dest, array, index); + instruction = new DexAgetByte(dest, array, index); } break; case CHAR: - instruction = new AgetChar(dest, array, index); + instruction = new DexAgetChar(dest, array, index); break; case SHORT: - instruction = new AgetShort(dest, array, index); + instruction = new DexAgetShort(dest, array, index); break; case INT_OR_FLOAT: case LONG_OR_DOUBLE:
diff --git a/src/main/java/com/android/tools/r8/ir/code/ArrayLength.java b/src/main/java/com/android/tools/r8/ir/code/ArrayLength.java index a0bf286..14837ee 100644 --- a/src/main/java/com/android/tools/r8/ir/code/ArrayLength.java +++ b/src/main/java/com/android/tools/r8/ir/code/ArrayLength.java
@@ -7,6 +7,7 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.code.CfArrayLength; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexArrayLength; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.ProgramMethod; import com.android.tools.r8.ir.analysis.type.TypeElement; @@ -55,7 +56,7 @@ public void buildDex(DexBuilder builder) { int dest = builder.allocatedRegister(dest(), getNumber()); int array = builder.allocatedRegister(array(), getNumber()); - builder.add(this, new com.android.tools.r8.code.ArrayLength(dest, array)); + builder.add(this, new DexArrayLength(dest, array)); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/ArrayPut.java b/src/main/java/com/android/tools/r8/ir/code/ArrayPut.java index aa70b4f..4e43590 100644 --- a/src/main/java/com/android/tools/r8/ir/code/ArrayPut.java +++ b/src/main/java/com/android/tools/r8/ir/code/ArrayPut.java
@@ -5,14 +5,15 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.code.CfArrayStore; -import com.android.tools.r8.code.Aput; -import com.android.tools.r8.code.AputBoolean; -import com.android.tools.r8.code.AputByte; -import com.android.tools.r8.code.AputChar; -import com.android.tools.r8.code.AputObject; -import com.android.tools.r8.code.AputShort; -import com.android.tools.r8.code.AputWide; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexAput; +import com.android.tools.r8.dex.code.DexAputBoolean; +import com.android.tools.r8.dex.code.DexAputByte; +import com.android.tools.r8.dex.code.DexAputChar; +import com.android.tools.r8.dex.code.DexAputObject; +import com.android.tools.r8.dex.code.DexAputShort; +import com.android.tools.r8.dex.code.DexAputWide; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.ProgramMethod; @@ -66,34 +67,34 @@ int value = builder.allocatedRegister(value(), getNumber()); int array = builder.allocatedRegister(array(), getNumber()); int index = builder.allocatedRegister(index(), getNumber()); - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; switch (type) { case INT: case FLOAT: - instruction = new Aput(value, array, index); + instruction = new DexAput(value, array, index); break; case LONG: case DOUBLE: - instruction = new AputWide(value, array, index); + instruction = new DexAputWide(value, array, index); break; case OBJECT: - instruction = new AputObject(value, array, index); + instruction = new DexAputObject(value, array, index); break; case BOOLEAN_OR_BYTE: ArrayTypeElement arrayType = array().getType().asArrayType(); if (arrayType != null && arrayType.getMemberType() == TypeElement.getBoolean()) { - instruction = new AputBoolean(value, array, index); + instruction = new DexAputBoolean(value, array, index); } else { assert array().getType().isDefinitelyNull() || arrayType.getMemberType() == TypeElement.getByte(); - instruction = new AputByte(value, array, index); + instruction = new DexAputByte(value, array, index); } break; case CHAR: - instruction = new AputChar(value, array, index); + instruction = new DexAputChar(value, array, index); break; case SHORT: - instruction = new AputShort(value, array, index); + instruction = new DexAputShort(value, array, index); break; case INT_OR_FLOAT: case LONG_OR_DOUBLE:
diff --git a/src/main/java/com/android/tools/r8/ir/code/CheckCast.java b/src/main/java/com/android/tools/r8/ir/code/CheckCast.java index 5e96f46..ea014e6 100644 --- a/src/main/java/com/android/tools/r8/ir/code/CheckCast.java +++ b/src/main/java/com/android/tools/r8/ir/code/CheckCast.java
@@ -9,9 +9,10 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.cf.code.CfCheckCast; -import com.android.tools.r8.code.MoveObject; -import com.android.tools.r8.code.MoveObjectFrom16; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexCheckCast; +import com.android.tools.r8.dex.code.DexMoveObject; +import com.android.tools.r8.dex.code.DexMoveObjectFrom16; import com.android.tools.r8.graph.AccessControl; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexClass; @@ -107,18 +108,18 @@ if (inRegister == outRegister) { builder.add(this, createCheckCast(outRegister)); } else { - com.android.tools.r8.code.CheckCast cast = createCheckCast(outRegister); + DexCheckCast cast = createCheckCast(outRegister); if (outRegister <= Constants.U4BIT_MAX && inRegister <= Constants.U4BIT_MAX) { - builder.add(this, new MoveObject(outRegister, inRegister), cast); + builder.add(this, new DexMoveObject(outRegister, inRegister), cast); } else { - builder.add(this, new MoveObjectFrom16(outRegister, inRegister), cast); + builder.add(this, new DexMoveObjectFrom16(outRegister, inRegister), cast); } } } } - com.android.tools.r8.code.CheckCast createCheckCast(int register) { - return new com.android.tools.r8.code.CheckCast(register, getType(), ignoreCompatRules()); + DexCheckCast createCheckCast(int register) { + return new DexCheckCast(register, getType(), ignoreCompatRules()); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/Cmp.java b/src/main/java/com/android/tools/r8/ir/code/Cmp.java index a7b25a3..a03637e 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Cmp.java +++ b/src/main/java/com/android/tools/r8/ir/code/Cmp.java
@@ -4,12 +4,13 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfCmp; -import com.android.tools.r8.code.CmpLong; -import com.android.tools.r8.code.CmpgDouble; -import com.android.tools.r8.code.CmpgFloat; -import com.android.tools.r8.code.CmplDouble; -import com.android.tools.r8.code.CmplFloat; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexCmpLong; +import com.android.tools.r8.dex.code.DexCmpgDouble; +import com.android.tools.r8.dex.code.DexCmpgFloat; +import com.android.tools.r8.dex.code.DexCmplDouble; +import com.android.tools.r8.dex.code.DexCmplFloat; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.ir.analysis.constant.Bottom; @@ -53,7 +54,7 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int dest = builder.allocatedRegister(outValue, getNumber()); int left = builder.allocatedRegister(leftValue(), getNumber()); int right = builder.allocatedRegister(rightValue(), getNumber()); @@ -61,24 +62,24 @@ case DOUBLE: assert bias != Bias.NONE; if (bias == Bias.GT) { - instruction = new CmpgDouble(dest, left, right); + instruction = new DexCmpgDouble(dest, left, right); } else { assert bias == Bias.LT; - instruction = new CmplDouble(dest, left, right); + instruction = new DexCmplDouble(dest, left, right); } break; case FLOAT: assert bias != Bias.NONE; if (bias == Bias.GT) { - instruction = new CmpgFloat(dest, left, right); + instruction = new DexCmpgFloat(dest, left, right); } else { assert bias == Bias.LT; - instruction = new CmplFloat(dest, left, right); + instruction = new DexCmplFloat(dest, left, right); } break; case LONG: assert bias == Bias.NONE; - instruction = new CmpLong(dest, left, right); + instruction = new DexCmpLong(dest, left, right); break; default: throw new Unreachable("Unexpected type " + type);
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 05869bb..1fd0fed 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
@@ -8,6 +8,7 @@ import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.cf.code.CfConstClass; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexConstClass; import com.android.tools.r8.graph.AccessControl; import com.android.tools.r8.graph.AppInfoWithClassHierarchy; import com.android.tools.r8.graph.AppView; @@ -79,7 +80,7 @@ @Override public void buildDex(DexBuilder builder) { int dest = builder.allocatedRegister(dest(), getNumber()); - builder.add(this, new com.android.tools.r8.code.ConstClass(dest, clazz, ignoreCompatRules())); + builder.add(this, new DexConstClass(dest, clazz, ignoreCompatRules())); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/ConstMethodHandle.java b/src/main/java/com/android/tools/r8/ir/code/ConstMethodHandle.java index 35cef20..78ee74e 100644 --- a/src/main/java/com/android/tools/r8/ir/code/ConstMethodHandle.java +++ b/src/main/java/com/android/tools/r8/ir/code/ConstMethodHandle.java
@@ -7,6 +7,7 @@ import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.cf.code.CfConstMethodHandle; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexConstMethodHandle; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexMethodHandle; import com.android.tools.r8.graph.DexType; @@ -58,7 +59,7 @@ @Override public void buildDex(DexBuilder builder) { int dest = builder.allocatedRegister(dest(), getNumber()); - builder.add(this, new com.android.tools.r8.code.ConstMethodHandle(dest, methodHandle)); + builder.add(this, new DexConstMethodHandle(dest, methodHandle)); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/ConstMethodType.java b/src/main/java/com/android/tools/r8/ir/code/ConstMethodType.java index 64359c8..5ce3e31 100644 --- a/src/main/java/com/android/tools/r8/ir/code/ConstMethodType.java +++ b/src/main/java/com/android/tools/r8/ir/code/ConstMethodType.java
@@ -7,6 +7,7 @@ import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.cf.code.CfConstMethodType; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexConstMethodType; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexProto; import com.android.tools.r8.graph.DexType; @@ -58,7 +59,7 @@ @Override public void buildDex(DexBuilder builder) { int dest = builder.allocatedRegister(dest(), getNumber()); - builder.add(this, new com.android.tools.r8.code.ConstMethodType(dest, methodType)); + builder.add(this, new DexConstMethodType(dest, methodType)); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/ConstNumber.java b/src/main/java/com/android/tools/r8/ir/code/ConstNumber.java index 958816b..8d39b43 100644 --- a/src/main/java/com/android/tools/r8/ir/code/ConstNumber.java +++ b/src/main/java/com/android/tools/r8/ir/code/ConstNumber.java
@@ -7,15 +7,15 @@ import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.cf.code.CfConstNull; import com.android.tools.r8.cf.code.CfConstNumber; -import com.android.tools.r8.code.Const; -import com.android.tools.r8.code.Const16; -import com.android.tools.r8.code.Const4; -import com.android.tools.r8.code.ConstHigh16; -import com.android.tools.r8.code.ConstWide; -import com.android.tools.r8.code.ConstWide16; -import com.android.tools.r8.code.ConstWide32; -import com.android.tools.r8.code.ConstWideHigh16; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexConst; +import com.android.tools.r8.dex.code.DexConst16; +import com.android.tools.r8.dex.code.DexConst4; +import com.android.tools.r8.dex.code.DexConstHigh16; +import com.android.tools.r8.dex.code.DexConstWide; +import com.android.tools.r8.dex.code.DexConstWide16; +import com.android.tools.r8.dex.code.DexConstWide32; +import com.android.tools.r8.dex.code.DexConstWideHigh16; import com.android.tools.r8.graph.AppInfoWithClassHierarchy; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexType; @@ -143,24 +143,24 @@ if (outType().isObject() || outType().isSingle()) { assert NumberUtils.is32Bit(value); if ((register & 0xf) == register && NumberUtils.is4Bit(value)) { - builder.add(this, new Const4(register, (int) value)); + builder.add(this, new DexConst4(register, (int) value)); } else if (NumberUtils.is16Bit(value)) { - builder.add(this, new Const16(register, (int) value)); + builder.add(this, new DexConst16(register, (int) value)); } else if ((value & 0x0000ffffL) == 0) { - builder.add(this, new ConstHigh16(register, ((int) value) >>> 16)); + builder.add(this, new DexConstHigh16(register, ((int) value) >>> 16)); } else { - builder.add(this, new Const(register, (int) value)); + builder.add(this, new DexConst(register, (int) value)); } } else { assert outType().isWide(); if (NumberUtils.is16Bit(value)) { - builder.add(this, new ConstWide16(register, (int) value)); + builder.add(this, new DexConstWide16(register, (int) value)); } else if ((value & 0x0000ffffffffffffL) == 0) { - builder.add(this, new ConstWideHigh16(register, (int) (value >>> 48))); + builder.add(this, new DexConstWideHigh16(register, (int) (value >>> 48))); } else if (NumberUtils.is32Bit(value)) { - builder.add(this, new ConstWide32(register, (int) value)); + builder.add(this, new DexConstWide32(register, (int) value)); } else { - builder.add(this, new ConstWide(register, value)); + builder.add(this, new DexConstWide(register, value)); } } } @@ -222,24 +222,24 @@ if (type.isSingle()) { assert NumberUtils.is32Bit(value); if (NumberUtils.is4Bit(value)) { - return Const4.SIZE; + return DexConst4.SIZE; } else if (NumberUtils.is16Bit(value)) { - return Const16.SIZE; + return DexConst16.SIZE; } else if ((value & 0x0000ffffL) == 0) { - return ConstHigh16.SIZE; + return DexConstHigh16.SIZE; } else { - return Const.SIZE; + return DexConst.SIZE; } } else { assert type.isWide(); if (NumberUtils.is16Bit(value)) { - return ConstWide16.SIZE; + return DexConstWide16.SIZE; } else if ((value & 0x0000ffffffffffffL) == 0) { - return ConstWideHigh16.SIZE; + return DexConstWideHigh16.SIZE; } else if (NumberUtils.is32Bit(value)) { - return ConstWide32.SIZE; + return DexConstWide32.SIZE; } else { - return ConstWide.SIZE; + return DexConstWide.SIZE; } } }
diff --git a/src/main/java/com/android/tools/r8/ir/code/ConstString.java b/src/main/java/com/android/tools/r8/ir/code/ConstString.java index 3df5d13..ca71070 100644 --- a/src/main/java/com/android/tools/r8/ir/code/ConstString.java +++ b/src/main/java/com/android/tools/r8/ir/code/ConstString.java
@@ -9,6 +9,7 @@ import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.cf.code.CfConstString; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexConstString; import com.android.tools.r8.graph.AppInfoWithClassHierarchy; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexString; @@ -69,7 +70,7 @@ @Override public void buildDex(DexBuilder builder) { int dest = builder.allocatedRegister(dest(), getNumber()); - builder.add(this, new com.android.tools.r8.code.ConstString(dest, value)); + builder.add(this, new DexConstString(dest, value)); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/DexItemBasedConstString.java b/src/main/java/com/android/tools/r8/ir/code/DexItemBasedConstString.java index b7820c1..78a582b 100644 --- a/src/main/java/com/android/tools/r8/ir/code/DexItemBasedConstString.java +++ b/src/main/java/com/android/tools/r8/ir/code/DexItemBasedConstString.java
@@ -83,7 +83,7 @@ int dest = builder.allocatedRegister(outValue(), getNumber()); builder.add( this, - new com.android.tools.r8.code.DexItemBasedConstString(dest, item, nameComputationInfo)); + new com.android.tools.r8.dex.code.DexItemBasedConstString(dest, item, nameComputationInfo)); } @Override
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 45a743f..21031fb 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
@@ -4,16 +4,17 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfArithmeticBinop; -import com.android.tools.r8.code.DivDouble; -import com.android.tools.r8.code.DivDouble2Addr; -import com.android.tools.r8.code.DivFloat; -import com.android.tools.r8.code.DivFloat2Addr; -import com.android.tools.r8.code.DivInt; -import com.android.tools.r8.code.DivInt2Addr; -import com.android.tools.r8.code.DivIntLit16; -import com.android.tools.r8.code.DivIntLit8; -import com.android.tools.r8.code.DivLong; -import com.android.tools.r8.code.DivLong2Addr; +import com.android.tools.r8.dex.code.DexDivDouble; +import com.android.tools.r8.dex.code.DexDivDouble2Addr; +import com.android.tools.r8.dex.code.DexDivFloat; +import com.android.tools.r8.dex.code.DexDivFloat2Addr; +import com.android.tools.r8.dex.code.DexDivInt; +import com.android.tools.r8.dex.code.DexDivInt2Addr; +import com.android.tools.r8.dex.code.DexDivIntLit16; +import com.android.tools.r8.dex.code.DexDivIntLit8; +import com.android.tools.r8.dex.code.DexDivLong; +import com.android.tools.r8.dex.code.DexDivLong2Addr; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.ir.analysis.constant.Bottom; import com.android.tools.r8.ir.analysis.constant.LatticeElement; import java.util.function.Function; @@ -50,53 +51,53 @@ } @Override - public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { - return new DivInt(dest, left, right); + public DexInstruction CreateInt(int dest, int left, int right) { + return new DexDivInt(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { - return new DivLong(dest, left, right); + public DexInstruction CreateLong(int dest, int left, int right) { + return new DexDivLong(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateFloat(int dest, int left, int right) { - return new DivFloat(dest, left, right); + public DexInstruction CreateFloat(int dest, int left, int right) { + return new DexDivFloat(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateDouble(int dest, int left, int right) { - return new DivDouble(dest, left, right); + public DexInstruction CreateDouble(int dest, int left, int right) { + return new DexDivDouble(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { - return new DivInt2Addr(left, right); + public DexInstruction CreateInt2Addr(int left, int right) { + return new DexDivInt2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { - return new DivLong2Addr(left, right); + public DexInstruction CreateLong2Addr(int left, int right) { + return new DexDivLong2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateFloat2Addr(int left, int right) { - return new DivFloat2Addr(left, right); + public DexInstruction CreateFloat2Addr(int left, int right) { + return new DexDivFloat2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateDouble2Addr(int left, int right) { - return new DivDouble2Addr(left, right); + public DexInstruction CreateDouble2Addr(int left, int right) { + return new DexDivDouble2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { - return new DivIntLit8(dest, left, constant); + public DexInstruction CreateIntLit8(int dest, int left, int constant) { + return new DexDivIntLit8(dest, left, constant); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { - return new DivIntLit16(dest, left, constant); + public DexInstruction CreateIntLit16(int dest, int left, int constant) { + return new DexDivIntLit16(dest, left, constant); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/InitClass.java b/src/main/java/com/android/tools/r8/ir/code/InitClass.java index 80351a6..f331383 100644 --- a/src/main/java/com/android/tools/r8/ir/code/InitClass.java +++ b/src/main/java/com/android/tools/r8/ir/code/InitClass.java
@@ -6,8 +6,8 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.code.CfInitClass; -import com.android.tools.r8.code.DexInitClass; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexInitClass; import com.android.tools.r8.graph.AccessControl; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexClass;
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 0bc0830..b88555d 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
@@ -7,14 +7,15 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.cf.code.CfInstanceFieldRead; -import com.android.tools.r8.code.Iget; -import com.android.tools.r8.code.IgetBoolean; -import com.android.tools.r8.code.IgetByte; -import com.android.tools.r8.code.IgetChar; -import com.android.tools.r8.code.IgetObject; -import com.android.tools.r8.code.IgetShort; -import com.android.tools.r8.code.IgetWide; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexIget; +import com.android.tools.r8.dex.code.DexIgetBoolean; +import com.android.tools.r8.dex.code.DexIgetByte; +import com.android.tools.r8.dex.code.DexIgetChar; +import com.android.tools.r8.dex.code.DexIgetObject; +import com.android.tools.r8.dex.code.DexIgetShort; +import com.android.tools.r8.dex.code.DexIgetWide; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexField; @@ -79,31 +80,31 @@ public void buildDex(DexBuilder builder) { int destRegister = builder.allocatedRegister(dest(), getNumber()); int objectRegister = builder.allocatedRegister(object(), getNumber()); - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; DexField field = getField(); switch (getType()) { case INT: case FLOAT: - instruction = new Iget(destRegister, objectRegister, field); + instruction = new DexIget(destRegister, objectRegister, field); break; case LONG: case DOUBLE: - instruction = new IgetWide(destRegister, objectRegister, field); + instruction = new DexIgetWide(destRegister, objectRegister, field); break; case OBJECT: - instruction = new IgetObject(destRegister, objectRegister, field); + instruction = new DexIgetObject(destRegister, objectRegister, field); break; case BOOLEAN: - instruction = new IgetBoolean(destRegister, objectRegister, field); + instruction = new DexIgetBoolean(destRegister, objectRegister, field); break; case BYTE: - instruction = new IgetByte(destRegister, objectRegister, field); + instruction = new DexIgetByte(destRegister, objectRegister, field); break; case CHAR: - instruction = new IgetChar(destRegister, objectRegister, field); + instruction = new DexIgetChar(destRegister, objectRegister, field); break; case SHORT: - instruction = new IgetShort(destRegister, objectRegister, field); + instruction = new DexIgetShort(destRegister, objectRegister, field); break; default: throw new Unreachable("Unexpected type: " + getType());
diff --git a/src/main/java/com/android/tools/r8/ir/code/InstanceOf.java b/src/main/java/com/android/tools/r8/ir/code/InstanceOf.java index 123eb45..4af4442 100644 --- a/src/main/java/com/android/tools/r8/ir/code/InstanceOf.java +++ b/src/main/java/com/android/tools/r8/ir/code/InstanceOf.java
@@ -7,6 +7,7 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.code.CfInstanceOf; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexInstanceOf; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexType; import com.android.tools.r8.graph.ProgramMethod; @@ -52,7 +53,7 @@ public void buildDex(DexBuilder builder) { int dest = builder.allocatedRegister(dest(), getNumber()); int value = builder.allocatedRegister(value(), getNumber()); - builder.addInstanceOf(this, new com.android.tools.r8.code.InstanceOf(dest, value, type)); + builder.addInstanceOf(this, new DexInstanceOf(dest, value, type)); } @Override
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 68d7ffc..be3739e 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
@@ -6,14 +6,15 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.code.CfInstanceFieldWrite; -import com.android.tools.r8.code.Iput; -import com.android.tools.r8.code.IputBoolean; -import com.android.tools.r8.code.IputByte; -import com.android.tools.r8.code.IputChar; -import com.android.tools.r8.code.IputObject; -import com.android.tools.r8.code.IputShort; -import com.android.tools.r8.code.IputWide; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexIput; +import com.android.tools.r8.dex.code.DexIputBoolean; +import com.android.tools.r8.dex.code.DexIputByte; +import com.android.tools.r8.dex.code.DexIputChar; +import com.android.tools.r8.dex.code.DexIputObject; +import com.android.tools.r8.dex.code.DexIputShort; +import com.android.tools.r8.dex.code.DexIputWide; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexEncodedField; @@ -87,33 +88,33 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int valueRegister = builder.allocatedRegister(value(), getNumber()); int objectRegister = builder.allocatedRegister(object(), getNumber()); DexField field = getField(); switch (getType()) { case INT: case FLOAT: - instruction = new Iput(valueRegister, objectRegister, field); + instruction = new DexIput(valueRegister, objectRegister, field); break; case LONG: case DOUBLE: - instruction = new IputWide(valueRegister, objectRegister, field); + instruction = new DexIputWide(valueRegister, objectRegister, field); break; case OBJECT: - instruction = new IputObject(valueRegister, objectRegister, field); + instruction = new DexIputObject(valueRegister, objectRegister, field); break; case BOOLEAN: - instruction = new IputBoolean(valueRegister, objectRegister, field); + instruction = new DexIputBoolean(valueRegister, objectRegister, field); break; case BYTE: - instruction = new IputByte(valueRegister, objectRegister, field); + instruction = new DexIputByte(valueRegister, objectRegister, field); break; case CHAR: - instruction = new IputChar(valueRegister, objectRegister, field); + instruction = new DexIputChar(valueRegister, objectRegister, field); break; case SHORT: - instruction = new IputShort(valueRegister, objectRegister, field); + instruction = new DexIputShort(valueRegister, objectRegister, field); break; default: throw new Unreachable("Unexpected type: " + getType());
diff --git a/src/main/java/com/android/tools/r8/ir/code/IntSwitch.java b/src/main/java/com/android/tools/r8/ir/code/IntSwitch.java index 601f67f..9ccd91e 100644 --- a/src/main/java/com/android/tools/r8/ir/code/IntSwitch.java +++ b/src/main/java/com/android/tools/r8/ir/code/IntSwitch.java
@@ -8,12 +8,12 @@ import com.android.tools.r8.cf.code.CfLabel; import com.android.tools.r8.cf.code.CfSwitch; import com.android.tools.r8.cf.code.CfSwitch.Kind; -import com.android.tools.r8.code.Nop; -import com.android.tools.r8.code.PackedSwitch; -import com.android.tools.r8.code.PackedSwitchPayload; -import com.android.tools.r8.code.SparseSwitch; -import com.android.tools.r8.code.SparseSwitchPayload; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexNop; +import com.android.tools.r8.dex.code.DexPackedSwitch; +import com.android.tools.r8.dex.code.DexPackedSwitchPayload; +import com.android.tools.r8.dex.code.DexSparseSwitch; +import com.android.tools.r8.dex.code.DexSparseSwitchPayload; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.ir.conversion.CfBuilder; import com.android.tools.r8.ir.conversion.DexBuilder; @@ -202,9 +202,9 @@ public void buildDex(DexBuilder builder) { int value = builder.allocatedRegister(value(), getNumber()); if (emitPacked(InternalOutputMode.DexIndexed)) { - builder.addSwitch(this, new PackedSwitch(value)); + builder.addSwitch(this, new DexPackedSwitch(value)); } else { - builder.addSwitch(this, new SparseSwitch(value)); + builder.addSwitch(this, new DexSparseSwitch(value)); } } @@ -224,14 +224,14 @@ return result; } - public Nop buildPayload(int[] targets, int fallthroughTarget, InternalOutputMode mode) { + public DexNop buildPayload(int[] targets, int fallthroughTarget, InternalOutputMode mode) { assert keys.length == targets.length; assert mode.isGeneratingDex(); if (emitPacked(mode)) { int targetsCount = (int) numberOfTargetsIfPacked(keys); if (targets.length == targetsCount) { // All targets are already present. - return new PackedSwitchPayload(getFirstKey(), targets); + return new DexPackedSwitchPayload(getFirstKey(), targets); } else { // Generate the list of targets for all key values. Set the target for keys not present // to the fallthrough. @@ -247,11 +247,11 @@ } } assert originalIndex == keys.length; - return new PackedSwitchPayload(getFirstKey(), packedTargets); + return new DexPackedSwitchPayload(getFirstKey(), packedTargets); } } else { assert numberOfKeys() == keys.length; - return new SparseSwitchPayload(keys, targets); + return new DexSparseSwitchPayload(keys, targets); } }
diff --git a/src/main/java/com/android/tools/r8/ir/code/Invoke.java b/src/main/java/com/android/tools/r8/ir/code/Invoke.java index 9e6d8a6..786a73e 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Invoke.java +++ b/src/main/java/com/android/tools/r8/ir/code/Invoke.java
@@ -3,17 +3,26 @@ // BSD-style license that can be found in the LICENSE file. package com.android.tools.r8.ir.code; -import com.android.tools.r8.code.InvokeCustomRange; -import com.android.tools.r8.code.InvokeDirectRange; -import com.android.tools.r8.code.InvokeInterfaceRange; -import com.android.tools.r8.code.InvokePolymorphicRange; -import com.android.tools.r8.code.InvokeStaticRange; -import com.android.tools.r8.code.InvokeSuperRange; -import com.android.tools.r8.code.InvokeVirtualRange; -import com.android.tools.r8.code.MoveResult; -import com.android.tools.r8.code.MoveResultObject; -import com.android.tools.r8.code.MoveResultWide; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeCustom; +import com.android.tools.r8.dex.code.DexInvokeCustomRange; +import com.android.tools.r8.dex.code.DexInvokeDirect; +import com.android.tools.r8.dex.code.DexInvokeDirectRange; +import com.android.tools.r8.dex.code.DexInvokeInterface; +import com.android.tools.r8.dex.code.DexInvokeInterfaceRange; +import com.android.tools.r8.dex.code.DexInvokePolymorphic; +import com.android.tools.r8.dex.code.DexInvokePolymorphicRange; +import com.android.tools.r8.dex.code.DexInvokeStatic; +import com.android.tools.r8.dex.code.DexInvokeStaticRange; +import com.android.tools.r8.dex.code.DexInvokeSuper; +import com.android.tools.r8.dex.code.DexInvokeSuperRange; +import com.android.tools.r8.dex.code.DexInvokeVirtual; +import com.android.tools.r8.dex.code.DexInvokeVirtualRange; +import com.android.tools.r8.dex.code.DexMoveResult; +import com.android.tools.r8.dex.code.DexMoveResultObject; +import com.android.tools.r8.dex.code.DexMoveResultWide; +import com.android.tools.r8.dex.code.DexNewArray; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexClassAndMethod; @@ -39,15 +48,15 @@ private static final int NO_SUCH_DEX_INSTRUCTION = -1; public enum Type { - DIRECT(com.android.tools.r8.code.InvokeDirect.OPCODE, InvokeDirectRange.OPCODE), - INTERFACE(com.android.tools.r8.code.InvokeInterface.OPCODE, InvokeInterfaceRange.OPCODE), - STATIC(com.android.tools.r8.code.InvokeStatic.OPCODE, InvokeStaticRange.OPCODE), - SUPER(com.android.tools.r8.code.InvokeSuper.OPCODE, InvokeSuperRange.OPCODE), - VIRTUAL(com.android.tools.r8.code.InvokeVirtual.OPCODE, InvokeVirtualRange.OPCODE), - NEW_ARRAY(com.android.tools.r8.code.NewArray.OPCODE, NO_SUCH_DEX_INSTRUCTION), + DIRECT(DexInvokeDirect.OPCODE, DexInvokeDirectRange.OPCODE), + INTERFACE(DexInvokeInterface.OPCODE, DexInvokeInterfaceRange.OPCODE), + STATIC(DexInvokeStatic.OPCODE, DexInvokeStaticRange.OPCODE), + SUPER(DexInvokeSuper.OPCODE, DexInvokeSuperRange.OPCODE), + VIRTUAL(DexInvokeVirtual.OPCODE, DexInvokeVirtualRange.OPCODE), + NEW_ARRAY(DexNewArray.OPCODE, NO_SUCH_DEX_INSTRUCTION), MULTI_NEW_ARRAY(NO_SUCH_DEX_INSTRUCTION, NO_SUCH_DEX_INSTRUCTION), - CUSTOM(com.android.tools.r8.code.InvokeCustom.OPCODE, InvokeCustomRange.OPCODE), - POLYMORPHIC(com.android.tools.r8.code.InvokePolymorphic.OPCODE, InvokePolymorphicRange.OPCODE); + CUSTOM(DexInvokeCustom.OPCODE, DexInvokeCustomRange.OPCODE), + POLYMORPHIC(DexInvokePolymorphic.OPCODE, DexInvokePolymorphicRange.OPCODE); private final int dexOpcode; private final int dexOpcodeRange; @@ -346,18 +355,17 @@ return true; } - protected void addInvokeAndMoveResult( - com.android.tools.r8.code.Instruction instruction, DexBuilder builder) { + protected void addInvokeAndMoveResult(DexInstruction instruction, DexBuilder builder) { if (outValue != null && outValue.needsRegister()) { TypeElement moveType = outValue.getType(); int register = builder.allocatedRegister(outValue, getNumber()); - com.android.tools.r8.code.Instruction moveResult; + DexInstruction moveResult; if (moveType.isSinglePrimitive()) { - moveResult = new MoveResult(register); + moveResult = new DexMoveResult(register); } else if (moveType.isWidePrimitive()) { - moveResult = new MoveResultWide(register); + moveResult = new DexMoveResultWide(register); } else if (moveType.isReferenceType()) { - moveResult = new MoveResultObject(register); + moveResult = new DexMoveResultObject(register); } else { throw new Unreachable("Unexpected result type " + outType()); }
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 1296742..e43b0f0 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
@@ -6,7 +6,9 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.cf.code.CfInvokeDynamic; -import com.android.tools.r8.code.InvokeCustomRange; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeCustom; +import com.android.tools.r8.dex.code.DexInvokeCustomRange; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexCallSite; import com.android.tools.r8.graph.DexType; @@ -123,24 +125,25 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int argumentRegisters = requiredArgumentRegisters(); builder.requestOutgoingRegisters(argumentRegisters); if (needsRangedInvoke(builder)) { assert argumentsConsecutive(builder); int firstRegister = argumentRegisterValue(0, builder); - instruction = new InvokeCustomRange(firstRegister, argumentRegisters, getCallSite()); + instruction = new DexInvokeCustomRange(firstRegister, argumentRegisters, getCallSite()); } else { int[] individualArgumentRegisters = new int[5]; int argumentRegistersCount = fillArgumentRegisters(builder, individualArgumentRegisters); - instruction = new com.android.tools.r8.code.InvokeCustom( - argumentRegistersCount, - getCallSite(), - individualArgumentRegisters[0], // C - individualArgumentRegisters[1], // D - individualArgumentRegisters[2], // E - individualArgumentRegisters[3], // F - individualArgumentRegisters[4]); // G + instruction = + new DexInvokeCustom( + argumentRegistersCount, + getCallSite(), + individualArgumentRegisters[0], // C + individualArgumentRegisters[1], // D + individualArgumentRegisters[2], // E + individualArgumentRegisters[3], // F + individualArgumentRegisters[4]); // G } addInvokeAndMoveResult(instruction, builder); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/InvokeDirect.java b/src/main/java/com/android/tools/r8/ir/code/InvokeDirect.java index f57b79f..ff70fed 100644 --- a/src/main/java/com/android/tools/r8/ir/code/InvokeDirect.java +++ b/src/main/java/com/android/tools/r8/ir/code/InvokeDirect.java
@@ -6,8 +6,10 @@ import static com.android.tools.r8.graph.DexEncodedMethod.asDexClassAndMethodOrNull; import com.android.tools.r8.cf.code.CfInvoke; -import com.android.tools.r8.code.InvokeDirectRange; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeDirect; +import com.android.tools.r8.dex.code.DexInvokeDirectRange; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexClassAndMethod; import com.android.tools.r8.graph.DexEncodedMethod; @@ -76,24 +78,25 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int argumentRegisters = requiredArgumentRegisters(); builder.requestOutgoingRegisters(argumentRegisters); if (needsRangedInvoke(builder)) { assert argumentsConsecutive(builder); int firstRegister = argumentRegisterValue(0, builder); - instruction = new InvokeDirectRange(firstRegister, argumentRegisters, getInvokedMethod()); + instruction = new DexInvokeDirectRange(firstRegister, argumentRegisters, getInvokedMethod()); } else { int[] individualArgumentRegisters = new int[5]; int argumentRegistersCount = fillArgumentRegisters(builder, individualArgumentRegisters); - instruction = new com.android.tools.r8.code.InvokeDirect( - argumentRegistersCount, - getInvokedMethod(), - individualArgumentRegisters[0], // C - individualArgumentRegisters[1], // D - individualArgumentRegisters[2], // E - individualArgumentRegisters[3], // F - individualArgumentRegisters[4]); // G + instruction = + new DexInvokeDirect( + argumentRegistersCount, + getInvokedMethod(), + individualArgumentRegisters[0], // C + individualArgumentRegisters[1], // D + individualArgumentRegisters[2], // E + individualArgumentRegisters[3], // F + individualArgumentRegisters[4]); // G } addInvokeAndMoveResult(instruction, builder); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/InvokeInterface.java b/src/main/java/com/android/tools/r8/ir/code/InvokeInterface.java index 6749695..67e78d6 100644 --- a/src/main/java/com/android/tools/r8/ir/code/InvokeInterface.java +++ b/src/main/java/com/android/tools/r8/ir/code/InvokeInterface.java
@@ -6,7 +6,9 @@ import static com.android.tools.r8.graph.DexEncodedMethod.asDexClassAndMethodOrNull; import com.android.tools.r8.cf.code.CfInvoke; -import com.android.tools.r8.code.InvokeInterfaceRange; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeInterface; +import com.android.tools.r8.dex.code.DexInvokeInterfaceRange; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexClassAndMethod; import com.android.tools.r8.graph.DexEncodedMethod; @@ -57,24 +59,26 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int argumentRegisters = requiredArgumentRegisters(); builder.requestOutgoingRegisters(argumentRegisters); if (needsRangedInvoke(builder)) { assert argumentsConsecutive(builder); int firstRegister = argumentRegisterValue(0, builder); - instruction = new InvokeInterfaceRange(firstRegister, argumentRegisters, getInvokedMethod()); + instruction = + new DexInvokeInterfaceRange(firstRegister, argumentRegisters, getInvokedMethod()); } else { int[] individualArgumentRegisters = new int[5]; int argumentRegistersCount = fillArgumentRegisters(builder, individualArgumentRegisters); - instruction = new com.android.tools.r8.code.InvokeInterface( - argumentRegistersCount, - getInvokedMethod(), - individualArgumentRegisters[0], // C - individualArgumentRegisters[1], // D - individualArgumentRegisters[2], // E - individualArgumentRegisters[3], // F - individualArgumentRegisters[4]); // G + instruction = + new DexInvokeInterface( + argumentRegistersCount, + getInvokedMethod(), + individualArgumentRegisters[0], // C + individualArgumentRegisters[1], // D + individualArgumentRegisters[2], // E + individualArgumentRegisters[3], // F + individualArgumentRegisters[4]); // G } addInvokeAndMoveResult(instruction, builder); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/InvokeNewArray.java b/src/main/java/com/android/tools/r8/ir/code/InvokeNewArray.java index 1b356e3..9bc1728 100644 --- a/src/main/java/com/android/tools/r8/ir/code/InvokeNewArray.java +++ b/src/main/java/com/android/tools/r8/ir/code/InvokeNewArray.java
@@ -5,8 +5,9 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.TypeVerificationHelper; -import com.android.tools.r8.code.FilledNewArray; -import com.android.tools.r8.code.FilledNewArrayRange; +import com.android.tools.r8.dex.code.DexFilledNewArray; +import com.android.tools.r8.dex.code.DexFilledNewArrayRange; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AccessControl; import com.android.tools.r8.graph.AppInfoWithClassHierarchy; @@ -70,24 +71,25 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int argumentRegisters = requiredArgumentRegisters(); builder.requestOutgoingRegisters(argumentRegisters); if (needsRangedInvoke(builder)) { assert argumentsConsecutive(builder); int firstRegister = argumentRegisterValue(0, builder); - instruction = new FilledNewArrayRange(firstRegister, argumentRegisters, type); + instruction = new DexFilledNewArrayRange(firstRegister, argumentRegisters, type); } else { int[] individualArgumentRegisters = new int[5]; int argumentRegistersCount = fillArgumentRegisters(builder, individualArgumentRegisters); - instruction = new FilledNewArray( - argumentRegistersCount, - type, - individualArgumentRegisters[0], // C - individualArgumentRegisters[1], // D - individualArgumentRegisters[2], // E - individualArgumentRegisters[3], // F - individualArgumentRegisters[4]); // G + instruction = + new DexFilledNewArray( + argumentRegistersCount, + type, + individualArgumentRegisters[0], // C + individualArgumentRegisters[1], // D + individualArgumentRegisters[2], // E + individualArgumentRegisters[3], // F + individualArgumentRegisters[4]); // G } addInvokeAndMoveResult(instruction, builder); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/InvokePolymorphic.java b/src/main/java/com/android/tools/r8/ir/code/InvokePolymorphic.java index ad8c087..c09c441 100644 --- a/src/main/java/com/android/tools/r8/ir/code/InvokePolymorphic.java +++ b/src/main/java/com/android/tools/r8/ir/code/InvokePolymorphic.java
@@ -4,7 +4,9 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfInvoke; -import com.android.tools.r8.code.InvokePolymorphicRange; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokePolymorphic; +import com.android.tools.r8.dex.code.DexInvokePolymorphicRange; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexClassAndMethod; @@ -71,18 +73,20 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int argumentRegisters = requiredArgumentRegisters(); builder.requestOutgoingRegisters(argumentRegisters); if (needsRangedInvoke(builder)) { assert argumentsConsecutive(builder); int firstRegister = argumentRegisterValue(0, builder); - instruction = new InvokePolymorphicRange( + instruction = + new DexInvokePolymorphicRange( firstRegister, argumentRegisters, getInvokedMethod(), getProto()); } else { int[] individualArgumentRegisters = new int[5]; int argumentRegistersCount = fillArgumentRegisters(builder, individualArgumentRegisters); - instruction = new com.android.tools.r8.code.InvokePolymorphic( + instruction = + new DexInvokePolymorphic( argumentRegistersCount, getInvokedMethod(), getProto(),
diff --git a/src/main/java/com/android/tools/r8/ir/code/InvokeStatic.java b/src/main/java/com/android/tools/r8/ir/code/InvokeStatic.java index b405dbb..8f47b31 100644 --- a/src/main/java/com/android/tools/r8/ir/code/InvokeStatic.java +++ b/src/main/java/com/android/tools/r8/ir/code/InvokeStatic.java
@@ -6,7 +6,9 @@ import static com.android.tools.r8.graph.DexEncodedMethod.asDexClassAndMethodOrNull; import com.android.tools.r8.cf.code.CfInvoke; -import com.android.tools.r8.code.InvokeStaticRange; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeStatic; +import com.android.tools.r8.dex.code.DexInvokeStaticRange; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexClass; import com.android.tools.r8.graph.DexClassAndMethod; @@ -74,24 +76,25 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int argumentRegisters = requiredArgumentRegisters(); builder.requestOutgoingRegisters(argumentRegisters); if (needsRangedInvoke(builder)) { assert argumentsConsecutive(builder); int firstRegister = argumentRegisterValue(0, builder); - instruction = new InvokeStaticRange(firstRegister, argumentRegisters, getInvokedMethod()); + instruction = new DexInvokeStaticRange(firstRegister, argumentRegisters, getInvokedMethod()); } else { int[] individualArgumentRegisters = new int[5]; int argumentRegistersCount = fillArgumentRegisters(builder, individualArgumentRegisters); - instruction = new com.android.tools.r8.code.InvokeStatic( - argumentRegistersCount, - getInvokedMethod(), - individualArgumentRegisters[0], // C - individualArgumentRegisters[1], // D - individualArgumentRegisters[2], // E - individualArgumentRegisters[3], // F - individualArgumentRegisters[4]); // G + instruction = + new DexInvokeStatic( + argumentRegistersCount, + getInvokedMethod(), + individualArgumentRegisters[0], // C + individualArgumentRegisters[1], // D + individualArgumentRegisters[2], // E + individualArgumentRegisters[3], // F + individualArgumentRegisters[4]); // G } addInvokeAndMoveResult(instruction, builder); }
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 d41559e..705c7f9 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
@@ -5,7 +5,9 @@ import com.android.tools.r8.cf.code.CfInvoke; -import com.android.tools.r8.code.InvokeSuperRange; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeSuper; +import com.android.tools.r8.dex.code.DexInvokeSuperRange; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexClassAndMethod; import com.android.tools.r8.graph.DexMethod; @@ -58,24 +60,25 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int argumentRegisters = requiredArgumentRegisters(); builder.requestOutgoingRegisters(argumentRegisters); if (needsRangedInvoke(builder)) { assert argumentsConsecutive(builder); int firstRegister = argumentRegisterValue(0, builder); - instruction = new InvokeSuperRange(firstRegister, argumentRegisters, getInvokedMethod()); + instruction = new DexInvokeSuperRange(firstRegister, argumentRegisters, getInvokedMethod()); } else { int[] individualArgumentRegisters = new int[5]; int argumentRegistersCount = fillArgumentRegisters(builder, individualArgumentRegisters); - instruction = new com.android.tools.r8.code.InvokeSuper( - argumentRegistersCount, - getInvokedMethod(), - individualArgumentRegisters[0], // C - individualArgumentRegisters[1], // D - individualArgumentRegisters[2], // E - individualArgumentRegisters[3], // F - individualArgumentRegisters[4]); // G + instruction = + new DexInvokeSuper( + argumentRegistersCount, + getInvokedMethod(), + individualArgumentRegisters[0], // C + individualArgumentRegisters[1], // D + individualArgumentRegisters[2], // E + individualArgumentRegisters[3], // F + individualArgumentRegisters[4]); // G } addInvokeAndMoveResult(instruction, builder); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/InvokeVirtual.java b/src/main/java/com/android/tools/r8/ir/code/InvokeVirtual.java index d0bca6a..fed5f58 100644 --- a/src/main/java/com/android/tools/r8/ir/code/InvokeVirtual.java +++ b/src/main/java/com/android/tools/r8/ir/code/InvokeVirtual.java
@@ -6,7 +6,9 @@ import static com.android.tools.r8.graph.DexEncodedMethod.asDexClassAndMethodOrNull; import com.android.tools.r8.cf.code.CfInvoke; -import com.android.tools.r8.code.InvokeVirtualRange; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeVirtual; +import com.android.tools.r8.dex.code.DexInvokeVirtualRange; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexClass; import com.android.tools.r8.graph.DexClassAndMethod; @@ -62,24 +64,25 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int argumentRegisters = requiredArgumentRegisters(); builder.requestOutgoingRegisters(argumentRegisters); if (needsRangedInvoke(builder)) { assert argumentsConsecutive(builder); int firstRegister = argumentRegisterValue(0, builder); - instruction = new InvokeVirtualRange(firstRegister, argumentRegisters, getInvokedMethod()); + instruction = new DexInvokeVirtualRange(firstRegister, argumentRegisters, getInvokedMethod()); } else { int[] individualArgumentRegisters = new int[5]; int argumentRegistersCount = fillArgumentRegisters(builder, individualArgumentRegisters); - instruction = new com.android.tools.r8.code.InvokeVirtual( - argumentRegistersCount, - getInvokedMethod(), - individualArgumentRegisters[0], // C - individualArgumentRegisters[1], // D - individualArgumentRegisters[2], // E - individualArgumentRegisters[3], // F - individualArgumentRegisters[4]); // G + instruction = + new DexInvokeVirtual( + argumentRegistersCount, + getInvokedMethod(), + individualArgumentRegisters[0], // C + individualArgumentRegisters[1], // D + individualArgumentRegisters[2], // E + individualArgumentRegisters[3], // F + individualArgumentRegisters[4]); // G } addInvokeAndMoveResult(instruction, builder); }
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 b647ecf..c9a1b03 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
@@ -4,7 +4,7 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfLogicalBinop; -import com.android.tools.r8.code.Instruction; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.ir.analysis.constant.Bottom; import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement; @@ -20,17 +20,17 @@ super(type, dest, left, right); } - public abstract com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right); + public abstract DexInstruction CreateInt(int dest, int left, int right); - public abstract Instruction CreateLong(int dest, int left, int right); + public abstract DexInstruction CreateLong(int dest, int left, int right); - public abstract Instruction CreateInt2Addr(int left, int right); + public abstract DexInstruction CreateInt2Addr(int left, int right); - public abstract Instruction CreateLong2Addr(int left, int right); + public abstract DexInstruction CreateLong2Addr(int left, int right); - public abstract Instruction CreateIntLit8(int dest, int left, int constant); + public abstract DexInstruction CreateIntLit8(int dest, int left, int constant); - public abstract Instruction CreateIntLit16(int dest, int left, int constant); + public abstract DexInstruction CreateIntLit16(int dest, int left, int constant); @Override public boolean canBeFolded() { @@ -54,7 +54,7 @@ // that will change. int left = builder.allocatedRegister(leftValue(), getNumber()); int dest = builder.allocatedRegister(outValue, getNumber()); - Instruction instruction; + DexInstruction instruction; if (isTwoAddr(builder.getRegisterAllocator())) { int right = builder.allocatedRegister(rightValue(), getNumber()); if (left != dest) {
diff --git a/src/main/java/com/android/tools/r8/ir/code/Monitor.java b/src/main/java/com/android/tools/r8/ir/code/Monitor.java index 648c9fd..1e00e9b 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Monitor.java +++ b/src/main/java/com/android/tools/r8/ir/code/Monitor.java
@@ -8,8 +8,8 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.code.CfMonitor; -import com.android.tools.r8.code.MonitorEnter; -import com.android.tools.r8.code.MonitorExit; +import com.android.tools.r8.dex.code.DexMonitorEnter; +import com.android.tools.r8.dex.code.DexMonitorExit; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.ProgramMethod; @@ -65,9 +65,9 @@ object = builder.allocatedRegister(object(), getNumber()); } if (type == Type.ENTER) { - builder.add(this, new MonitorEnter(object)); + builder.add(this, new DexMonitorEnter(object)); } else { - builder.add(this, new MonitorExit(object)); + builder.add(this, new DexMonitorExit(object)); } }
diff --git a/src/main/java/com/android/tools/r8/ir/code/MoveException.java b/src/main/java/com/android/tools/r8/ir/code/MoveException.java index efec2dd..616882a 100644 --- a/src/main/java/com/android/tools/r8/ir/code/MoveException.java +++ b/src/main/java/com/android/tools/r8/ir/code/MoveException.java
@@ -6,6 +6,7 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexMoveException; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexType; import com.android.tools.r8.graph.ProgramMethod; @@ -45,7 +46,7 @@ @Override public void buildDex(DexBuilder builder) { int dest = builder.allocatedRegister(dest(), getNumber()); - builder.add(this, new com.android.tools.r8.code.MoveException(dest)); + builder.add(this, new DexMoveException(dest)); } @Override
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 dcc8e1b..ccddf6a 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
@@ -5,16 +5,17 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfArithmeticBinop; -import com.android.tools.r8.code.MulDouble; -import com.android.tools.r8.code.MulDouble2Addr; -import com.android.tools.r8.code.MulFloat; -import com.android.tools.r8.code.MulFloat2Addr; -import com.android.tools.r8.code.MulInt; -import com.android.tools.r8.code.MulInt2Addr; -import com.android.tools.r8.code.MulIntLit16; -import com.android.tools.r8.code.MulIntLit8; -import com.android.tools.r8.code.MulLong; -import com.android.tools.r8.code.MulLong2Addr; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexMulDouble; +import com.android.tools.r8.dex.code.DexMulDouble2Addr; +import com.android.tools.r8.dex.code.DexMulFloat; +import com.android.tools.r8.dex.code.DexMulFloat2Addr; +import com.android.tools.r8.dex.code.DexMulInt; +import com.android.tools.r8.dex.code.DexMulInt2Addr; +import com.android.tools.r8.dex.code.DexMulIntLit16; +import com.android.tools.r8.dex.code.DexMulIntLit8; +import com.android.tools.r8.dex.code.DexMulLong; +import com.android.tools.r8.dex.code.DexMulLong2Addr; public class Mul extends ArithmeticBinop { @@ -38,65 +39,67 @@ } @Override - public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { + public DexInstruction 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 // M. - return dest == right ? new MulInt(dest, right, left) : new MulInt(dest, left, right); + return dest == right ? new DexMulInt(dest, right, left) : new DexMulInt(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { + public DexInstruction 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 // M. - return dest == right ? new MulLong(dest, right, left) : new MulLong(dest, left, right); + return dest == right ? new DexMulLong(dest, right, left) : new DexMulLong(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateFloat(int dest, int left, int right) { + public DexInstruction 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 // M. - return dest == right ? new MulFloat(dest, right, left) : new MulFloat(dest, left, right); + return dest == right ? new DexMulFloat(dest, right, left) : new DexMulFloat(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateDouble(int dest, int left, int right) { + public DexInstruction 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 // M. - return dest == right ? new MulDouble(dest, right, left) : new MulDouble(dest, left, right); + return dest == right + ? new DexMulDouble(dest, right, left) + : new DexMulDouble(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { - return new MulInt2Addr(left, right); + public DexInstruction CreateInt2Addr(int left, int right) { + return new DexMulInt2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { - return new MulLong2Addr(left, right); + public DexInstruction CreateLong2Addr(int left, int right) { + return new DexMulLong2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateFloat2Addr(int left, int right) { - return new MulFloat2Addr(left, right); + public DexInstruction CreateFloat2Addr(int left, int right) { + return new DexMulFloat2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateDouble2Addr(int left, int right) { - return new MulDouble2Addr(left, right); + public DexInstruction CreateDouble2Addr(int left, int right) { + return new DexMulDouble2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { - return new MulIntLit8(dest, left, constant); + public DexInstruction CreateIntLit8(int dest, int left, int constant) { + return new DexMulIntLit8(dest, left, constant); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { - return new MulIntLit16(dest, left, constant); + public DexInstruction CreateIntLit16(int dest, int left, int constant) { + return new DexMulIntLit16(dest, left, constant); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/Neg.java b/src/main/java/com/android/tools/r8/ir/code/Neg.java index 459c8c5..dde52df 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Neg.java +++ b/src/main/java/com/android/tools/r8/ir/code/Neg.java
@@ -4,10 +4,11 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfNeg; -import com.android.tools.r8.code.NegDouble; -import com.android.tools.r8.code.NegFloat; -import com.android.tools.r8.code.NegInt; -import com.android.tools.r8.code.NegLong; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexNegDouble; +import com.android.tools.r8.dex.code.DexNegFloat; +import com.android.tools.r8.dex.code.DexNegInt; +import com.android.tools.r8.dex.code.DexNegLong; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.ir.analysis.constant.Bottom; import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement; @@ -51,21 +52,21 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int dest = builder.allocatedRegister(dest(), getNumber()); int src = builder.allocatedRegister(source(), getNumber()); switch (type) { case INT: - instruction = new NegInt(dest, src); + instruction = new DexNegInt(dest, src); break; case LONG: - instruction = new NegLong(dest, src); + instruction = new DexNegLong(dest, src); break; case FLOAT: - instruction = new NegFloat(dest, src); + instruction = new DexNegFloat(dest, src); break; case DOUBLE: - instruction = new NegDouble(dest, src); + instruction = new DexNegDouble(dest, src); break; default: throw new Unreachable("Unexpected type " + type);
diff --git a/src/main/java/com/android/tools/r8/ir/code/NewArrayEmpty.java b/src/main/java/com/android/tools/r8/ir/code/NewArrayEmpty.java index 500766c..88bd18d 100644 --- a/src/main/java/com/android/tools/r8/ir/code/NewArrayEmpty.java +++ b/src/main/java/com/android/tools/r8/ir/code/NewArrayEmpty.java
@@ -6,8 +6,8 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.cf.code.CfNewArray; -import com.android.tools.r8.code.NewArray; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexNewArray; import com.android.tools.r8.graph.AppInfoWithClassHierarchy; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexType; @@ -59,7 +59,7 @@ public void buildDex(DexBuilder builder) { int size = builder.allocatedRegister(size(), getNumber()); int dest = builder.allocatedRegister(dest(), getNumber()); - builder.add(this, new NewArray(dest, size, type)); + builder.add(this, new DexNewArray(dest, size, type)); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/NewArrayFilledData.java b/src/main/java/com/android/tools/r8/ir/code/NewArrayFilledData.java index 260689f..15f7224 100644 --- a/src/main/java/com/android/tools/r8/ir/code/NewArrayFilledData.java +++ b/src/main/java/com/android/tools/r8/ir/code/NewArrayFilledData.java
@@ -4,9 +4,9 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.LoadStoreHelper; -import com.android.tools.r8.code.FillArrayData; -import com.android.tools.r8.code.FillArrayDataPayload; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexFillArrayData; +import com.android.tools.r8.dex.code.DexFillArrayDataPayload; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppInfoWithClassHierarchy; import com.android.tools.r8.graph.AppView; @@ -50,14 +50,14 @@ return inValues.get(0); } - public FillArrayDataPayload createPayload() { - return new FillArrayDataPayload(element_width, size, data); + public DexFillArrayDataPayload createPayload() { + return new DexFillArrayDataPayload(element_width, size, data); } @Override public void buildDex(DexBuilder builder) { int src = builder.allocatedRegister(src(), getNumber()); - builder.addFillArrayData(this, new FillArrayData(src)); + builder.addFillArrayData(this, new DexFillArrayData(src)); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/NewInstance.java b/src/main/java/com/android/tools/r8/ir/code/NewInstance.java index 85bae5c..d6c938d 100644 --- a/src/main/java/com/android/tools/r8/ir/code/NewInstance.java +++ b/src/main/java/com/android/tools/r8/ir/code/NewInstance.java
@@ -7,6 +7,7 @@ import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.cf.code.CfNew; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexNewInstance; import com.android.tools.r8.graph.AccessControl; import com.android.tools.r8.graph.AppInfoWithClassHierarchy; import com.android.tools.r8.graph.AppView; @@ -68,7 +69,7 @@ @Override public void buildDex(DexBuilder builder) { int dest = builder.allocatedRegister(dest(), getNumber()); - builder.add(this, new com.android.tools.r8.code.NewInstance(dest, clazz)); + builder.add(this, new DexNewInstance(dest, clazz)); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/NewUnboxedEnumInstance.java b/src/main/java/com/android/tools/r8/ir/code/NewUnboxedEnumInstance.java index b56600f..2274754 100644 --- a/src/main/java/com/android/tools/r8/ir/code/NewUnboxedEnumInstance.java +++ b/src/main/java/com/android/tools/r8/ir/code/NewUnboxedEnumInstance.java
@@ -6,8 +6,8 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.cf.code.CfNewUnboxedEnum; -import com.android.tools.r8.code.DexNewUnboxedEnumInstance; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexNewUnboxedEnumInstance; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexType; import com.android.tools.r8.graph.ProgramMethod;
diff --git a/src/main/java/com/android/tools/r8/ir/code/Not.java b/src/main/java/com/android/tools/r8/ir/code/Not.java index d000623..097ae22 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Not.java +++ b/src/main/java/com/android/tools/r8/ir/code/Not.java
@@ -4,8 +4,9 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.LoadStoreHelper; -import com.android.tools.r8.code.NotInt; -import com.android.tools.r8.code.NotLong; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexNotInt; +import com.android.tools.r8.dex.code.DexNotLong; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.ir.analysis.constant.Bottom; import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement; @@ -62,15 +63,15 @@ @Override public void buildDex(DexBuilder builder) { assert builder.getOptions().canUseNotInstruction(); - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int dest = builder.allocatedRegister(dest(), getNumber()); int src = builder.allocatedRegister(source(), getNumber()); switch (type) { case INT: - instruction = new NotInt(dest, src); + instruction = new DexNotInt(dest, src); break; case LONG: - instruction = new NotLong(dest, src); + instruction = new DexNotLong(dest, src); break; default: throw new Unreachable("Unexpected type " + type);
diff --git a/src/main/java/com/android/tools/r8/ir/code/NumberConversion.java b/src/main/java/com/android/tools/r8/ir/code/NumberConversion.java index 5f3b592..55ed123 100644 --- a/src/main/java/com/android/tools/r8/ir/code/NumberConversion.java +++ b/src/main/java/com/android/tools/r8/ir/code/NumberConversion.java
@@ -4,21 +4,22 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfNumberConversion; -import com.android.tools.r8.code.DoubleToFloat; -import com.android.tools.r8.code.DoubleToInt; -import com.android.tools.r8.code.DoubleToLong; -import com.android.tools.r8.code.FloatToDouble; -import com.android.tools.r8.code.FloatToInt; -import com.android.tools.r8.code.FloatToLong; -import com.android.tools.r8.code.IntToByte; -import com.android.tools.r8.code.IntToChar; -import com.android.tools.r8.code.IntToDouble; -import com.android.tools.r8.code.IntToFloat; -import com.android.tools.r8.code.IntToLong; -import com.android.tools.r8.code.IntToShort; -import com.android.tools.r8.code.LongToDouble; -import com.android.tools.r8.code.LongToFloat; -import com.android.tools.r8.code.LongToInt; +import com.android.tools.r8.dex.code.DexDoubleToFloat; +import com.android.tools.r8.dex.code.DexDoubleToInt; +import com.android.tools.r8.dex.code.DexDoubleToLong; +import com.android.tools.r8.dex.code.DexFloatToDouble; +import com.android.tools.r8.dex.code.DexFloatToInt; +import com.android.tools.r8.dex.code.DexFloatToLong; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexIntToByte; +import com.android.tools.r8.dex.code.DexIntToChar; +import com.android.tools.r8.dex.code.DexIntToDouble; +import com.android.tools.r8.dex.code.DexIntToFloat; +import com.android.tools.r8.dex.code.DexIntToLong; +import com.android.tools.r8.dex.code.DexIntToShort; +import com.android.tools.r8.dex.code.DexLongToDouble; +import com.android.tools.r8.dex.code.DexLongToFloat; +import com.android.tools.r8.dex.code.DexLongToInt; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.ir.analysis.type.PrimitiveTypeElement; @@ -54,29 +55,29 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int dest = builder.allocatedRegister(dest(), getNumber()); int src = builder.allocatedRegister(source(), getNumber()); switch (from) { case INT: switch (to) { case BYTE: - instruction = new IntToByte(dest, src); + instruction = new DexIntToByte(dest, src); break; case CHAR: - instruction = new IntToChar(dest, src); + instruction = new DexIntToChar(dest, src); break; case SHORT: - instruction = new IntToShort(dest, src); + instruction = new DexIntToShort(dest, src); break; case LONG: - instruction = new IntToLong(dest, src); + instruction = new DexIntToLong(dest, src); break; case FLOAT: - instruction = new IntToFloat(dest, src); + instruction = new DexIntToFloat(dest, src); break; case DOUBLE: - instruction = new IntToDouble(dest, src); + instruction = new DexIntToDouble(dest, src); break; default: throw new Unreachable("Unexpected types " + from + ", " + to); @@ -85,13 +86,13 @@ case LONG: switch (to) { case INT: - instruction = new LongToInt(dest, src); + instruction = new DexLongToInt(dest, src); break; case FLOAT: - instruction = new LongToFloat(dest, src); + instruction = new DexLongToFloat(dest, src); break; case DOUBLE: - instruction = new LongToDouble(dest, src); + instruction = new DexLongToDouble(dest, src); break; default: throw new Unreachable("Unexpected types " + from + ", " + to); @@ -100,13 +101,13 @@ case FLOAT: switch (to) { case INT: - instruction = new FloatToInt(dest, src); + instruction = new DexFloatToInt(dest, src); break; case LONG: - instruction = new FloatToLong(dest, src); + instruction = new DexFloatToLong(dest, src); break; case DOUBLE: - instruction = new FloatToDouble(dest, src); + instruction = new DexFloatToDouble(dest, src); break; default: throw new Unreachable("Unexpected types " + from + ", " + to); @@ -115,13 +116,13 @@ case DOUBLE: switch (to) { case INT: - instruction = new DoubleToInt(dest, src); + instruction = new DexDoubleToInt(dest, src); break; case LONG: - instruction = new DoubleToLong(dest, src); + instruction = new DexDoubleToLong(dest, src); break; case FLOAT: - instruction = new DoubleToFloat(dest, src); + instruction = new DexDoubleToFloat(dest, src); break; default: throw new Unreachable("Unexpected types " + from + ", " + to);
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 a17cb7f..3fd1a77 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
@@ -4,12 +4,13 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfLogicalBinop; -import com.android.tools.r8.code.OrInt; -import com.android.tools.r8.code.OrInt2Addr; -import com.android.tools.r8.code.OrIntLit16; -import com.android.tools.r8.code.OrIntLit8; -import com.android.tools.r8.code.OrLong; -import com.android.tools.r8.code.OrLong2Addr; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexOrInt; +import com.android.tools.r8.dex.code.DexOrInt2Addr; +import com.android.tools.r8.dex.code.DexOrIntLit16; +import com.android.tools.r8.dex.code.DexOrIntLit8; +import com.android.tools.r8.dex.code.DexOrLong; +import com.android.tools.r8.dex.code.DexOrLong2Addr; import java.util.Set; public class Or extends LogicalBinop { @@ -44,33 +45,33 @@ } @Override - public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { - return new OrInt(dest, left, right); + public DexInstruction CreateInt(int dest, int left, int right) { + return new DexOrInt(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { - return new OrLong(dest, left, right); + public DexInstruction CreateLong(int dest, int left, int right) { + return new DexOrLong(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { - return new OrInt2Addr(left, right); + public DexInstruction CreateInt2Addr(int left, int right) { + return new DexOrInt2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { - return new OrLong2Addr(left, right); + public DexInstruction CreateLong2Addr(int left, int right) { + return new DexOrLong2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { - return new OrIntLit8(dest, left, constant); + public DexInstruction CreateIntLit8(int dest, int left, int constant) { + return new DexOrIntLit8(dest, left, constant); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { - return new OrIntLit16(dest, left, constant); + public DexInstruction CreateIntLit16(int dest, int left, int constant) { + return new DexOrIntLit16(dest, left, constant); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/RecordFieldValues.java b/src/main/java/com/android/tools/r8/ir/code/RecordFieldValues.java index a2949d0..db1cfaf 100644 --- a/src/main/java/com/android/tools/r8/ir/code/RecordFieldValues.java +++ b/src/main/java/com/android/tools/r8/ir/code/RecordFieldValues.java
@@ -6,8 +6,8 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.code.CfRecordFieldValues; -import com.android.tools.r8.code.DexRecordFieldValues; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexRecordFieldValues; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.ProgramMethod;
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 f6f40fa..df5ffc1 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
@@ -4,16 +4,17 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfArithmeticBinop; -import com.android.tools.r8.code.RemDouble; -import com.android.tools.r8.code.RemDouble2Addr; -import com.android.tools.r8.code.RemFloat; -import com.android.tools.r8.code.RemFloat2Addr; -import com.android.tools.r8.code.RemInt; -import com.android.tools.r8.code.RemInt2Addr; -import com.android.tools.r8.code.RemIntLit16; -import com.android.tools.r8.code.RemIntLit8; -import com.android.tools.r8.code.RemLong; -import com.android.tools.r8.code.RemLong2Addr; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexRemDouble; +import com.android.tools.r8.dex.code.DexRemDouble2Addr; +import com.android.tools.r8.dex.code.DexRemFloat; +import com.android.tools.r8.dex.code.DexRemFloat2Addr; +import com.android.tools.r8.dex.code.DexRemInt; +import com.android.tools.r8.dex.code.DexRemInt2Addr; +import com.android.tools.r8.dex.code.DexRemIntLit16; +import com.android.tools.r8.dex.code.DexRemIntLit8; +import com.android.tools.r8.dex.code.DexRemLong; +import com.android.tools.r8.dex.code.DexRemLong2Addr; import com.android.tools.r8.ir.analysis.constant.Bottom; import com.android.tools.r8.ir.analysis.constant.LatticeElement; import java.util.function.Function; @@ -50,53 +51,53 @@ } @Override - public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { - return new RemInt(dest, left, right); + public DexInstruction CreateInt(int dest, int left, int right) { + return new DexRemInt(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { - return new RemLong(dest, left, right); + public DexInstruction CreateLong(int dest, int left, int right) { + return new DexRemLong(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateFloat(int dest, int left, int right) { - return new RemFloat(dest, left, right); + public DexInstruction CreateFloat(int dest, int left, int right) { + return new DexRemFloat(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateDouble(int dest, int left, int right) { - return new RemDouble(dest, left, right); + public DexInstruction CreateDouble(int dest, int left, int right) { + return new DexRemDouble(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { - return new RemInt2Addr(left, right); + public DexInstruction CreateInt2Addr(int left, int right) { + return new DexRemInt2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { - return new RemLong2Addr(left, right); + public DexInstruction CreateLong2Addr(int left, int right) { + return new DexRemLong2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateFloat2Addr(int left, int right) { - return new RemFloat2Addr(left, right); + public DexInstruction CreateFloat2Addr(int left, int right) { + return new DexRemFloat2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateDouble2Addr(int left, int right) { - return new RemDouble2Addr(left, right); + public DexInstruction CreateDouble2Addr(int left, int right) { + return new DexRemDouble2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { - return new RemIntLit8(dest, left, constant); + public DexInstruction CreateIntLit8(int dest, int left, int constant) { + return new DexRemIntLit8(dest, left, constant); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { - return new RemIntLit16(dest, left, constant); + public DexInstruction CreateIntLit16(int dest, int left, int constant) { + return new DexRemIntLit16(dest, left, constant); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/Return.java b/src/main/java/com/android/tools/r8/ir/code/Return.java index 1ec1a8e..752b30c 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Return.java +++ b/src/main/java/com/android/tools/r8/ir/code/Return.java
@@ -6,10 +6,12 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.code.CfReturn; import com.android.tools.r8.cf.code.CfReturnVoid; -import com.android.tools.r8.code.ReturnObject; -import com.android.tools.r8.code.ReturnVoid; -import com.android.tools.r8.code.ReturnWide; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexReturn; +import com.android.tools.r8.dex.code.DexReturnObject; +import com.android.tools.r8.dex.code.DexReturnVoid; +import com.android.tools.r8.dex.code.DexReturnWide; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.ProgramMethod; import com.android.tools.r8.ir.analysis.type.TypeElement; @@ -60,20 +62,20 @@ return inValues.get(0); } - public com.android.tools.r8.code.Instruction createDexInstruction(DexBuilder builder) { + public DexInstruction createDexInstruction(DexBuilder builder) { if (isReturnVoid()) { - return new ReturnVoid(); + return new DexReturnVoid(); } int register = builder.allocatedRegister(returnValue(), getNumber()); TypeElement returnType = getReturnType(); if (returnType.isReferenceType()) { - return new ReturnObject(register); + return new DexReturnObject(register); } if (returnType.isSinglePrimitive()) { - return new com.android.tools.r8.code.Return(register); + return new DexReturn(register); } if (returnType.isWidePrimitive()) { - return new ReturnWide(register); + return new DexReturnWide(register); } throw new Unreachable(); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/SafeCheckCast.java b/src/main/java/com/android/tools/r8/ir/code/SafeCheckCast.java index b811f86..1aee996 100644 --- a/src/main/java/com/android/tools/r8/ir/code/SafeCheckCast.java +++ b/src/main/java/com/android/tools/r8/ir/code/SafeCheckCast.java
@@ -5,6 +5,8 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfSafeCheckCast; +import com.android.tools.r8.dex.code.DexCheckCast; +import com.android.tools.r8.dex.code.DexSafeCheckCast; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexType; import com.android.tools.r8.graph.ProgramMethod; @@ -26,8 +28,8 @@ } @Override - com.android.tools.r8.code.CheckCast createCheckCast(int register) { - return new com.android.tools.r8.code.SafeCheckCast(register, getType()); + DexCheckCast createCheckCast(int register) { + return new DexSafeCheckCast(register, getType()); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/Shl.java b/src/main/java/com/android/tools/r8/ir/code/Shl.java index b297552..d18262a 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Shl.java +++ b/src/main/java/com/android/tools/r8/ir/code/Shl.java
@@ -4,11 +4,12 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfLogicalBinop; -import com.android.tools.r8.code.ShlInt; -import com.android.tools.r8.code.ShlInt2Addr; -import com.android.tools.r8.code.ShlIntLit8; -import com.android.tools.r8.code.ShlLong; -import com.android.tools.r8.code.ShlLong2Addr; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexShlInt; +import com.android.tools.r8.dex.code.DexShlInt2Addr; +import com.android.tools.r8.dex.code.DexShlIntLit8; +import com.android.tools.r8.dex.code.DexShlLong; +import com.android.tools.r8.dex.code.DexShlLong2Addr; import com.android.tools.r8.errors.Unreachable; public class Shl extends LogicalBinop { @@ -49,32 +50,32 @@ } @Override - public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { - return new ShlInt(dest, left, right); + public DexInstruction CreateInt(int dest, int left, int right) { + return new DexShlInt(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { - return new ShlLong(dest, left, right); + public DexInstruction CreateLong(int dest, int left, int right) { + return new DexShlLong(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { - return new ShlInt2Addr(left, right); + public DexInstruction CreateInt2Addr(int left, int right) { + return new DexShlInt2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { - return new ShlLong2Addr(left, right); + public DexInstruction CreateLong2Addr(int left, int right) { + return new DexShlLong2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { - return new ShlIntLit8(dest, left, constant); + public DexInstruction CreateIntLit8(int dest, int left, int constant) { + return new DexShlIntLit8(dest, left, constant); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { + public DexInstruction CreateIntLit16(int dest, int left, int constant) { throw new Unreachable("Unsupported instruction ShlIntLit16"); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/Shr.java b/src/main/java/com/android/tools/r8/ir/code/Shr.java index 36ff98b..5a93057 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Shr.java +++ b/src/main/java/com/android/tools/r8/ir/code/Shr.java
@@ -4,11 +4,12 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfLogicalBinop; -import com.android.tools.r8.code.ShrInt; -import com.android.tools.r8.code.ShrInt2Addr; -import com.android.tools.r8.code.ShrIntLit8; -import com.android.tools.r8.code.ShrLong; -import com.android.tools.r8.code.ShrLong2Addr; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexShrInt; +import com.android.tools.r8.dex.code.DexShrInt2Addr; +import com.android.tools.r8.dex.code.DexShrIntLit8; +import com.android.tools.r8.dex.code.DexShrLong; +import com.android.tools.r8.dex.code.DexShrLong2Addr; import com.android.tools.r8.errors.Unreachable; public class Shr extends LogicalBinop { @@ -49,32 +50,32 @@ } @Override - public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { - return new ShrInt(dest, left, right); + public DexInstruction CreateInt(int dest, int left, int right) { + return new DexShrInt(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { - return new ShrLong(dest, left, right); + public DexInstruction CreateLong(int dest, int left, int right) { + return new DexShrLong(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { - return new ShrInt2Addr(left, right); + public DexInstruction CreateInt2Addr(int left, int right) { + return new DexShrInt2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { - return new ShrLong2Addr(left, right); + public DexInstruction CreateLong2Addr(int left, int right) { + return new DexShrLong2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { - return new ShrIntLit8(dest, left, constant); + public DexInstruction CreateIntLit8(int dest, int left, int constant) { + return new DexShrIntLit8(dest, left, constant); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { + public DexInstruction CreateIntLit16(int dest, int left, int constant) { throw new Unreachable("Unsupported instruction ShrIntLit16"); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/StaticGet.java b/src/main/java/com/android/tools/r8/ir/code/StaticGet.java index c4413d0..a078dde 100644 --- a/src/main/java/com/android/tools/r8/ir/code/StaticGet.java +++ b/src/main/java/com/android/tools/r8/ir/code/StaticGet.java
@@ -6,14 +6,15 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.TypeVerificationHelper; import com.android.tools.r8.cf.code.CfStaticFieldRead; -import com.android.tools.r8.code.Sget; -import com.android.tools.r8.code.SgetBoolean; -import com.android.tools.r8.code.SgetByte; -import com.android.tools.r8.code.SgetChar; -import com.android.tools.r8.code.SgetObject; -import com.android.tools.r8.code.SgetShort; -import com.android.tools.r8.code.SgetWide; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexSget; +import com.android.tools.r8.dex.code.DexSgetBoolean; +import com.android.tools.r8.dex.code.DexSgetByte; +import com.android.tools.r8.dex.code.DexSgetChar; +import com.android.tools.r8.dex.code.DexSgetObject; +import com.android.tools.r8.dex.code.DexSgetShort; +import com.android.tools.r8.dex.code.DexSgetWide; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexClassAndField; @@ -97,32 +98,32 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int dest = builder.allocatedRegister(dest(), getNumber()); DexField field = getField(); switch (getType()) { case INT: case FLOAT: - instruction = new Sget(dest, field); + instruction = new DexSget(dest, field); break; case LONG: case DOUBLE: - instruction = new SgetWide(dest, field); + instruction = new DexSgetWide(dest, field); break; case OBJECT: - instruction = new SgetObject(dest, field); + instruction = new DexSgetObject(dest, field); break; case BOOLEAN: - instruction = new SgetBoolean(dest, field); + instruction = new DexSgetBoolean(dest, field); break; case BYTE: - instruction = new SgetByte(dest, field); + instruction = new DexSgetByte(dest, field); break; case CHAR: - instruction = new SgetChar(dest, field); + instruction = new DexSgetChar(dest, field); break; case SHORT: - instruction = new SgetShort(dest, field); + instruction = new DexSgetShort(dest, field); break; default: throw new Unreachable("Unexpected type: " + getType());
diff --git a/src/main/java/com/android/tools/r8/ir/code/StaticPut.java b/src/main/java/com/android/tools/r8/ir/code/StaticPut.java index b28f281..7d54dbb 100644 --- a/src/main/java/com/android/tools/r8/ir/code/StaticPut.java +++ b/src/main/java/com/android/tools/r8/ir/code/StaticPut.java
@@ -5,14 +5,15 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.code.CfStaticFieldWrite; -import com.android.tools.r8.code.Sput; -import com.android.tools.r8.code.SputBoolean; -import com.android.tools.r8.code.SputByte; -import com.android.tools.r8.code.SputChar; -import com.android.tools.r8.code.SputObject; -import com.android.tools.r8.code.SputShort; -import com.android.tools.r8.code.SputWide; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexSput; +import com.android.tools.r8.dex.code.DexSputBoolean; +import com.android.tools.r8.dex.code.DexSputByte; +import com.android.tools.r8.dex.code.DexSputChar; +import com.android.tools.r8.dex.code.DexSputObject; +import com.android.tools.r8.dex.code.DexSputShort; +import com.android.tools.r8.dex.code.DexSputWide; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexEncodedField; @@ -65,32 +66,32 @@ @Override public void buildDex(DexBuilder builder) { - com.android.tools.r8.code.Instruction instruction; + DexInstruction instruction; int src = builder.allocatedRegister(value(), getNumber()); DexField field = getField(); switch (getType()) { case INT: case FLOAT: - instruction = new Sput(src, field); + instruction = new DexSput(src, field); break; case LONG: case DOUBLE: - instruction = new SputWide(src, field); + instruction = new DexSputWide(src, field); break; case OBJECT: - instruction = new SputObject(src, field); + instruction = new DexSputObject(src, field); break; case BOOLEAN: - instruction = new SputBoolean(src, field); + instruction = new DexSputBoolean(src, field); break; case BYTE: - instruction = new SputByte(src, field); + instruction = new DexSputByte(src, field); break; case CHAR: - instruction = new SputChar(src, field); + instruction = new DexSputChar(src, field); break; case SHORT: - instruction = new SputShort(src, field); + instruction = new DexSputShort(src, field); break; default: throw new Unreachable("Unexpected type: " + getType());
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 e161b8e..fab70d7 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
@@ -5,19 +5,20 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfArithmeticBinop; -import com.android.tools.r8.code.AddIntLit16; -import com.android.tools.r8.code.AddIntLit8; -import com.android.tools.r8.code.RsubInt; -import com.android.tools.r8.code.RsubIntLit8; -import com.android.tools.r8.code.SubDouble; -import com.android.tools.r8.code.SubDouble2Addr; -import com.android.tools.r8.code.SubFloat; -import com.android.tools.r8.code.SubFloat2Addr; -import com.android.tools.r8.code.SubInt; -import com.android.tools.r8.code.SubInt2Addr; -import com.android.tools.r8.code.SubLong; -import com.android.tools.r8.code.SubLong2Addr; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexAddIntLit16; +import com.android.tools.r8.dex.code.DexAddIntLit8; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexRsubInt; +import com.android.tools.r8.dex.code.DexRsubIntLit8; +import com.android.tools.r8.dex.code.DexSubDouble; +import com.android.tools.r8.dex.code.DexSubDouble2Addr; +import com.android.tools.r8.dex.code.DexSubFloat; +import com.android.tools.r8.dex.code.DexSubFloat2Addr; +import com.android.tools.r8.dex.code.DexSubInt; +import com.android.tools.r8.dex.code.DexSubInt2Addr; +import com.android.tools.r8.dex.code.DexSubLong; +import com.android.tools.r8.dex.code.DexSubLong2Addr; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.ir.conversion.DexBuilder; @@ -43,53 +44,53 @@ } @Override - public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { - return new SubInt(dest, left, right); + public DexInstruction CreateInt(int dest, int left, int right) { + return new DexSubInt(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { - return new SubLong(dest, left, right); + public DexInstruction CreateLong(int dest, int left, int right) { + return new DexSubLong(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateFloat(int dest, int left, int right) { - return new SubFloat(dest, left, right); + public DexInstruction CreateFloat(int dest, int left, int right) { + return new DexSubFloat(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateDouble(int dest, int left, int right) { - return new SubDouble(dest, left, right); + public DexInstruction CreateDouble(int dest, int left, int right) { + return new DexSubDouble(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { - return new SubInt2Addr(left, right); + public DexInstruction CreateInt2Addr(int left, int right) { + return new DexSubInt2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { - return new SubLong2Addr(left, right); + public DexInstruction CreateLong2Addr(int left, int right) { + return new DexSubLong2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateFloat2Addr(int left, int right) { - return new SubFloat2Addr(left, right); + public DexInstruction CreateFloat2Addr(int left, int right) { + return new DexSubFloat2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateDouble2Addr(int left, int right) { - return new SubDouble2Addr(left, right); + public DexInstruction CreateDouble2Addr(int left, int right) { + return new DexSubDouble2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { + public DexInstruction 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) { + public DexInstruction CreateIntLit16(int dest, int left, int constant) { // The sub instructions with constants are rsub, and is handled below. throw new Unreachable("Unsupported instruction SubIntLit16"); } @@ -166,7 +167,7 @@ return; } - com.android.tools.r8.code.Instruction instruction = null; + DexInstruction instruction = null; if (!needsValueInRegister(leftValue())) { // Sub instructions with small left constant is emitted as rsub. assert fitsInDexInstruction(leftValue()); @@ -174,10 +175,10 @@ int right = builder.allocatedRegister(rightValue(), getNumber()); int dest = builder.allocatedRegister(outValue, getNumber()); if (left.is8Bit()) { - instruction = new RsubIntLit8(dest, right, left.getIntValue()); + instruction = new DexRsubIntLit8(dest, right, left.getIntValue()); } else { assert left.is16Bit(); - instruction = new RsubInt(dest, right, left.getIntValue()); + instruction = new DexRsubInt(dest, right, left.getIntValue()); } } else if (!needsValueInRegister(rightValue())) { // Sub instructions with small right constant are emitted as add of the negative constant. @@ -187,10 +188,10 @@ int left = builder.allocatedRegister(leftValue(), getNumber()); ConstNumber right = rightValue().getConstInstruction().asConstNumber(); if (right.negativeIs8Bit()) { - instruction = new AddIntLit8(dest, left, -right.getIntValue()); + instruction = new DexAddIntLit8(dest, left, -right.getIntValue()); } else { assert right.negativeIs16Bit(); - instruction = new AddIntLit16(dest, left, -right.getIntValue()); + instruction = new DexAddIntLit16(dest, left, -right.getIntValue()); } } else { assert type == NumericType.INT;
diff --git a/src/main/java/com/android/tools/r8/ir/code/Throw.java b/src/main/java/com/android/tools/r8/ir/code/Throw.java index 6350255..7968409 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Throw.java +++ b/src/main/java/com/android/tools/r8/ir/code/Throw.java
@@ -6,6 +6,7 @@ import com.android.tools.r8.cf.LoadStoreHelper; import com.android.tools.r8.cf.code.CfThrow; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexThrow; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.ProgramMethod; import com.android.tools.r8.ir.analysis.type.TypeElement; @@ -36,7 +37,7 @@ @Override public void buildDex(DexBuilder builder) { - builder.add(this, new com.android.tools.r8.code.Throw(builder.allocatedRegister(exception(), getNumber()))); + builder.add(this, new DexThrow(builder.allocatedRegister(exception(), getNumber()))); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/Ushr.java b/src/main/java/com/android/tools/r8/ir/code/Ushr.java index 5de1830..4ea3be9 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Ushr.java +++ b/src/main/java/com/android/tools/r8/ir/code/Ushr.java
@@ -4,11 +4,12 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfLogicalBinop; -import com.android.tools.r8.code.UshrInt; -import com.android.tools.r8.code.UshrInt2Addr; -import com.android.tools.r8.code.UshrIntLit8; -import com.android.tools.r8.code.UshrLong; -import com.android.tools.r8.code.UshrLong2Addr; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexUshrInt; +import com.android.tools.r8.dex.code.DexUshrInt2Addr; +import com.android.tools.r8.dex.code.DexUshrIntLit8; +import com.android.tools.r8.dex.code.DexUshrLong; +import com.android.tools.r8.dex.code.DexUshrLong2Addr; import com.android.tools.r8.errors.Unreachable; public class Ushr extends LogicalBinop { @@ -49,32 +50,32 @@ } @Override - public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { - return new UshrInt(dest, left, right); + public DexInstruction CreateInt(int dest, int left, int right) { + return new DexUshrInt(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { - return new UshrLong(dest, left, right); + public DexInstruction CreateLong(int dest, int left, int right) { + return new DexUshrLong(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { - return new UshrInt2Addr(left, right); + public DexInstruction CreateInt2Addr(int left, int right) { + return new DexUshrInt2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { - return new UshrLong2Addr(left, right); + public DexInstruction CreateLong2Addr(int left, int right) { + return new DexUshrLong2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { - return new UshrIntLit8(dest, left, constant); + public DexInstruction CreateIntLit8(int dest, int left, int constant) { + return new DexUshrIntLit8(dest, left, constant); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { + public DexInstruction CreateIntLit16(int dest, int left, int constant) { throw new Unreachable("Unsupported instruction ShrIntLit16"); }
diff --git a/src/main/java/com/android/tools/r8/ir/code/Xor.java b/src/main/java/com/android/tools/r8/ir/code/Xor.java index dce5686..657374a 100644 --- a/src/main/java/com/android/tools/r8/ir/code/Xor.java +++ b/src/main/java/com/android/tools/r8/ir/code/Xor.java
@@ -4,12 +4,13 @@ package com.android.tools.r8.ir.code; import com.android.tools.r8.cf.code.CfLogicalBinop; -import com.android.tools.r8.code.XorInt; -import com.android.tools.r8.code.XorInt2Addr; -import com.android.tools.r8.code.XorIntLit16; -import com.android.tools.r8.code.XorIntLit8; -import com.android.tools.r8.code.XorLong; -import com.android.tools.r8.code.XorLong2Addr; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexXorInt; +import com.android.tools.r8.dex.code.DexXorInt2Addr; +import com.android.tools.r8.dex.code.DexXorIntLit16; +import com.android.tools.r8.dex.code.DexXorIntLit8; +import com.android.tools.r8.dex.code.DexXorLong; +import com.android.tools.r8.dex.code.DexXorLong2Addr; import java.util.Set; public class Xor extends LogicalBinop { @@ -44,33 +45,33 @@ } @Override - public com.android.tools.r8.code.Instruction CreateInt(int dest, int left, int right) { - return new XorInt(dest, left, right); + public DexInstruction CreateInt(int dest, int left, int right) { + return new DexXorInt(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong(int dest, int left, int right) { - return new XorLong(dest, left, right); + public DexInstruction CreateLong(int dest, int left, int right) { + return new DexXorLong(dest, left, right); } @Override - public com.android.tools.r8.code.Instruction CreateInt2Addr(int left, int right) { - return new XorInt2Addr(left, right); + public DexInstruction CreateInt2Addr(int left, int right) { + return new DexXorInt2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateLong2Addr(int left, int right) { - return new XorLong2Addr(left, right); + public DexInstruction CreateLong2Addr(int left, int right) { + return new DexXorLong2Addr(left, right); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit8(int dest, int left, int constant) { - return new XorIntLit8(dest, left, constant); + public DexInstruction CreateIntLit8(int dest, int left, int constant) { + return new DexXorIntLit8(dest, left, constant); } @Override - public com.android.tools.r8.code.Instruction CreateIntLit16(int dest, int left, int constant) { - return new XorIntLit16(dest, left, constant); + public DexInstruction CreateIntLit16(int dest, int left, int constant) { + return new DexXorIntLit16(dest, left, constant); } @Override
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/ArrayFilledDataPayloadResolver.java b/src/main/java/com/android/tools/r8/ir/conversion/ArrayFilledDataPayloadResolver.java index 4f91695..739fb9f 100644 --- a/src/main/java/com/android/tools/r8/ir/conversion/ArrayFilledDataPayloadResolver.java +++ b/src/main/java/com/android/tools/r8/ir/conversion/ArrayFilledDataPayloadResolver.java
@@ -4,8 +4,8 @@ package com.android.tools.r8.ir.conversion; -import com.android.tools.r8.code.FillArrayData; -import com.android.tools.r8.code.FillArrayDataPayload; +import com.android.tools.r8.dex.code.DexFillArrayData; +import com.android.tools.r8.dex.code.DexFillArrayDataPayload; import java.util.HashMap; import java.util.Map; @@ -20,21 +20,21 @@ public short[] data; } - private final Map<Integer, FillArrayDataPayload> unresolvedPayload = new HashMap<>(); + private final Map<Integer, DexFillArrayDataPayload> unresolvedPayload = new HashMap<>(); private final Map<Integer, PayloadData> payloadToData = new HashMap<>(); - public void addPayloadUser(FillArrayData dex) { + public void addPayloadUser(DexFillArrayData dex) { int offset = dex.getOffset(); int payloadOffset = offset + dex.getPayloadOffset(); assert !payloadToData.containsKey(payloadOffset); payloadToData.put(payloadOffset, new PayloadData()); if (unresolvedPayload.containsKey(payloadOffset)) { - FillArrayDataPayload payload = unresolvedPayload.remove(payloadOffset); + DexFillArrayDataPayload payload = unresolvedPayload.remove(payloadOffset); resolve(payload); } } - public void resolve(FillArrayDataPayload payload) { + public void resolve(DexFillArrayDataPayload payload) { int payloadOffset = payload.getOffset(); PayloadData data = payloadToData.get(payloadOffset); if (data == null) {
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java index de631d3..201c789 100644 --- a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java +++ b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
@@ -3,37 +3,38 @@ // BSD-style license that can be found in the LICENSE file. package com.android.tools.r8.ir.conversion; -import com.android.tools.r8.code.FillArrayData; -import com.android.tools.r8.code.FillArrayDataPayload; -import com.android.tools.r8.code.Format31t; -import com.android.tools.r8.code.Goto; -import com.android.tools.r8.code.Goto16; -import com.android.tools.r8.code.Goto32; -import com.android.tools.r8.code.IfEq; -import com.android.tools.r8.code.IfEqz; -import com.android.tools.r8.code.IfGe; -import com.android.tools.r8.code.IfGez; -import com.android.tools.r8.code.IfGt; -import com.android.tools.r8.code.IfGtz; -import com.android.tools.r8.code.IfLe; -import com.android.tools.r8.code.IfLez; -import com.android.tools.r8.code.IfLt; -import com.android.tools.r8.code.IfLtz; -import com.android.tools.r8.code.IfNe; -import com.android.tools.r8.code.IfNez; -import com.android.tools.r8.code.InstanceOf; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.Move16; -import com.android.tools.r8.code.MoveFrom16; -import com.android.tools.r8.code.MoveObject; -import com.android.tools.r8.code.MoveObject16; -import com.android.tools.r8.code.MoveObjectFrom16; -import com.android.tools.r8.code.MoveWide; -import com.android.tools.r8.code.MoveWide16; -import com.android.tools.r8.code.MoveWideFrom16; -import com.android.tools.r8.code.Nop; -import com.android.tools.r8.code.Throw; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexFillArrayData; +import com.android.tools.r8.dex.code.DexFillArrayDataPayload; +import com.android.tools.r8.dex.code.DexFormat31t; +import com.android.tools.r8.dex.code.DexGoto; +import com.android.tools.r8.dex.code.DexGoto16; +import com.android.tools.r8.dex.code.DexGoto32; +import com.android.tools.r8.dex.code.DexIfEq; +import com.android.tools.r8.dex.code.DexIfEqz; +import com.android.tools.r8.dex.code.DexIfGe; +import com.android.tools.r8.dex.code.DexIfGez; +import com.android.tools.r8.dex.code.DexIfGt; +import com.android.tools.r8.dex.code.DexIfGtz; +import com.android.tools.r8.dex.code.DexIfLe; +import com.android.tools.r8.dex.code.DexIfLez; +import com.android.tools.r8.dex.code.DexIfLt; +import com.android.tools.r8.dex.code.DexIfLtz; +import com.android.tools.r8.dex.code.DexIfNe; +import com.android.tools.r8.dex.code.DexIfNez; +import com.android.tools.r8.dex.code.DexInstanceOf; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexMove; +import com.android.tools.r8.dex.code.DexMove16; +import com.android.tools.r8.dex.code.DexMoveFrom16; +import com.android.tools.r8.dex.code.DexMoveObject; +import com.android.tools.r8.dex.code.DexMoveObject16; +import com.android.tools.r8.dex.code.DexMoveObjectFrom16; +import com.android.tools.r8.dex.code.DexMoveWide; +import com.android.tools.r8.dex.code.DexMoveWide16; +import com.android.tools.r8.dex.code.DexMoveWideFrom16; +import com.android.tools.r8.dex.code.DexNop; +import com.android.tools.r8.dex.code.DexThrow; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.DebugLocalInfo; import com.android.tools.r8.graph.DexCode; @@ -86,7 +87,7 @@ private final IRCode ir; // Extra information that should be attached to the bytecode instructions. - private final BytecodeMetadata.Builder<Instruction> bytecodeMetadataBuilder; + private final BytecodeMetadata.Builder<DexInstruction> bytecodeMetadataBuilder; // The register allocator providing register assignments for the code to build. private final RegisterAllocator registerAllocator; @@ -236,7 +237,7 @@ // Build instructions. DexDebugEventBuilder debugEventBuilder = new DexDebugEventBuilder(ir, options); - List<Instruction> dexInstructions = new ArrayList<>(numberOfInstructions); + List<DexInstruction> dexInstructions = new ArrayList<>(numberOfInstructions); int instructionOffset = 0; for (com.android.tools.r8.ir.code.Instruction irInstruction : ir.instructions()) { Info info = getInfo(irInstruction); @@ -244,7 +245,7 @@ info.addInstructions(this, dexInstructions); int instructionStartOffset = instructionOffset; while (previousInstructionCount < dexInstructions.size()) { - Instruction dexInstruction = dexInstructions.get(previousInstructionCount++); + DexInstruction dexInstruction = dexInstructions.get(previousInstructionCount++); dexInstruction.setOffset(instructionOffset); instructionOffset += dexInstruction.getSize(); } @@ -257,7 +258,7 @@ // We could have also changed the block order, however, moving the throwing block higher // led to larger code in all experiments (multiple gmscore version and R8 run on itself). if (options.canHaveTracingPastInstructionsStreamBug() - && dexInstructions.get(dexInstructions.size() - 1) instanceof Throw + && dexInstructions.get(dexInstructions.size() - 1) instanceof DexThrow && hasBackwardsBranch) { // This is the last in a series of different workarounds tried out. // Having an empty non reachable loop make some mediatek vms crash: b/119895393 @@ -275,12 +276,12 @@ // That way we have no unreachable code, and we never end in a throw. The tracer will still // trace to the throw, but after moving to the second goto it will trace back again and see // an instruction it has already seen. - Instruction throwInstruction = dexInstructions.get(dexInstructions.size() -1); + DexInstruction throwInstruction = dexInstructions.get(dexInstructions.size() - 1); offset = throwInstruction.getOffset(); // Generate the new forward and backward gotos, update offsets. - Instruction forward = new Goto(throwInstruction.getSize() + Goto.SIZE); - Instruction backward = new Goto(-throwInstruction.getSize()); + DexInstruction forward = new DexGoto(throwInstruction.getSize() + DexGoto.SIZE); + DexInstruction backward = new DexGoto(-throwInstruction.getSize()); forward.setOffset(offset); offset += forward.getSize(); throwInstruction.setOffset(offset); @@ -298,12 +299,12 @@ for (SwitchPayloadInfo switchPayloadInfo : switchPayloadInfos) { // Align payloads at even addresses. if (offset % 2 != 0) { - Nop nop = new Nop(); + DexNop nop = new DexNop(); nop.setOffset(offset++); dexInstructions.add(nop); } // Create payload and add it to the instruction stream. - Nop payload = createSwitchPayload(switchPayloadInfo, offset); + DexNop payload = createSwitchPayload(switchPayloadInfo, offset); payload.setOffset(offset); offset += payload.getSize(); dexInstructions.add(payload); @@ -313,12 +314,12 @@ for (FillArrayDataInfo info : fillArrayDataInfos) { // Align payloads at even addresses. if (offset % 2 != 0) { - Nop nop = new Nop(); + DexNop nop = new DexNop(); nop.setOffset(offset++); dexInstructions.add(nop); } // Create payload and add it to the instruction stream. - FillArrayDataPayload payload = info.ir.createPayload(); + DexFillArrayDataPayload payload = info.ir.createPayload(); payload.setOffset(offset); info.dex.setPayloadOffset(offset - info.dex.getOffset()); offset += payload.getSize(); @@ -334,7 +335,7 @@ registerAllocator.registersUsed(), inRegisterCount, outRegisterCount, - dexInstructions.toArray(Instruction.EMPTY_ARRAY), + dexInstructions.toArray(DexInstruction.EMPTY_ARRAY), tryInfo.tries, tryInfo.handlers, debugEventBuilder.build(), @@ -584,7 +585,7 @@ } } - private boolean needsNopBetweenMoveAndInstanceOf(InstanceOf instanceOf) { + private boolean needsNopBetweenMoveAndInstanceOf(DexInstanceOf instanceOf) { if (!options.canHaveArtInstanceOfVerifierBug()) { return false; } @@ -608,9 +609,9 @@ return false; } - public void addInstanceOf(com.android.tools.r8.ir.code.InstanceOf ir, InstanceOf instanceOf) { + public void addInstanceOf(com.android.tools.r8.ir.code.InstanceOf ir, DexInstanceOf instanceOf) { if (needsNopBetweenMoveAndInstanceOf(instanceOf)) { - add(ir, new Nop(), instanceOf); + add(ir, new DexNop(), instanceOf); } else { add(ir, instanceOf); } @@ -645,7 +646,7 @@ } public void addNop(com.android.tools.r8.ir.code.Instruction ir) { - add(ir, new FixedSizeInfo(ir, new Nop())); + add(ir, new FixedSizeInfo(ir, new DexNop())); } public void addDebugPosition(DebugPosition position) { @@ -654,24 +655,24 @@ addNop(position); } - public void add(com.android.tools.r8.ir.code.Instruction instr, Instruction dex) { + public void add(com.android.tools.r8.ir.code.Instruction instr, DexInstruction dex) { assert !instr.isGoto(); add(instr, new FixedSizeInfo(instr, dex)); bytecodeMetadataBuilder.setMetadata(instr, dex); } - public void add(com.android.tools.r8.ir.code.Instruction ir, Instruction... dex) { + public void add(com.android.tools.r8.ir.code.Instruction ir, DexInstruction... dex) { assert !ir.isGoto(); add(ir, new MultiFixedSizeInfo(ir, dex)); } - public void addSwitch(IntSwitch s, Format31t dex) { + public void addSwitch(IntSwitch s, DexFormat31t dex) { assert nextBlock == s.fallthroughBlock(); switchPayloadInfos.add(new SwitchPayloadInfo(s, dex)); add(s, dex); } - public void addFillArrayData(NewArrayFilledData nafd, FillArrayData dex) { + public void addFillArrayData(NewArrayFilledData nafd, DexFillArrayData dex) { fillArrayDataInfos.add(new FillArrayDataInfo(nafd, dex)); add(nafd, dex); } @@ -681,7 +682,7 @@ add(argument, new FallThroughInfo(argument)); } - public void addReturn(Return ret, Instruction dex) { + public void addReturn(Return ret, DexInstruction dex) { if (nextBlock != null && ret.identicalAfterRegisterAllocation( nextBlock.entry(), registerAllocator, conversionOptions)) { @@ -759,7 +760,7 @@ } // Helper for computing switch payloads. - private Nop createSwitchPayload(SwitchPayloadInfo info, int offset) { + private DexNop createSwitchPayload(SwitchPayloadInfo info, int offset) { IntSwitch ir = info.ir; // Patch the payload offset in the generated switch instruction now // that the location is known. @@ -951,7 +952,7 @@ // Materialize the actual construction. // All instruction offsets are known at this point. - public abstract void addInstructions(DexBuilder builder, List<Instruction> instructions); + public abstract void addInstructions(DexBuilder builder, List<DexInstruction> instructions); // Lower bound on the size of the instruction. public abstract int minSize(); @@ -1000,9 +1001,9 @@ private static class FixedSizeInfo extends Info { - private final Instruction instruction; + private final DexInstruction instruction; - public FixedSizeInfo(com.android.tools.r8.ir.code.Instruction ir, Instruction instruction) { + public FixedSizeInfo(com.android.tools.r8.ir.code.Instruction ir, DexInstruction instruction) { super(ir); this.instruction = instruction; } @@ -1029,7 +1030,7 @@ } @Override - public void addInstructions(DexBuilder builder, List<Instruction> instructions) { + public void addInstructions(DexBuilder builder, List<DexInstruction> instructions) { instructions.add(instruction); } @@ -1042,15 +1043,15 @@ private static class MultiFixedSizeInfo extends Info { - private final Instruction[] instructions; + private final DexInstruction[] instructions; private final int size; - public MultiFixedSizeInfo(com.android.tools.r8.ir.code.Instruction ir, - Instruction[] instructions) { + public MultiFixedSizeInfo( + com.android.tools.r8.ir.code.Instruction ir, DexInstruction[] instructions) { super(ir); this.instructions = instructions; int size = 0; - for (Instruction instruction : instructions) { + for (DexInstruction instruction : instructions) { size += instruction.getSize(); } this.size = size; @@ -1062,9 +1063,9 @@ } @Override - public void addInstructions(DexBuilder builder, List<Instruction> instructions) { + public void addInstructions(DexBuilder builder, List<DexInstruction> instructions) { int offset = getOffset(); - for (Instruction instruction : this.instructions) { + for (DexInstruction instruction : this.instructions) { instructions.add(instruction); instruction.setOffset(offset); offset += instruction.getSize(); @@ -1110,8 +1111,7 @@ } @Override - public void addInstructions(DexBuilder builder, List<Instruction> instructions) { - } + public void addInstructions(DexBuilder builder, List<DexInstruction> instructions) {} @Override public int minSize() { @@ -1149,13 +1149,13 @@ @Override public int minSize() { - assert new Goto(42).getSize() == 1; + assert new DexGoto(42).getSize() == 1; return 1; } @Override public int maxSize() { - assert new Goto32(0).getSize() == 3; + assert new DexGoto32(0).getSize() == 3; return 3; } @@ -1201,7 +1201,7 @@ } @Override - public void addInstructions(DexBuilder builder, List<Instruction> instructions) { + public void addInstructions(DexBuilder builder, List<DexInstruction> instructions) { com.android.tools.r8.ir.code.Goto jump = getJump(); int source = builder.getInfo(jump).getOffset(); Info targetInfo = builder.getTargetInfo(jump.getTarget()); @@ -1213,7 +1213,7 @@ // size of this instruction. Return ret = targetInfo.getIR().asReturn(); if (ret != null && size == targetInfo.getSize() && ret.getPosition().isNone()) { - Instruction dex = ret.createDexInstruction(builder); + DexInstruction dex = ret.createDexInstruction(builder); dex.setOffset(getOffset()); // for better printing of the dex code. instructions.add(dex); } else if (size == relativeOffset) { @@ -1222,29 +1222,29 @@ // jit crashes on 'goto next instruction' on Android 4.1.1. // TODO(b/34726595): We currently do hit this case and we should see if we can avoid that. for (int i = 0; i < size; i++) { - Instruction dex = new Nop(); + DexInstruction dex = new DexNop(); assert dex.getSize() == 1; dex.setOffset(getOffset() + i); // for better printing of the dex code. instructions.add(dex); } } else { - Instruction dex; + DexInstruction dex; switch (size) { case 1: assert relativeOffset != 0; - dex = new Goto(relativeOffset); + dex = new DexGoto(relativeOffset); break; case 2: if (relativeOffset == 0) { - Nop nop = new Nop(); + DexNop nop = new DexNop(); instructions.add(nop); - dex = new Goto(-nop.getSize()); + dex = new DexGoto(-nop.getSize()); } else { - dex = new Goto16(relativeOffset); + dex = new DexGoto16(relativeOffset); } break; case 3: - dex = new Goto32(relativeOffset); + dex = new DexGoto32(relativeOffset); break; default: throw new Unreachable("Unexpected size for goto instruction: " + size); @@ -1307,7 +1307,7 @@ } @Override - public void addInstructions(DexBuilder builder, List<Instruction> instructions) { + public void addInstructions(DexBuilder builder, List<DexInstruction> instructions) { If branch = getBranch(); int source = builder.getInfo(branch).getOffset(); int target = builder.getInfo(branch.getTrueTarget().entry()).getOffset(); @@ -1320,53 +1320,53 @@ if (size == 3) { assert branchesToSelf(builder); - Nop nop = new Nop(); + DexNop nop = new DexNop(); relativeOffset -= nop.getSize(); instructions.add(nop); } assert relativeOffset != 0; - Instruction instruction = null; + DexInstruction instruction = null; if (branch.isZeroTest()) { switch (getBranch().getType()) { case EQ: - instruction = new IfEqz(register1, relativeOffset); + instruction = new DexIfEqz(register1, relativeOffset); break; case GE: - instruction = new IfGez(register1, relativeOffset); + instruction = new DexIfGez(register1, relativeOffset); break; case GT: - instruction = new IfGtz(register1, relativeOffset); + instruction = new DexIfGtz(register1, relativeOffset); break; case LE: - instruction = new IfLez(register1, relativeOffset); + instruction = new DexIfLez(register1, relativeOffset); break; case LT: - instruction = new IfLtz(register1, relativeOffset); + instruction = new DexIfLtz(register1, relativeOffset); break; case NE: - instruction = new IfNez(register1, relativeOffset); + instruction = new DexIfNez(register1, relativeOffset); break; } } else { int register2 = getRegister(1, builder); switch (getBranch().getType()) { case EQ: - instruction = new IfEq(register1, register2, relativeOffset); + instruction = new DexIfEq(register1, register2, relativeOffset); break; case GE: - instruction = new IfGe(register1, register2, relativeOffset); + instruction = new DexIfGe(register1, register2, relativeOffset); break; case GT: - instruction = new IfGt(register1, register2, relativeOffset); + instruction = new DexIfGt(register1, register2, relativeOffset); break; case LE: - instruction = new IfLe(register1, register2, relativeOffset); + instruction = new DexIfLe(register1, register2, relativeOffset); break; case LT: - instruction = new IfLt(register1, register2, relativeOffset); + instruction = new DexIfLt(register1, register2, relativeOffset); break; case NE: - instruction = new IfNe(register1, register2, relativeOffset); + instruction = new DexIfNe(register1, register2, relativeOffset); break; } } @@ -1456,46 +1456,46 @@ } @Override - public void addInstructions(DexBuilder builder, List<Instruction> instructions) { + public void addInstructions(DexBuilder builder, List<DexInstruction> instructions) { Move move = getMove(); TypeElement moveType = move.getOutType(); int src = srcRegister(builder); int dest = destRegister(builder); - Instruction instruction; + DexInstruction instruction; switch (size) { case 1: if (src == dest) { - instruction = new Nop(); + instruction = new DexNop(); break; } if (moveType.isSinglePrimitive()) { - instruction = new com.android.tools.r8.code.Move(dest, src); + instruction = new DexMove(dest, src); } else if (moveType.isWidePrimitive()) { - instruction = new MoveWide(dest, src); + instruction = new DexMoveWide(dest, src); } else if (moveType.isReferenceType()) { - instruction = new MoveObject(dest, src); + instruction = new DexMoveObject(dest, src); } else { throw new Unreachable("Unexpected type: " + move.outType()); } break; case 2: if (moveType.isSinglePrimitive()) { - instruction = new MoveFrom16(dest, src); + instruction = new DexMoveFrom16(dest, src); } else if (moveType.isWidePrimitive()) { - instruction = new MoveWideFrom16(dest, src); + instruction = new DexMoveWideFrom16(dest, src); } else if (moveType.isReferenceType()) { - instruction = new MoveObjectFrom16(dest, src); + instruction = new DexMoveObjectFrom16(dest, src); } else { throw new Unreachable("Unexpected type: " + move.outType()); } break; case 3: if (moveType.isSinglePrimitive()) { - instruction = new Move16(dest, src); + instruction = new DexMove16(dest, src); } else if (moveType.isWidePrimitive()) { - instruction = new MoveWide16(dest, src); + instruction = new DexMoveWide16(dest, src); } else if (moveType.isReferenceType()) { - instruction = new MoveObject16(dest, src); + instruction = new DexMoveObject16(dest, src); } else { throw new Unreachable("Unexpected type: " + move.outType()); } @@ -1509,13 +1509,13 @@ @Override public int minSize() { - assert new Nop().getSize() == 1 && new com.android.tools.r8.code.Move(0, 0).getSize() == 1; + assert new DexNop().getSize() == 1 && new DexMove(0, 0).getSize() == 1; return 1; } @Override public int maxSize() { - assert new Move16(0, 0).getSize() == 3; + assert new DexMove16(0, 0).getSize() == 3; return 3; } @@ -1560,9 +1560,9 @@ private static class SwitchPayloadInfo { public final IntSwitch ir; - public final Format31t dex; + public final DexFormat31t dex; - public SwitchPayloadInfo(IntSwitch ir, Format31t dex) { + public SwitchPayloadInfo(IntSwitch ir, DexFormat31t dex) { this.ir = ir; this.dex = dex; } @@ -1571,9 +1571,9 @@ private static class FillArrayDataInfo { public final NewArrayFilledData ir; - public final FillArrayData dex; + public final DexFillArrayData dex; - public FillArrayDataInfo(NewArrayFilledData ir, FillArrayData dex) { + public FillArrayDataInfo(NewArrayFilledData ir, DexFillArrayData dex) { this.ir = ir; this.dex = dex; }
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/DexSourceCode.java b/src/main/java/com/android/tools/r8/ir/conversion/DexSourceCode.java index a8d0ccd..3fbcdc8 100644 --- a/src/main/java/com/android/tools/r8/ir/conversion/DexSourceCode.java +++ b/src/main/java/com/android/tools/r8/ir/conversion/DexSourceCode.java
@@ -4,31 +4,31 @@ package com.android.tools.r8.ir.conversion; -import com.android.tools.r8.code.FillArrayData; -import com.android.tools.r8.code.FillArrayDataPayload; -import com.android.tools.r8.code.FilledNewArray; -import com.android.tools.r8.code.FilledNewArrayRange; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.InvokeCustom; -import com.android.tools.r8.code.InvokeCustomRange; -import com.android.tools.r8.code.InvokeDirect; -import com.android.tools.r8.code.InvokeDirectRange; -import com.android.tools.r8.code.InvokeInterface; -import com.android.tools.r8.code.InvokeInterfaceRange; -import com.android.tools.r8.code.InvokePolymorphic; -import com.android.tools.r8.code.InvokePolymorphicRange; -import com.android.tools.r8.code.InvokeStatic; -import com.android.tools.r8.code.InvokeStaticRange; -import com.android.tools.r8.code.InvokeSuper; -import com.android.tools.r8.code.InvokeSuperRange; -import com.android.tools.r8.code.InvokeVirtual; -import com.android.tools.r8.code.InvokeVirtualRange; -import com.android.tools.r8.code.MoveException; -import com.android.tools.r8.code.MoveResult; -import com.android.tools.r8.code.MoveResultObject; -import com.android.tools.r8.code.MoveResultWide; -import com.android.tools.r8.code.SwitchPayload; -import com.android.tools.r8.code.Throw; +import com.android.tools.r8.dex.code.DexFillArrayData; +import com.android.tools.r8.dex.code.DexFillArrayDataPayload; +import com.android.tools.r8.dex.code.DexFilledNewArray; +import com.android.tools.r8.dex.code.DexFilledNewArrayRange; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeCustom; +import com.android.tools.r8.dex.code.DexInvokeCustomRange; +import com.android.tools.r8.dex.code.DexInvokeDirect; +import com.android.tools.r8.dex.code.DexInvokeDirectRange; +import com.android.tools.r8.dex.code.DexInvokeInterface; +import com.android.tools.r8.dex.code.DexInvokeInterfaceRange; +import com.android.tools.r8.dex.code.DexInvokePolymorphic; +import com.android.tools.r8.dex.code.DexInvokePolymorphicRange; +import com.android.tools.r8.dex.code.DexInvokeStatic; +import com.android.tools.r8.dex.code.DexInvokeStaticRange; +import com.android.tools.r8.dex.code.DexInvokeSuper; +import com.android.tools.r8.dex.code.DexInvokeSuperRange; +import com.android.tools.r8.dex.code.DexInvokeVirtual; +import com.android.tools.r8.dex.code.DexInvokeVirtualRange; +import com.android.tools.r8.dex.code.DexMoveException; +import com.android.tools.r8.dex.code.DexMoveResult; +import com.android.tools.r8.dex.code.DexMoveResultObject; +import com.android.tools.r8.dex.code.DexMoveResultWide; +import com.android.tools.r8.dex.code.DexSwitchPayload; +import com.android.tools.r8.dex.code.DexThrow; import com.android.tools.r8.graph.DebugLocalInfo; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexCode.Try; @@ -66,7 +66,7 @@ private Try currentTryRange = null; private CatchHandlers<Integer> currentCatchHandlers = null; - private Instruction currentDexInstruction = null; + private DexInstruction currentDexInstruction = null; private boolean isBuildingPrelude; private Position currentPosition = null; @@ -126,13 +126,13 @@ public void setUp() { // Collect all payloads in the instruction stream. for (int index = 0; index < code.instructions.length; index++) { - Instruction insn = code.instructions[index]; + DexInstruction insn = code.instructions[index]; offsetToInstructionIndex.put(insn.getOffset(), index); if (insn.isPayload()) { if (insn.isSwitchPayload()) { - switchPayloadResolver.resolve((SwitchPayload) insn); + switchPayloadResolver.resolve((DexSwitchPayload) insn); } else { - arrayFilledDataPayloadResolver.resolve((FillArrayDataPayload) insn); + arrayFilledDataPayloadResolver.resolve((DexFillArrayDataPayload) insn); } } } @@ -183,9 +183,9 @@ @Override public int getMoveExceptionRegister(int instructionIndex) { - Instruction instruction = code.instructions[instructionIndex]; - if (instruction instanceof MoveException) { - MoveException moveException = (MoveException) instruction; + DexInstruction instruction = code.instructions[instructionIndex]; + if (instruction instanceof DexMoveException) { + DexMoveException moveException = (DexMoveException) instruction; return moveException.AA; } return -1; @@ -297,38 +297,38 @@ arrayFilledDataPayloadResolver.getData(payloadOffset)); } - private boolean isInvoke(Instruction dex) { - return dex instanceof InvokeCustom - || dex instanceof InvokeCustomRange - || dex instanceof InvokeDirect - || dex instanceof InvokeDirectRange - || dex instanceof InvokeVirtual - || dex instanceof InvokeVirtualRange - || dex instanceof InvokeInterface - || dex instanceof InvokeInterfaceRange - || dex instanceof InvokeStatic - || dex instanceof InvokeStaticRange - || dex instanceof InvokeSuper - || dex instanceof InvokeSuperRange - || dex instanceof InvokePolymorphic - || dex instanceof InvokePolymorphicRange - || dex instanceof FilledNewArray - || dex instanceof FilledNewArrayRange; + private boolean isInvoke(DexInstruction dex) { + return dex instanceof DexInvokeCustom + || dex instanceof DexInvokeCustomRange + || dex instanceof DexInvokeDirect + || dex instanceof DexInvokeDirectRange + || dex instanceof DexInvokeVirtual + || dex instanceof DexInvokeVirtualRange + || dex instanceof DexInvokeInterface + || dex instanceof DexInvokeInterfaceRange + || dex instanceof DexInvokeStatic + || dex instanceof DexInvokeStaticRange + || dex instanceof DexInvokeSuper + || dex instanceof DexInvokeSuperRange + || dex instanceof DexInvokePolymorphic + || dex instanceof DexInvokePolymorphicRange + || dex instanceof DexFilledNewArray + || dex instanceof DexFilledNewArrayRange; } - private boolean isMoveResult(Instruction dex) { - return dex instanceof MoveResult - || dex instanceof MoveResultObject - || dex instanceof MoveResultWide; + private boolean isMoveResult(DexInstruction dex) { + return dex instanceof DexMoveResult + || dex instanceof DexMoveResultObject + || dex instanceof DexMoveResultWide; } @Override public int traceInstruction(int index, IRBuilder builder) { - Instruction dex = code.instructions[index]; + DexInstruction dex = code.instructions[index]; int offset = dex.getOffset(); assert !dex.isPayload(); int[] targets = dex.getTargets(); - if (targets != Instruction.NO_TARGETS) { + if (targets != DexInstruction.NO_TARGETS) { // Check that we don't ever have instructions that can throw and have targets. assert !dex.canThrow(); for (int relativeOffset : targets) { @@ -339,7 +339,7 @@ if (dex.canThrow()) { // TODO(zerny): Remove this from block computation. if (dex.hasPayload()) { - arrayFilledDataPayloadResolver.addPayloadUser((FillArrayData) dex); + arrayFilledDataPayloadResolver.addPayloadUser((DexFillArrayData) dex); } // If the instruction can throw and is in a try block, add edges to its catch successors. Try tryRange = getTryForOffset(offset); @@ -366,13 +366,13 @@ dex = code.instructions[index]; } // Edge to normal successor if any (fallthrough). - if (!(dex instanceof Throw)) { + if (!(dex instanceof DexThrow)) { builder.ensureNormalSuccessorBlock(offset, dex.getOffset() + dex.getSize()); } return index; } // Close the block if the instruction is a throw, otherwise the block remains open. - return dex instanceof Throw ? index : -1; + return dex instanceof DexThrow ? index : -1; } if (dex.isIntSwitch()) { // TODO(zerny): Remove this from block computation.
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/SwitchPayloadResolver.java b/src/main/java/com/android/tools/r8/ir/conversion/SwitchPayloadResolver.java index 39e494d..fb2709f 100644 --- a/src/main/java/com/android/tools/r8/ir/conversion/SwitchPayloadResolver.java +++ b/src/main/java/com/android/tools/r8/ir/conversion/SwitchPayloadResolver.java
@@ -4,8 +4,8 @@ package com.android.tools.r8.ir.conversion; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.SwitchPayload; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexSwitchPayload; import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -28,20 +28,20 @@ } } - private final Map<Integer, SwitchPayload> unresolvedPayload = new HashMap<>(); + private final Map<Integer, DexSwitchPayload> unresolvedPayload = new HashMap<>(); private final Map<Integer, PayloadData> payloadToData = new HashMap<>(); - public void addPayloadUser(Instruction dex) { + public void addPayloadUser(DexInstruction dex) { int offset = dex.getOffset(); int payloadOffset = offset + dex.getPayloadOffset(); payloadToData.put(payloadOffset, new PayloadData(offset)); if (unresolvedPayload.containsKey(payloadOffset)) { - SwitchPayload payload = unresolvedPayload.remove(payloadOffset); + DexSwitchPayload payload = unresolvedPayload.remove(payloadOffset); resolve(payload); } } - public void resolve(SwitchPayload payload) { + public void resolve(DexSwitchPayload payload) { int payloadOffset = payload.getOffset(); PayloadData data = payloadToData.get(payloadOffset); if (data == null) { @@ -59,7 +59,7 @@ data.size = payload.numberOfKeys(); } - public int[] absoluteTargets(Instruction dex) { + public int[] absoluteTargets(DexInstruction dex) { assert dex.isIntSwitch(); return absoluteTargets(dex.getOffset() + dex.getPayloadOffset()); }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceProcessor.java b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceProcessor.java index f963a21..89a9163 100644 --- a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceProcessor.java +++ b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceProcessor.java
@@ -6,8 +6,8 @@ import com.android.tools.r8.cf.code.CfInstruction; import com.android.tools.r8.cf.code.CfInvoke; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.InvokeSuper; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeSuper; import com.android.tools.r8.errors.CompilationError; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.Code; @@ -193,8 +193,8 @@ Code code = method.getDefinition().getCode(); assert code != null; if (code.isDexCode()) { - for (Instruction insn : code.asDexCode().instructions) { - if (insn instanceof InvokeSuper) { + for (DexInstruction insn : code.asDexCode().instructions) { + if (insn instanceof DexInvokeSuper) { return false; } }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java b/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java index 3788e98..107bd20 100644 --- a/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java +++ b/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
@@ -7,9 +7,9 @@ import static com.android.tools.r8.ir.optimize.inliner.InlinerUtils.collectAllMonitorEnterValues; import static com.android.tools.r8.utils.AndroidApiLevelUtils.isApiSafeForInlining; -import com.android.tools.r8.code.MoveResult; -import com.android.tools.r8.code.MoveResultObject; -import com.android.tools.r8.code.MoveResultWide; +import com.android.tools.r8.dex.code.DexMoveResult; +import com.android.tools.r8.dex.code.DexMoveResultObject; +import com.android.tools.r8.dex.code.DexMoveResultWide; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.features.ClassToFeatureSplitMap; import com.android.tools.r8.graph.AppView; @@ -245,9 +245,9 @@ if (appView.options().isGeneratingDex() && invoke.hasOutValue() && invoke.outValue().hasNonDebugUsers()) { - assert MoveResult.SIZE == MoveResultObject.SIZE; - assert MoveResult.SIZE == MoveResultWide.SIZE; - instructionLimit += MoveResult.SIZE; + assert DexMoveResult.SIZE == DexMoveResultObject.SIZE; + assert DexMoveResult.SIZE == DexMoveResultWide.SIZE; + instructionLimit += DexMoveResult.SIZE; } return instructionLimit; }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerCostAnalysis.java b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerCostAnalysis.java index 93b5d8f..12028fb 100644 --- a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerCostAnalysis.java +++ b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/ClassInlinerCostAnalysis.java
@@ -9,9 +9,9 @@ import static com.android.tools.r8.ir.code.Opcodes.INSTANCE_PUT; import static com.android.tools.r8.ir.code.Opcodes.RETURN; -import com.android.tools.r8.code.Iget; -import com.android.tools.r8.code.Iput; -import com.android.tools.r8.code.Return; +import com.android.tools.r8.dex.code.DexIget; +import com.android.tools.r8.dex.code.DexIput; +import com.android.tools.r8.dex.code.DexReturn; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexProgramClass; import com.android.tools.r8.graph.ProgramMethod; @@ -130,7 +130,7 @@ if (appView.options().isGeneratingClassFiles()) { result++; } else { - result += instruction.isInstanceGet() ? Iget.SIZE : Iput.SIZE; + result += instruction.isInstanceGet() ? DexIget.SIZE : DexIput.SIZE; } } break; @@ -140,7 +140,7 @@ if (appView.options().isGeneratingClassFiles()) { result++; } else { - result += Return.SIZE; + result += DexReturn.SIZE; } break;
diff --git a/src/main/java/com/android/tools/r8/naming/IdentifierMinifier.java b/src/main/java/com/android/tools/r8/naming/IdentifierMinifier.java index 0ad986c..ada07f6 100644 --- a/src/main/java/com/android/tools/r8/naming/IdentifierMinifier.java +++ b/src/main/java/com/android/tools/r8/naming/IdentifierMinifier.java
@@ -8,9 +8,9 @@ import com.android.tools.r8.cf.code.CfConstString; import com.android.tools.r8.cf.code.CfDexItemBasedConstString; import com.android.tools.r8.cf.code.CfInstruction; -import com.android.tools.r8.code.ConstString; -import com.android.tools.r8.code.DexItemBasedConstString; -import com.android.tools.r8.code.Instruction; +import com.android.tools.r8.dex.code.DexConstString; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexItemBasedConstString; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.Code; import com.android.tools.r8.graph.DexClass; @@ -91,9 +91,9 @@ return; } if (code.isDexCode()) { - for (Instruction instruction : code.asDexCode().instructions) { + for (DexInstruction instruction : code.asDexCode().instructions) { if (instruction.isConstString()) { - ConstString cnst = instruction.asConstString(); + DexConstString cnst = instruction.asConstString(); cnst.BBBB = getRenamedStringLiteral(cnst.getString()); } } @@ -163,15 +163,15 @@ Code code = programMethod.getDefinition().getCode(); assert code != null; if (code.isDexCode()) { - Instruction[] instructions = code.asDexCode().instructions; + DexInstruction[] instructions = code.asDexCode().instructions; for (int i = 0; i < instructions.length; ++i) { - Instruction instruction = instructions[i]; + DexInstruction instruction = instructions[i]; if (instruction.isDexItemBasedConstString()) { DexItemBasedConstString cnst = instruction.asDexItemBasedConstString(); DexString replacement = cnst.getNameComputationInfo() .computeNameFor(cnst.getItem(), appView, appView.graphLens(), lens); - ConstString constString = new ConstString(cnst.AA, replacement); + DexConstString constString = new DexConstString(cnst.AA, replacement); constString.setOffset(instruction.getOffset()); instructions[i] = constString; }
diff --git a/src/main/java/com/android/tools/r8/optimize/bridgehoisting/BridgeHoisting.java b/src/main/java/com/android/tools/r8/optimize/bridgehoisting/BridgeHoisting.java index f640d08..09966ca 100644 --- a/src/main/java/com/android/tools/r8/optimize/bridgehoisting/BridgeHoisting.java +++ b/src/main/java/com/android/tools/r8/optimize/bridgehoisting/BridgeHoisting.java
@@ -7,9 +7,9 @@ import com.android.tools.r8.cf.code.CfInstruction; import com.android.tools.r8.cf.code.CfInvoke; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.InvokeVirtual; -import com.android.tools.r8.code.InvokeVirtualRange; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeVirtual; +import com.android.tools.r8.dex.code.DexInvokeVirtualRange; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.BottomUpClassHierarchyTraversal; @@ -332,24 +332,24 @@ } private DexCode createDexCodeForVirtualBridge(DexCode code, DexMethod methodToInvoke) { - Instruction[] newInstructions = new Instruction[code.instructions.length]; + DexInstruction[] newInstructions = new DexInstruction[code.instructions.length]; boolean modified = false; for (int i = 0; i < code.instructions.length; i++) { - Instruction instruction = code.instructions[i]; + DexInstruction instruction = code.instructions[i]; if (instruction.isInvokeVirtual() && instruction.asInvokeVirtual().getMethod() != methodToInvoke) { - InvokeVirtual invoke = instruction.asInvokeVirtual(); - InvokeVirtual newInvoke = - new InvokeVirtual( + DexInvokeVirtual invoke = instruction.asInvokeVirtual(); + DexInvokeVirtual newInvoke = + new DexInvokeVirtual( invoke.A, methodToInvoke, invoke.C, invoke.D, invoke.E, invoke.F, invoke.G); newInvoke.setOffset(invoke.getOffset()); newInstructions[i] = newInvoke; modified = true; } else if (instruction.isInvokeVirtualRange() && instruction.asInvokeVirtualRange().getMethod() != methodToInvoke) { - InvokeVirtualRange invoke = instruction.asInvokeVirtualRange(); - InvokeVirtualRange newInvoke = - new InvokeVirtualRange(invoke.CCCC, invoke.AA, methodToInvoke); + DexInvokeVirtualRange invoke = instruction.asInvokeVirtualRange(); + DexInvokeVirtualRange newInvoke = + new DexInvokeVirtualRange(invoke.CCCC, invoke.AA, methodToInvoke); newInvoke.setOffset(invoke.getOffset()); modified = true; newInstructions[i] = newInvoke;
diff --git a/src/main/java/com/android/tools/r8/shaking/DefaultEnqueuerUseRegistry.java b/src/main/java/com/android/tools/r8/shaking/DefaultEnqueuerUseRegistry.java index 597a07d..192b16a 100644 --- a/src/main/java/com/android/tools/r8/shaking/DefaultEnqueuerUseRegistry.java +++ b/src/main/java/com/android/tools/r8/shaking/DefaultEnqueuerUseRegistry.java
@@ -8,7 +8,7 @@ import com.android.tools.r8.androidapi.AndroidApiLevelCompute; import com.android.tools.r8.androidapi.ComputedApiLevel; -import com.android.tools.r8.code.CfOrDexInstruction; +import com.android.tools.r8.dex.code.CfOrDexInstruction; import com.android.tools.r8.graph.AppInfoWithClassHierarchy; import com.android.tools.r8.graph.AppView; import com.android.tools.r8.graph.DexCallSite;
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 c93bdb3..d3f4afa 100644 --- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java +++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -18,10 +18,10 @@ import com.android.tools.r8.Diagnostic; import com.android.tools.r8.cf.code.CfInstruction; import com.android.tools.r8.cf.code.CfInvoke; -import com.android.tools.r8.code.CfOrDexInstruction; import com.android.tools.r8.contexts.CompilationContext.MethodProcessingContext; import com.android.tools.r8.contexts.CompilationContext.ProcessorContext; import com.android.tools.r8.dex.IndexedItemCollection; +import com.android.tools.r8.dex.code.CfOrDexInstruction; import com.android.tools.r8.errors.InterfaceDesugarMissingTypeDiagnostic; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.experimental.graphinfo.GraphConsumer;
diff --git a/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java b/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java index 86b7c35..012f26e 100644 --- a/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java +++ b/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java
@@ -6,8 +6,8 @@ import com.android.tools.r8.ResourceException; import com.android.tools.r8.cf.code.CfInstruction; import com.android.tools.r8.cf.code.CfPosition; -import com.android.tools.r8.code.Instruction; import com.android.tools.r8.debuginfo.DebugRepresentation.DebugRepresentationPredicate; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppInfoWithClassHierarchy; import com.android.tools.r8.graph.AppView; @@ -1180,7 +1180,7 @@ // If the method has a single non-preamble line, check that the preamble is not active on any // throwing instruction before the single line becomes active. if (singleOriginalLine.isTrue() && firstDefaultEventPc.get() > 0) { - for (Instruction instruction : dexCode.instructions) { + for (DexInstruction instruction : dexCode.instructions) { if (instruction.getOffset() < firstDefaultEventPc.get()) { if (instruction.canThrow()) { singleOriginalLine.set(false);
diff --git a/src/test/java/com/android/tools/r8/TestBase.java b/src/test/java/com/android/tools/r8/TestBase.java index 08e9395..d2bb3e1 100644 --- a/src/test/java/com/android/tools/r8/TestBase.java +++ b/src/test/java/com/android/tools/r8/TestBase.java
@@ -23,8 +23,8 @@ import com.android.tools.r8.ToolHelper.DexVm; import com.android.tools.r8.ToolHelper.ProcessResult; import com.android.tools.r8.cf.CfVersion; -import com.android.tools.r8.code.Instruction; import com.android.tools.r8.dex.ApplicationReader; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.features.ClassToFeatureSplitMap; import com.android.tools.r8.graph.AppInfo; @@ -1544,7 +1544,7 @@ } protected static void checkInstructions( - DexCode code, List<Class<? extends Instruction>> instructions) { + DexCode code, List<Class<? extends DexInstruction>> instructions) { assertEquals(instructions.size(), code.instructions.length); for (int i = 0; i < instructions.size(); ++i) { assertEquals("Unexpected instruction at index " + i, @@ -1552,8 +1552,8 @@ } } - protected Stream<Instruction> filterInstructionKind( - DexCode dexCode, Class<? extends Instruction> kind) { + protected Stream<DexInstruction> filterInstructionKind( + DexCode dexCode, Class<? extends DexInstruction> kind) { return Arrays.stream(dexCode.instructions) .filter(kind::isInstance) .map(kind::cast);
diff --git a/src/test/java/com/android/tools/r8/accessrelaxation/InvokeTypeConversionTest.java b/src/test/java/com/android/tools/r8/accessrelaxation/InvokeTypeConversionTest.java index 8a91c84..c80de82 100644 --- a/src/test/java/com/android/tools/r8/accessrelaxation/InvokeTypeConversionTest.java +++ b/src/test/java/com/android/tools/r8/accessrelaxation/InvokeTypeConversionTest.java
@@ -13,8 +13,8 @@ import com.android.tools.r8.TestParameters; import com.android.tools.r8.TestParametersCollection; import com.android.tools.r8.ToolHelper.DexVm.Version; -import com.android.tools.r8.code.InvokeDirect; -import com.android.tools.r8.code.InvokeVirtual; +import com.android.tools.r8.dex.code.DexInvokeDirect; +import com.android.tools.r8.dex.code.DexInvokeVirtual; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexEncodedMethod; import com.android.tools.r8.smali.SmaliBuilder; @@ -111,15 +111,18 @@ parameters.getRuntime().asDex().getVm().getVersion().isOlderThanOrEqual(Version.V4_4_4) ? "VerifyError" : "IncompatibleClassChangeError"; - run(builder, expectedError, dexInspector -> { - ClassSubject clazz = dexInspector.clazz(CLASS_NAME); - assertThat(clazz, isPresent()); - DexEncodedMethod method = getMethod(dexInspector, main); - assertNotNull(method); - DexCode code = method.getCode().asDexCode(); - // The given invoke line is remained as-is. - assertTrue(code.instructions[2] instanceof InvokeDirect); - }); + run( + builder, + expectedError, + dexInspector -> { + ClassSubject clazz = dexInspector.clazz(CLASS_NAME); + assertThat(clazz, isPresent()); + DexEncodedMethod method = getMethod(dexInspector, main); + assertNotNull(method); + DexCode code = method.getCode().asDexCode(); + // The given invoke line is remained as-is. + assertTrue(code.instructions[2] instanceof DexInvokeDirect); + }); } // The following test checks invoke-direct, which refers to the private instance method, *is* @@ -139,15 +142,18 @@ public void invokeDirectToPublicizedMethod() throws Exception { SmaliBuilder builder = buildTestClass( "invoke-direct { v1 }, L" + CLASS_NAME + ";->foo()I"); - run(builder, null, dexInspector -> { - ClassSubject clazz = dexInspector.clazz(CLASS_NAME); - assertThat(clazz, isPresent()); - DexEncodedMethod method = getMethod(dexInspector, main); - assertNotNull(method); - DexCode code = method.getCode().asDexCode(); - // The given invoke line is changed to invoke-virtual - assertTrue(code.instructions[2] instanceof InvokeVirtual); - }); + run( + builder, + null, + dexInspector -> { + ClassSubject clazz = dexInspector.clazz(CLASS_NAME); + assertThat(clazz, isPresent()); + DexEncodedMethod method = getMethod(dexInspector, main); + assertNotNull(method); + DexCode code = method.getCode().asDexCode(); + // The given invoke line is changed to invoke-virtual + assertTrue(code.instructions[2] instanceof DexInvokeVirtual); + }); } } \ No newline at end of file
diff --git a/src/test/java/com/android/tools/r8/bridgeremoval/B77836766.java b/src/test/java/com/android/tools/r8/bridgeremoval/B77836766.java index fb4f27e..57c41a8 100644 --- a/src/test/java/com/android/tools/r8/bridgeremoval/B77836766.java +++ b/src/test/java/com/android/tools/r8/bridgeremoval/B77836766.java
@@ -12,8 +12,8 @@ import com.android.tools.r8.TestBase; import com.android.tools.r8.TestParameters; import com.android.tools.r8.TestParametersCollection; -import com.android.tools.r8.code.InvokeVirtual; -import com.android.tools.r8.code.ReturnVoid; +import com.android.tools.r8.dex.code.DexInvokeVirtual; +import com.android.tools.r8.dex.code.DexReturnVoid; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.jasmin.JasminBuilder; import com.android.tools.r8.jasmin.JasminBuilder.ClassBuilder; @@ -180,13 +180,15 @@ if (parameters.isDexRuntime()) { DexCode code = fooFromCls2InAbsCls.getMethod().getCode().asDexCode(); - checkInstructions(code, ImmutableList.of(InvokeVirtual.class, ReturnVoid.class)); - InvokeVirtual invoke = (InvokeVirtual) code.instructions[0]; + checkInstructions( + code, ImmutableList.of(DexInvokeVirtual.class, DexReturnVoid.class)); + DexInvokeVirtual invoke = (DexInvokeVirtual) code.instructions[0]; assertEquals(absSubject.getDexProgramClass().type, invoke.getMethod().holder); code = fooFromCls1InAbsCls.getMethod().getCode().asDexCode(); - checkInstructions(code, ImmutableList.of(InvokeVirtual.class, ReturnVoid.class)); - invoke = (InvokeVirtual) code.instructions[0]; + checkInstructions( + code, ImmutableList.of(DexInvokeVirtual.class, DexReturnVoid.class)); + invoke = (DexInvokeVirtual) code.instructions[0]; assertEquals(absSubject.getDexProgramClass().type, invoke.getMethod().holder); } }) @@ -304,13 +306,15 @@ if (parameters.isDexRuntime()) { DexCode code = barInCls2.getMethod().getCode().asDexCode(); - checkInstructions(code, ImmutableList.of(InvokeVirtual.class, ReturnVoid.class)); - InvokeVirtual invoke = (InvokeVirtual) code.instructions[0]; + checkInstructions( + code, ImmutableList.of(DexInvokeVirtual.class, DexReturnVoid.class)); + DexInvokeVirtual invoke = (DexInvokeVirtual) code.instructions[0]; assertEquals(baseSubject.getDexProgramClass().type, invoke.getMethod().holder); code = fooInBase.getMethod().getCode().asDexCode(); - checkInstructions(code, ImmutableList.of(InvokeVirtual.class, ReturnVoid.class)); - invoke = (InvokeVirtual) code.instructions[0]; + checkInstructions( + code, ImmutableList.of(DexInvokeVirtual.class, DexReturnVoid.class)); + invoke = (DexInvokeVirtual) code.instructions[0]; assertEquals(baseSubject.getDexProgramClass().type, invoke.getMethod().holder); } }) @@ -405,8 +409,9 @@ if (parameters.isDexRuntime()) { DexCode code = barInSub.getMethod().getCode().asDexCode(); - checkInstructions(code, ImmutableList.of(InvokeVirtual.class, ReturnVoid.class)); - InvokeVirtual invoke = (InvokeVirtual) code.instructions[0]; + checkInstructions( + code, ImmutableList.of(DexInvokeVirtual.class, DexReturnVoid.class)); + DexInvokeVirtual invoke = (DexInvokeVirtual) code.instructions[0]; assertEquals(baseSubject.getDexProgramClass().type, invoke.getMethod().holder); } }) @@ -491,8 +496,9 @@ if (parameters.isDexRuntime()) { DexCode code = barInSub.getMethod().getCode().asDexCode(); - checkInstructions(code, ImmutableList.of(InvokeVirtual.class, ReturnVoid.class)); - InvokeVirtual invoke = (InvokeVirtual) code.instructions[0]; + checkInstructions( + code, ImmutableList.of(DexInvokeVirtual.class, DexReturnVoid.class)); + DexInvokeVirtual invoke = (DexInvokeVirtual) code.instructions[0]; assertEquals(baseSubject.getDexProgramClass().type, invoke.getMethod().holder); } })
diff --git a/src/test/java/com/android/tools/r8/code/InstructionFactoryTest.java b/src/test/java/com/android/tools/r8/code/InstructionFactoryTest.java index a1cfe7b..3476df7 100644 --- a/src/test/java/com/android/tools/r8/code/InstructionFactoryTest.java +++ b/src/test/java/com/android/tools/r8/code/InstructionFactoryTest.java
@@ -5,6 +5,8 @@ import static org.junit.Assert.assertTrue; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInstructionFactory; import com.android.tools.r8.graph.OffsetToObjectMapping; import java.nio.ByteBuffer; import org.junit.Test; @@ -17,8 +19,8 @@ @Test public void emptyBuffer() { ByteBuffer emptyBuffer = ByteBuffer.allocate(0); - InstructionFactory factory = new InstructionFactory(); - Instruction[] instructions = + DexInstructionFactory factory = new DexInstructionFactory(); + DexInstruction[] instructions = factory.readSequenceFrom(emptyBuffer.asShortBuffer(), 0, 0, new OffsetToObjectMapping()); assertTrue(instructions.length == 0); }
diff --git a/src/test/java/com/android/tools/r8/compatproguard/AtomicFieldUpdaterTest.java b/src/test/java/com/android/tools/r8/compatproguard/AtomicFieldUpdaterTest.java index 2521e02..3d3aecc 100644 --- a/src/test/java/com/android/tools/r8/compatproguard/AtomicFieldUpdaterTest.java +++ b/src/test/java/com/android/tools/r8/compatproguard/AtomicFieldUpdaterTest.java
@@ -6,10 +6,10 @@ import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; -import com.android.tools.r8.code.ConstClass; -import com.android.tools.r8.code.ConstString; -import com.android.tools.r8.code.InvokeStatic; -import com.android.tools.r8.code.ReturnVoid; +import com.android.tools.r8.dex.code.DexConstClass; +import com.android.tools.r8.dex.code.DexConstString; +import com.android.tools.r8.dex.code.DexInvokeStatic; +import com.android.tools.r8.dex.code.DexReturnVoid; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.smali.SmaliBuilder; import com.android.tools.r8.utils.codeinspector.ClassSubject; @@ -52,12 +52,12 @@ assertTrue(method.isPresent()); DexCode code = method.getMethod().getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof ConstClass); - assertTrue(code.instructions[1] instanceof ConstString); - ConstString constString = (ConstString) code.instructions[1]; + assertTrue(code.instructions[0] instanceof DexConstClass); + assertTrue(code.instructions[1] instanceof DexConstString); + DexConstString constString = (DexConstString) code.instructions[1]; assertNotEquals("foo", constString.getString().toString()); - assertTrue(code.instructions[2] instanceof InvokeStatic); - assertTrue(code.instructions[3] instanceof ReturnVoid); + assertTrue(code.instructions[2] instanceof DexInvokeStatic); + assertTrue(code.instructions[3] instanceof DexReturnVoid); } @Test @@ -88,12 +88,12 @@ assertTrue(method.isPresent()); DexCode code = method.getMethod().getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof ConstClass); - assertTrue(code.instructions[1] instanceof ConstString); - ConstString constString = (ConstString) code.instructions[1]; + assertTrue(code.instructions[0] instanceof DexConstClass); + assertTrue(code.instructions[1] instanceof DexConstString); + DexConstString constString = (DexConstString) code.instructions[1]; assertNotEquals("foo", constString.getString().toString()); - assertTrue(code.instructions[2] instanceof InvokeStatic); - assertTrue(code.instructions[3] instanceof ReturnVoid); + assertTrue(code.instructions[2] instanceof DexInvokeStatic); + assertTrue(code.instructions[3] instanceof DexReturnVoid); } @Test @@ -125,12 +125,12 @@ assertTrue(method.isPresent()); DexCode code = method.getMethod().getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof ConstClass); - assertTrue(code.instructions[1] instanceof ConstClass); - assertTrue(code.instructions[2] instanceof ConstString); - ConstString constString = (ConstString) code.instructions[2]; + assertTrue(code.instructions[0] instanceof DexConstClass); + assertTrue(code.instructions[1] instanceof DexConstClass); + assertTrue(code.instructions[2] instanceof DexConstString); + DexConstString constString = (DexConstString) code.instructions[2]; assertNotEquals("foo", constString.getString().toString()); - assertTrue(code.instructions[3] instanceof InvokeStatic); - assertTrue(code.instructions[4] instanceof ReturnVoid); + assertTrue(code.instructions[3] instanceof DexInvokeStatic); + assertTrue(code.instructions[4] instanceof DexReturnVoid); } }
diff --git a/src/test/java/com/android/tools/r8/compatproguard/ForNameTest.java b/src/test/java/com/android/tools/r8/compatproguard/ForNameTest.java index b79721f..a5a9f0a1 100644 --- a/src/test/java/com/android/tools/r8/compatproguard/ForNameTest.java +++ b/src/test/java/com/android/tools/r8/compatproguard/ForNameTest.java
@@ -7,9 +7,9 @@ import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; -import com.android.tools.r8.code.ConstString; -import com.android.tools.r8.code.InvokeStatic; -import com.android.tools.r8.code.ReturnVoid; +import com.android.tools.r8.dex.code.DexConstString; +import com.android.tools.r8.dex.code.DexInvokeStatic; +import com.android.tools.r8.dex.code.DexReturnVoid; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.smali.SmaliBuilder; import com.android.tools.r8.utils.AndroidApiLevel; @@ -52,11 +52,11 @@ assertTrue(method.isPresent()); DexCode code = method.getMethod().getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof ConstString); - ConstString constString = (ConstString) code.instructions[0]; + assertTrue(code.instructions[0] instanceof DexConstString); + DexConstString constString = (DexConstString) code.instructions[0]; assertNotEquals(BOO, constString.getString().toString()); - assertTrue(code.instructions[1] instanceof InvokeStatic); - assertTrue(code.instructions[2] instanceof ReturnVoid); + assertTrue(code.instructions[1] instanceof DexInvokeStatic); + assertTrue(code.instructions[2] instanceof DexReturnVoid); } @Test @@ -88,11 +88,11 @@ assertTrue(method.isPresent()); DexCode code = method.getMethod().getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof ConstString); - ConstString constString = (ConstString) code.instructions[0]; + assertTrue(code.instructions[0] instanceof DexConstString); + DexConstString constString = (DexConstString) code.instructions[0]; assertEquals(BOO, constString.getString().toString()); - assertTrue(code.instructions[1] instanceof InvokeStatic); - assertTrue(code.instructions[2] instanceof ReturnVoid); + assertTrue(code.instructions[1] instanceof DexInvokeStatic); + assertTrue(code.instructions[2] instanceof DexReturnVoid); } }
diff --git a/src/test/java/com/android/tools/r8/compatproguard/GetMembersTest.java b/src/test/java/com/android/tools/r8/compatproguard/GetMembersTest.java index 5771019..7a30afd 100644 --- a/src/test/java/com/android/tools/r8/compatproguard/GetMembersTest.java +++ b/src/test/java/com/android/tools/r8/compatproguard/GetMembersTest.java
@@ -6,13 +6,13 @@ import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; -import com.android.tools.r8.code.AputObject; -import com.android.tools.r8.code.Const4; -import com.android.tools.r8.code.ConstClass; -import com.android.tools.r8.code.ConstString; -import com.android.tools.r8.code.InvokeVirtual; -import com.android.tools.r8.code.NewArray; -import com.android.tools.r8.code.ReturnVoid; +import com.android.tools.r8.dex.code.DexAputObject; +import com.android.tools.r8.dex.code.DexConst4; +import com.android.tools.r8.dex.code.DexConstClass; +import com.android.tools.r8.dex.code.DexConstString; +import com.android.tools.r8.dex.code.DexInvokeVirtual; +import com.android.tools.r8.dex.code.DexNewArray; +import com.android.tools.r8.dex.code.DexReturnVoid; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.smali.SmaliBuilder; import com.android.tools.r8.utils.codeinspector.ClassSubject; @@ -53,12 +53,12 @@ assertTrue(method.isPresent()); DexCode code = method.getMethod().getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof ConstClass); - assertTrue(code.instructions[1] instanceof ConstString); - ConstString constString = (ConstString) code.instructions[1]; + assertTrue(code.instructions[0] instanceof DexConstClass); + assertTrue(code.instructions[1] instanceof DexConstString); + DexConstString constString = (DexConstString) code.instructions[1]; assertNotEquals("foo", constString.getString().toString()); - assertTrue(code.instructions[2] instanceof InvokeVirtual); - assertTrue(code.instructions[3] instanceof ReturnVoid); + assertTrue(code.instructions[2] instanceof DexInvokeVirtual); + assertTrue(code.instructions[3] instanceof DexReturnVoid); } @Test @@ -93,17 +93,17 @@ assertTrue(method.isPresent()); DexCode code = method.getMethod().getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof ConstClass); - assertTrue(code.instructions[1] instanceof Const4); - assertTrue(code.instructions[2] instanceof NewArray); - assertTrue(code.instructions[3] instanceof Const4); - assertTrue(code.instructions[4] instanceof AputObject); - assertTrue(code.instructions[5] instanceof ConstClass); - assertTrue(code.instructions[6] instanceof ConstString); - ConstString constString = (ConstString) code.instructions[6]; + assertTrue(code.instructions[0] instanceof DexConstClass); + assertTrue(code.instructions[1] instanceof DexConst4); + assertTrue(code.instructions[2] instanceof DexNewArray); + assertTrue(code.instructions[3] instanceof DexConst4); + assertTrue(code.instructions[4] instanceof DexAputObject); + assertTrue(code.instructions[5] instanceof DexConstClass); + assertTrue(code.instructions[6] instanceof DexConstString); + DexConstString constString = (DexConstString) code.instructions[6]; assertNotEquals("foo", constString.getString().toString()); - assertTrue(code.instructions[7] instanceof InvokeVirtual); - assertTrue(code.instructions[8] instanceof ReturnVoid); + assertTrue(code.instructions[7] instanceof DexInvokeVirtual); + assertTrue(code.instructions[8] instanceof DexReturnVoid); } }
diff --git a/src/test/java/com/android/tools/r8/debug/SmaliDebugTest.java b/src/test/java/com/android/tools/r8/debug/SmaliDebugTest.java index a275033..1f41abc 100644 --- a/src/test/java/com/android/tools/r8/debug/SmaliDebugTest.java +++ b/src/test/java/com/android/tools/r8/debug/SmaliDebugTest.java
@@ -7,9 +7,9 @@ import static org.junit.Assert.assertTrue; import com.android.tools.r8.ToolHelper; -import com.android.tools.r8.code.IfEqz; -import com.android.tools.r8.code.Instruction; import com.android.tools.r8.debuginfo.DebugInfoInspector; +import com.android.tools.r8.dex.code.DexIfEqz; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.graph.DexDebugEntry; import com.android.tools.r8.naming.MemberNaming.MethodSignature; import com.android.tools.r8.smali.SmaliBuilder; @@ -111,10 +111,10 @@ AndroidApp.builder().addProgramFiles(outs).build(), CLASS, new MethodSignature(methodName, "int", new String[] {"int"})); - IfEqz cond = null; - for (Instruction instruction : info.getMethod().getCode().asDexCode().instructions) { - if (instruction.getOpcode() == IfEqz.OPCODE) { - cond = (IfEqz) instruction; + DexIfEqz cond = null; + for (DexInstruction instruction : info.getMethod().getCode().asDexCode().instructions) { + if (instruction.getOpcode() == DexIfEqz.OPCODE) { + cond = (DexIfEqz) instruction; break; } }
diff --git a/src/test/java/com/android/tools/r8/debuginfo/CodeGeneratorTestRunner.java b/src/test/java/com/android/tools/r8/debuginfo/CodeGeneratorTestRunner.java index 1f6520e..1ac5aff 100644 --- a/src/test/java/com/android/tools/r8/debuginfo/CodeGeneratorTestRunner.java +++ b/src/test/java/com/android/tools/r8/debuginfo/CodeGeneratorTestRunner.java
@@ -6,10 +6,10 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import com.android.tools.r8.code.AddInt; -import com.android.tools.r8.code.AddInt2Addr; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.Return; +import com.android.tools.r8.dex.code.DexAddInt; +import com.android.tools.r8.dex.code.DexAddInt2Addr; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexReturn; import com.android.tools.r8.utils.AndroidApp; import org.junit.Test; @@ -31,11 +31,11 @@ DebugInfoInspector inspector = inspectMethod(d8App, clazz, "int", "intAddition", "int", "int", "int"); - Instruction[] instructions = inspector.getMethod().getCode().asDexCode().instructions; - assertTrue(instructions[0] instanceof AddInt2Addr); - assertTrue(instructions[1] instanceof AddInt2Addr); - assertTrue(instructions[2] instanceof AddInt); - assertTrue(instructions[3] instanceof Return); + DexInstruction[] instructions = inspector.getMethod().getCode().asDexCode().instructions; + assertTrue(instructions[0] instanceof DexAddInt2Addr); + assertTrue(instructions[1] instanceof DexAddInt2Addr); + assertTrue(instructions[2] instanceof DexAddInt); + assertTrue(instructions[3] instanceof DexReturn); } }
diff --git a/src/test/java/com/android/tools/r8/debuginfo/Regress111337896TestRunner.java b/src/test/java/com/android/tools/r8/debuginfo/Regress111337896TestRunner.java index be25d4a..f144498 100644 --- a/src/test/java/com/android/tools/r8/debuginfo/Regress111337896TestRunner.java +++ b/src/test/java/com/android/tools/r8/debuginfo/Regress111337896TestRunner.java
@@ -9,8 +9,8 @@ import com.android.tools.r8.D8; import com.android.tools.r8.D8Command; import com.android.tools.r8.ToolHelper; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.Nop; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexNop; import com.android.tools.r8.utils.AndroidApiLevel; import com.android.tools.r8.utils.AndroidApp; import com.android.tools.r8.utils.AndroidAppConsumers; @@ -51,8 +51,8 @@ info.checkStartLine(12); assertEquals(1, info.checkLineExists(18)); int nopsFound = 0; - for (Instruction instruction : info.getMethod().getCode().asDexCode().instructions) { - if (instruction instanceof Nop) { + for (DexInstruction instruction : info.getMethod().getCode().asDexCode().instructions) { + if (instruction instanceof DexNop) { nopsFound++; } } @@ -103,8 +103,8 @@ info.checkStartLine(11); assertEquals(1, info.checkLineExists(13)); int nopsFound = 0; - for (Instruction instruction : info.getMethod().getCode().asDexCode().instructions) { - if (instruction instanceof Nop) { + for (DexInstruction instruction : info.getMethod().getCode().asDexCode().instructions) { + if (instruction instanceof DexNop) { nopsFound++; } }
diff --git a/src/test/java/com/android/tools/r8/debuginfo/Regress216178582Test.java b/src/test/java/com/android/tools/r8/debuginfo/Regress216178582Test.java index ac4be8c..92a8a3d 100644 --- a/src/test/java/com/android/tools/r8/debuginfo/Regress216178582Test.java +++ b/src/test/java/com/android/tools/r8/debuginfo/Regress216178582Test.java
@@ -10,7 +10,7 @@ import com.android.tools.r8.TestBase; import com.android.tools.r8.TestParameters; import com.android.tools.r8.TestParametersCollection; -import com.android.tools.r8.code.Instruction; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexDebugEntry; import com.android.tools.r8.graph.DexDebugEntryBuilder; @@ -68,7 +68,7 @@ new DexDebugEntryBuilder(method, inspector.getFactory()).build(); Iterator<DexDebugEntry> it = entries.iterator(); int pc = 0; - for (Instruction instruction : code.instructions) { + for (DexInstruction instruction : code.instructions) { if (instruction.canThrow()) { DexDebugEntry next = it.next(); assertEquals(
diff --git a/src/test/java/com/android/tools/r8/desugar/DesugarToClassFileBackport.java b/src/test/java/com/android/tools/r8/desugar/DesugarToClassFileBackport.java index 2297f3f..9444833 100644 --- a/src/test/java/com/android/tools/r8/desugar/DesugarToClassFileBackport.java +++ b/src/test/java/com/android/tools/r8/desugar/DesugarToClassFileBackport.java
@@ -13,8 +13,8 @@ import com.android.tools.r8.cf.code.CfArithmeticBinop; import com.android.tools.r8.cf.code.CfArithmeticBinop.Opcode; import com.android.tools.r8.cf.code.CfInstruction; -import com.android.tools.r8.code.AddLong2Addr; -import com.android.tools.r8.code.Instruction; +import com.android.tools.r8.dex.code.DexAddLong2Addr; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.graph.CfCode; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.ir.code.NumericType; @@ -47,8 +47,8 @@ && (((CfArithmeticBinop) instruction).getType() == NumericType.LONG); } - private boolean isDexAddLong(Instruction instruction) { - return instruction instanceof AddLong2Addr; + private boolean isDexAddLong(DexInstruction instruction) { + return instruction instanceof DexAddLong2Addr; } private boolean boxedDoubleIsFiniteInvoke(InstructionSubject instruction) {
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/EmulatedInterfacesTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/EmulatedInterfacesTest.java index 64ee893..1ca61c5 100644 --- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/EmulatedInterfacesTest.java +++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/EmulatedInterfacesTest.java
@@ -15,9 +15,9 @@ import static org.hamcrest.MatcherAssert.assertThat; import com.android.tools.r8.TestParameters; -import com.android.tools.r8.code.Instruction; import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification; import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.graph.DexClass; import com.android.tools.r8.graph.DexEncodedMethod; import com.android.tools.r8.utils.codeinspector.CodeInspector; @@ -101,7 +101,7 @@ int numCheckCast = (int) Stream.of(method.getCode().asDexCode().instructions) - .filter(Instruction::isCheckCast) + .filter(DexInstruction::isCheckCast) .count(); if (method.qualifiedName().contains("spliterator")) { assertEquals(5, numCheckCast);
diff --git a/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java b/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java index ce5a517..bf49805 100644 --- a/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java +++ b/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java
@@ -7,16 +7,16 @@ import com.android.tools.r8.TestBase; import com.android.tools.r8.ToolHelper; -import com.android.tools.r8.code.Const4; -import com.android.tools.r8.code.ConstString; -import com.android.tools.r8.code.ConstStringJumbo; -import com.android.tools.r8.code.Goto32; -import com.android.tools.r8.code.IfEq; -import com.android.tools.r8.code.IfEqz; -import com.android.tools.r8.code.IfNe; -import com.android.tools.r8.code.IfNez; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.ReturnVoid; +import com.android.tools.r8.dex.code.DexConst4; +import com.android.tools.r8.dex.code.DexConstString; +import com.android.tools.r8.dex.code.DexConstStringJumbo; +import com.android.tools.r8.dex.code.DexGoto32; +import com.android.tools.r8.dex.code.DexIfEq; +import com.android.tools.r8.dex.code.DexIfEqz; +import com.android.tools.r8.dex.code.DexIfNe; +import com.android.tools.r8.dex.code.DexIfNez; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexReturnVoid; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexCode.Try; import com.android.tools.r8.graph.DexCode.TryHandler; @@ -42,15 +42,15 @@ public void branching() { DexItemFactory factory = new DexItemFactory(); DexString string = factory.createString("turn into jumbo"); - Instruction[] instructions = buildInstructions(string, false); + DexInstruction[] instructions = buildInstructions(string, false); DexCode code = jumboStringProcess(factory, string, instructions); - Instruction[] rewrittenInstructions = code.instructions; - assert rewrittenInstructions[1] instanceof IfEq; - IfEq condition = (IfEq) rewrittenInstructions[1]; + DexInstruction[] rewrittenInstructions = code.instructions; + assert rewrittenInstructions[1] instanceof DexIfEq; + DexIfEq condition = (DexIfEq) rewrittenInstructions[1]; assert condition.getOffset() + condition.CCCC == rewrittenInstructions[3].getOffset(); - assert rewrittenInstructions[2] instanceof Goto32; - Goto32 jump = (Goto32) rewrittenInstructions[2]; - Instruction lastInstruction = rewrittenInstructions[rewrittenInstructions.length - 1]; + assert rewrittenInstructions[2] instanceof DexGoto32; + DexGoto32 jump = (DexGoto32) rewrittenInstructions[2]; + DexInstruction lastInstruction = rewrittenInstructions[rewrittenInstructions.length - 1]; assert jump.getOffset() + jump.AAAAAAAA == lastInstruction.getOffset(); } @@ -58,58 +58,58 @@ public void branching2() { DexItemFactory factory = new DexItemFactory(); DexString string = factory.createString("turn into jumbo"); - Instruction[] instructions = buildInstructions(string, true); + DexInstruction[] instructions = buildInstructions(string, true); DexCode code = jumboStringProcess(factory, string, instructions); - Instruction[] rewrittenInstructions = code.instructions; - assert rewrittenInstructions[1] instanceof IfEqz; - IfEqz condition = (IfEqz) rewrittenInstructions[1]; + DexInstruction[] rewrittenInstructions = code.instructions; + assert rewrittenInstructions[1] instanceof DexIfEqz; + DexIfEqz condition = (DexIfEqz) rewrittenInstructions[1]; assert condition.getOffset() + condition.BBBB == rewrittenInstructions[3].getOffset(); - assert rewrittenInstructions[2] instanceof Goto32; - Goto32 jump = (Goto32) rewrittenInstructions[2]; - Instruction lastInstruction = rewrittenInstructions[rewrittenInstructions.length - 1]; + assert rewrittenInstructions[2] instanceof DexGoto32; + DexGoto32 jump = (DexGoto32) rewrittenInstructions[2]; + DexInstruction lastInstruction = rewrittenInstructions[rewrittenInstructions.length - 1]; assert jump.getOffset() + jump.AAAAAAAA == lastInstruction.getOffset(); } - private Instruction[] buildInstructions(DexString string, boolean zeroCondition) { - List<Instruction> instructions = new ArrayList<>(); + private DexInstruction[] buildInstructions(DexString string, boolean zeroCondition) { + List<DexInstruction> instructions = new ArrayList<>(); int offset = 0; - Instruction instr = new Const4(0, 0); + DexInstruction instr = new DexConst4(0, 0); instr.setOffset(offset); instructions.add(instr); offset += instr.getSize(); int lastInstructionOffset = 15000 * 2 + 2 + offset; if (zeroCondition) { - instr = new IfNez(0, lastInstructionOffset - offset); + instr = new DexIfNez(0, lastInstructionOffset - offset); } else { - instr = new IfNe(0, 0, lastInstructionOffset - offset); + instr = new DexIfNe(0, 0, lastInstructionOffset - offset); } instr.setOffset(offset); instructions.add(instr); offset += instr.getSize(); for (int i = 0; i < 15000; i++) { - instr = new ConstString(0, string); + instr = new DexConstString(0, string); instr.setOffset(offset); instructions.add(instr); offset += instr.getSize(); } - instr = new ReturnVoid(); + instr = new DexReturnVoid(); instr.setOffset(offset); instructions.add(instr); assert instr.getOffset() == lastInstructionOffset; - return instructions.toArray(Instruction.EMPTY_ARRAY); + return instructions.toArray(DexInstruction.EMPTY_ARRAY); } - private int countJumboStrings(Instruction[] instructions) { + private int countJumboStrings(DexInstruction[] instructions) { int count = 0; - for (Instruction instruction : instructions) { - count += instruction instanceof ConstStringJumbo ? 1 : 0; + for (DexInstruction instruction : instructions) { + count += instruction instanceof DexConstStringJumbo ? 1 : 0; } return count; } - private int countSimpleNops(Instruction[] instructions) { + private int countSimpleNops(DexInstruction[] instructions) { int count = 0; - for (Instruction instruction : instructions) { + for (DexInstruction instruction : instructions) { count += instruction.isSimpleNop() ? 1 : 0; } return count; @@ -135,20 +135,20 @@ "getDataBinder", ImmutableList.of( "android.databinding.DataBindingComponent", "android.view.View", "int")); - Instruction[] instructions = method.getDefinition().getCode().asDexCode().instructions; + DexInstruction[] instructions = method.getDefinition().getCode().asDexCode().instructions; assertEquals(0, countJumboStrings(instructions)); assertEquals(1, countSimpleNops(instructions)); DexItemFactory factory = inspector.getFactory(); DexString string = factory.createString("view must have a tag"); DexCode code = jumboStringProcess(factory, string, instructions); - Instruction[] rewrittenInstructions = code.instructions; + DexInstruction[] rewrittenInstructions = code.instructions; assertEquals(289, countJumboStrings(rewrittenInstructions)); assertEquals(0, countSimpleNops(rewrittenInstructions)); } private DexCode jumboStringProcess( - DexItemFactory factory, DexString string, Instruction[] instructions) { + DexItemFactory factory, DexString string, DexInstruction[] instructions) { DexCode code = new DexCode(1, 0, 0, instructions, new Try[0], new TryHandler[0], null); MethodAccessFlags flags = MethodAccessFlags.fromSharedAccessFlags(Constants.ACC_PUBLIC, false); DexEncodedMethod method =
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/checkcast/RemoveCheckCastAfterClassInlining.java b/src/test/java/com/android/tools/r8/ir/optimize/checkcast/RemoveCheckCastAfterClassInlining.java index 7a44d53..53d28eb 100644 --- a/src/test/java/com/android/tools/r8/ir/optimize/checkcast/RemoveCheckCastAfterClassInlining.java +++ b/src/test/java/com/android/tools/r8/ir/optimize/checkcast/RemoveCheckCastAfterClassInlining.java
@@ -14,7 +14,7 @@ import com.android.tools.r8.TestBase; import com.android.tools.r8.TestParameters; import com.android.tools.r8.TestParametersCollection; -import com.android.tools.r8.code.Instruction; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexEncodedMethod; import com.android.tools.r8.utils.codeinspector.ClassSubject; @@ -58,7 +58,7 @@ DexCode code = method.getCode().asDexCode(); int numberOfConstStringInstructions = 0; - for (Instruction instruction : code.instructions) { + for (DexInstruction instruction : code.instructions) { // Make sure that we do not load a const-string and then subsequently use a check-cast // instruction to check if it is actually a string. assertFalse(instruction.isCheckCast());
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/outliner/b111893131/B111893131.java b/src/test/java/com/android/tools/r8/ir/optimize/outliner/b111893131/B111893131.java index f19dea9..7ba5906 100644 --- a/src/test/java/com/android/tools/r8/ir/optimize/outliner/b111893131/B111893131.java +++ b/src/test/java/com/android/tools/r8/ir/optimize/outliner/b111893131/B111893131.java
@@ -14,8 +14,8 @@ import com.android.tools.r8.TestBase; import com.android.tools.r8.ToolHelper; import com.android.tools.r8.ToolHelper.ProcessResult; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.InvokeVirtual; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeVirtual; import com.android.tools.r8.graph.Code; import com.android.tools.r8.graph.DexClass; import com.android.tools.r8.graph.DexCode; @@ -98,10 +98,10 @@ }); } - private void verifyAbsenceOfStringBuilderAppend(Instruction[] instructions) { - for (Instruction instr : instructions) { - if (instr instanceof InvokeVirtual) { - InvokeVirtual invokeVirtual = (InvokeVirtual) instr; + private void verifyAbsenceOfStringBuilderAppend(DexInstruction[] instructions) { + for (DexInstruction instr : instructions) { + if (instr instanceof DexInvokeVirtual) { + DexInvokeVirtual invokeVirtual = (DexInvokeVirtual) instr; DexMethod invokedMethod = invokeVirtual.getMethod(); if (invokedMethod.holder.getName().endsWith("StringBuilder")) { assertNotEquals("append", invokedMethod.name.toString());
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java index 7688f9b..9cd0f5f 100644 --- a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java +++ b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java
@@ -18,12 +18,12 @@ import com.android.tools.r8.TestBase; import com.android.tools.r8.TestParameters; import com.android.tools.r8.TestParametersCollection; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.InvokeDirect; -import com.android.tools.r8.code.InvokeStatic; -import com.android.tools.r8.code.InvokeVirtual; -import com.android.tools.r8.code.SgetObject; -import com.android.tools.r8.code.SputObject; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeDirect; +import com.android.tools.r8.dex.code.DexInvokeStatic; +import com.android.tools.r8.dex.code.DexInvokeVirtual; +import com.android.tools.r8.dex.code.DexSgetObject; +import com.android.tools.r8.dex.code.DexSputObject; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.DexType; @@ -358,29 +358,29 @@ MethodSignature signature = new MethodSignature(methodName, retValue, params); DexCode code = clazz.method(signature).getMethod().getCode().asDexCode(); return Streams.concat( - filterInstructionKind(code, SgetObject.class) - .map(Instruction::getField) - .filter(fld -> isTypeOfInterest(fld.holder)) - .map(DexField::toSourceString), - filterInstructionKind(code, SputObject.class) - .map(Instruction::getField) - .filter(fld -> isTypeOfInterest(fld.holder)) - .map(DexField::toSourceString), - filterInstructionKind(code, InvokeStatic.class) - .map(insn -> (InvokeStatic) insn) - .map(InvokeStatic::getMethod) - .filter(method -> isTypeOfInterest(method.holder)) - .map(method -> "STATIC: " + method.toSourceString()), - filterInstructionKind(code, InvokeVirtual.class) - .map(insn -> (InvokeVirtual) insn) - .map(InvokeVirtual::getMethod) - .filter(method -> isTypeOfInterest(method.holder)) - .map(method -> "VIRTUAL: " + method.toSourceString()), - filterInstructionKind(code, InvokeDirect.class) - .map(insn -> (InvokeDirect) insn) - .map(InvokeDirect::getMethod) - .filter(method -> isTypeOfInterest(method.holder)) - .map(method -> "DIRECT: " + method.toSourceString())) + filterInstructionKind(code, DexSgetObject.class) + .map(DexInstruction::getField) + .filter(fld -> isTypeOfInterest(fld.holder)) + .map(DexField::toSourceString), + filterInstructionKind(code, DexSputObject.class) + .map(DexInstruction::getField) + .filter(fld -> isTypeOfInterest(fld.holder)) + .map(DexField::toSourceString), + filterInstructionKind(code, DexInvokeStatic.class) + .map(insn -> (DexInvokeStatic) insn) + .map(DexInvokeStatic::getMethod) + .filter(method -> isTypeOfInterest(method.holder)) + .map(method -> "STATIC: " + method.toSourceString()), + filterInstructionKind(code, DexInvokeVirtual.class) + .map(insn -> (DexInvokeVirtual) insn) + .map(DexInvokeVirtual::getMethod) + .filter(method -> isTypeOfInterest(method.holder)) + .map(method -> "VIRTUAL: " + method.toSourceString()), + filterInstructionKind(code, DexInvokeDirect.class) + .map(insn -> (DexInvokeDirect) insn) + .map(DexInvokeDirect::getMethod) + .filter(method -> isTypeOfInterest(method.holder)) + .map(method -> "DIRECT: " + method.toSourceString())) .map(txt -> txt.replace("java.lang.", "")) .map(txt -> txt.replace("com.android.tools.r8.ir.optimize.staticizer.trivial.", "")) .map(txt -> txt.replace("com.android.tools.r8.ir.optimize.staticizer.", ""))
diff --git a/src/test/java/com/android/tools/r8/kotlin/KotlinClassInlinerTest.java b/src/test/java/com/android/tools/r8/kotlin/KotlinClassInlinerTest.java index 12fe431..b7fe293 100644 --- a/src/test/java/com/android/tools/r8/kotlin/KotlinClassInlinerTest.java +++ b/src/test/java/com/android/tools/r8/kotlin/KotlinClassInlinerTest.java
@@ -20,9 +20,9 @@ import com.android.tools.r8.TestParameters; import com.android.tools.r8.cf.code.CfInstruction; import com.android.tools.r8.cf.code.CfNew; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.NewInstance; -import com.android.tools.r8.code.SgetObject; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexNewInstance; +import com.android.tools.r8.dex.code.DexSgetObject; import com.android.tools.r8.graph.DexType; import com.android.tools.r8.naming.MemberNaming.MethodSignature; import com.android.tools.r8.utils.IntBox; @@ -293,11 +293,11 @@ return instruction.getField().getHolderType(); } } else { - Instruction baseInstruction = instruction.asDexInstruction().getInstruction(); - if (baseInstruction instanceof SgetObject) { + DexInstruction baseInstruction = instruction.asDexInstruction().getInstruction(); + if (baseInstruction instanceof DexSgetObject) { return baseInstruction.getField().getHolderType(); - } else if (baseInstruction instanceof NewInstance) { - return ((NewInstance) baseInstruction).getType(); + } else if (baseInstruction instanceof DexNewInstance) { + return ((DexNewInstance) baseInstruction).getType(); } } return null;
diff --git a/src/test/java/com/android/tools/r8/naming/IdentifierNameStringMarkerTest.java b/src/test/java/com/android/tools/r8/naming/IdentifierNameStringMarkerTest.java index df6d1a5..039ba9a 100644 --- a/src/test/java/com/android/tools/r8/naming/IdentifierNameStringMarkerTest.java +++ b/src/test/java/com/android/tools/r8/naming/IdentifierNameStringMarkerTest.java
@@ -12,18 +12,18 @@ import com.android.tools.r8.R8FullTestBuilder; import com.android.tools.r8.R8TestCompileResult; import com.android.tools.r8.ThrowableConsumer; -import com.android.tools.r8.code.AputObject; -import com.android.tools.r8.code.Const4; -import com.android.tools.r8.code.ConstClass; -import com.android.tools.r8.code.ConstString; -import com.android.tools.r8.code.InvokeDirect; -import com.android.tools.r8.code.InvokeStatic; -import com.android.tools.r8.code.InvokeVirtual; -import com.android.tools.r8.code.IputObject; -import com.android.tools.r8.code.NewArray; -import com.android.tools.r8.code.ReturnVoid; -import com.android.tools.r8.code.SgetObject; -import com.android.tools.r8.code.SputObject; +import com.android.tools.r8.dex.code.DexAputObject; +import com.android.tools.r8.dex.code.DexConst4; +import com.android.tools.r8.dex.code.DexConstClass; +import com.android.tools.r8.dex.code.DexConstString; +import com.android.tools.r8.dex.code.DexInvokeDirect; +import com.android.tools.r8.dex.code.DexInvokeStatic; +import com.android.tools.r8.dex.code.DexInvokeVirtual; +import com.android.tools.r8.dex.code.DexIputObject; +import com.android.tools.r8.dex.code.DexNewArray; +import com.android.tools.r8.dex.code.DexReturnVoid; +import com.android.tools.r8.dex.code.DexSgetObject; +import com.android.tools.r8.dex.code.DexSputObject; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexEncodedMethod; import com.android.tools.r8.smali.SmaliBuilder; @@ -67,8 +67,8 @@ checkInstructions( code, ImmutableList.of( - InvokeDirect.class, ConstString.class, IputObject.class, ReturnVoid.class)); - ConstString constString = (ConstString) code.instructions[1]; + DexInvokeDirect.class, DexConstString.class, DexIputObject.class, DexReturnVoid.class)); + DexConstString constString = (DexConstString) code.instructions[1]; assertEquals(BOO, constString.getString().toString()); } @@ -100,16 +100,16 @@ checkInstructions( code, ImmutableList.of( - InvokeDirect.class, - SgetObject.class, - ConstString.class, - InvokeVirtual.class, - ConstString.class, - IputObject.class, - ReturnVoid.class)); - ConstString constString = (ConstString) code.instructions[2]; + DexInvokeDirect.class, + DexSgetObject.class, + DexConstString.class, + DexInvokeVirtual.class, + DexConstString.class, + DexIputObject.class, + DexReturnVoid.class)); + DexConstString constString = (DexConstString) code.instructions[2]; assertEquals(BOO, constString.getString().toString()); - constString = (ConstString) code.instructions[4]; + constString = (DexConstString) code.instructions[4]; assertEquals(BOO, constString.getString().toString()); } @@ -143,16 +143,16 @@ checkInstructions( code, ImmutableList.of( - InvokeDirect.class, - SgetObject.class, - ConstString.class, - InvokeVirtual.class, - ConstString.class, - IputObject.class, - ReturnVoid.class)); - ConstString constString = (ConstString) code.instructions[2]; + DexInvokeDirect.class, + DexSgetObject.class, + DexConstString.class, + DexInvokeVirtual.class, + DexConstString.class, + DexIputObject.class, + DexReturnVoid.class)); + DexConstString constString = (DexConstString) code.instructions[2]; assertEquals(BOO, constString.getString().toString()); - constString = (ConstString) code.instructions[4]; + constString = (DexConstString) code.instructions[4]; assertNotEquals(BOO, constString.getString().toString()); } @@ -180,11 +180,9 @@ assertNotNull(method); DexCode code = method.getCode().asDexCode(); - checkInstructions(code, ImmutableList.of( - ConstString.class, - SputObject.class, - ReturnVoid.class)); - ConstString constString = (ConstString) code.instructions[0]; + checkInstructions( + code, ImmutableList.of(DexConstString.class, DexSputObject.class, DexReturnVoid.class)); + DexConstString constString = (DexConstString) code.instructions[0]; assertEquals(BOO, constString.getString().toString()); } @@ -212,16 +210,18 @@ assertNotNull(method); DexCode code = method.getCode().asDexCode(); - checkInstructions(code, ImmutableList.of( - SgetObject.class, - ConstString.class, - InvokeVirtual.class, - ConstString.class, - SputObject.class, - ReturnVoid.class)); - ConstString constString = (ConstString) code.instructions[1]; + checkInstructions( + code, + ImmutableList.of( + DexSgetObject.class, + DexConstString.class, + DexInvokeVirtual.class, + DexConstString.class, + DexSputObject.class, + DexReturnVoid.class)); + DexConstString constString = (DexConstString) code.instructions[1]; assertEquals(BOO, constString.getString().toString()); - constString = (ConstString) code.instructions[3]; + constString = (DexConstString) code.instructions[3]; assertEquals(BOO, constString.getString().toString()); } @@ -251,16 +251,18 @@ assertNotNull(method); DexCode code = method.getCode().asDexCode(); - checkInstructions(code, ImmutableList.of( - SgetObject.class, - ConstString.class, - InvokeVirtual.class, - ConstString.class, - SputObject.class, - ReturnVoid.class)); - ConstString constString = (ConstString) code.instructions[1]; + checkInstructions( + code, + ImmutableList.of( + DexSgetObject.class, + DexConstString.class, + DexInvokeVirtual.class, + DexConstString.class, + DexSputObject.class, + DexReturnVoid.class)); + DexConstString constString = (DexConstString) code.instructions[1]; assertEquals(BOO, constString.getString().toString()); - constString = (ConstString) code.instructions[3]; + constString = (DexConstString) code.instructions[3]; assertNotEquals(BOO, constString.getString().toString()); } @@ -395,13 +397,13 @@ checkInstructions( code, ImmutableList.of( - InvokeDirect.class, - ConstString.class, - ConstString.class, - InvokeStatic.class, - ReturnVoid.class)); - String s1 = ((ConstString) code.instructions[1]).getString().toString(); - String s2 = ((ConstString) code.instructions[2]).getString().toString(); + DexInvokeDirect.class, + DexConstString.class, + DexConstString.class, + DexInvokeStatic.class, + DexReturnVoid.class)); + String s1 = ((DexConstString) code.instructions[1]).getString().toString(); + String s2 = ((DexConstString) code.instructions[2]).getString().toString(); assertTrue(BOO.equals(s1) || BOO.equals(s2)); assertTrue("Mixed/form.Boo".equals(s1) || "Mixed/form.Boo".equals(s2)); } @@ -439,16 +441,16 @@ checkInstructions( code, ImmutableList.of( - InvokeDirect.class, - SgetObject.class, - ConstString.class, - InvokeVirtual.class, - ConstString.class, - InvokeStatic.class, - ReturnVoid.class)); - ConstString constString = (ConstString) code.instructions[2]; + DexInvokeDirect.class, + DexSgetObject.class, + DexConstString.class, + DexInvokeVirtual.class, + DexConstString.class, + DexInvokeStatic.class, + DexReturnVoid.class)); + DexConstString constString = (DexConstString) code.instructions[2]; assertEquals(BOO, constString.getString().toString()); - constString = (ConstString) code.instructions[4]; + constString = (DexConstString) code.instructions[4]; assertEquals(BOO, constString.getString().toString()); } @@ -487,16 +489,16 @@ checkInstructions( code, ImmutableList.of( - InvokeDirect.class, - SgetObject.class, - ConstString.class, - InvokeVirtual.class, - ConstString.class, - InvokeStatic.class, - ReturnVoid.class)); - ConstString constString = (ConstString) code.instructions[2]; + DexInvokeDirect.class, + DexSgetObject.class, + DexConstString.class, + DexInvokeVirtual.class, + DexConstString.class, + DexInvokeStatic.class, + DexReturnVoid.class)); + DexConstString constString = (DexConstString) code.instructions[2]; assertEquals(BOO, constString.getString().toString()); - constString = (ConstString) code.instructions[4]; + constString = (DexConstString) code.instructions[4]; assertNotEquals(BOO, constString.getString().toString()); } @@ -541,12 +543,12 @@ checkInstructions( code, ImmutableList.of( - InvokeDirect.class, - ConstClass.class, - ConstString.class, - InvokeStatic.class, - ReturnVoid.class)); - ConstString constString = (ConstString) code.instructions[2]; + DexInvokeDirect.class, + DexConstClass.class, + DexConstString.class, + DexInvokeStatic.class, + DexReturnVoid.class)); + DexConstString constString = (DexConstString) code.instructions[2]; assertEquals("foo", constString.getString().toString()); } @@ -591,12 +593,12 @@ checkInstructions( code, ImmutableList.of( - InvokeDirect.class, - ConstClass.class, - ConstString.class, - InvokeStatic.class, - ReturnVoid.class)); - ConstString constString = (ConstString) code.instructions[2]; + DexInvokeDirect.class, + DexConstClass.class, + DexConstString.class, + DexInvokeStatic.class, + DexReturnVoid.class)); + DexConstString constString = (DexConstString) code.instructions[2]; assertNotEquals("foo", constString.getString().toString()); } @@ -648,16 +650,16 @@ checkInstructions( code, ImmutableList.of( - InvokeDirect.class, - ConstClass.class, - Const4.class, - NewArray.class, - Const4.class, - AputObject.class, - ConstString.class, - InvokeStatic.class, - ReturnVoid.class)); - ConstString constString = (ConstString) code.instructions[6]; + DexInvokeDirect.class, + DexConstClass.class, + DexConst4.class, + DexNewArray.class, + DexConst4.class, + DexAputObject.class, + DexConstString.class, + DexInvokeStatic.class, + DexReturnVoid.class)); + DexConstString constString = (DexConstString) code.instructions[6]; assertEquals("foo", constString.getString().toString()); } @@ -709,16 +711,16 @@ checkInstructions( code, ImmutableList.of( - InvokeDirect.class, - ConstClass.class, - Const4.class, - NewArray.class, - Const4.class, - AputObject.class, - ConstString.class, - InvokeStatic.class, - ReturnVoid.class)); - ConstString constString = (ConstString) code.instructions[6]; + DexInvokeDirect.class, + DexConstClass.class, + DexConst4.class, + DexNewArray.class, + DexConst4.class, + DexAputObject.class, + DexConstString.class, + DexInvokeStatic.class, + DexReturnVoid.class)); + DexConstString constString = (DexConstString) code.instructions[6]; assertNotEquals("foo", constString.getString().toString()); }
diff --git a/src/test/java/com/android/tools/r8/reachabilitysensitive/ReachabilitySensitiveTest.java b/src/test/java/com/android/tools/r8/reachabilitysensitive/ReachabilitySensitiveTest.java index c09e451..c435b84 100644 --- a/src/test/java/com/android/tools/r8/reachabilitysensitive/ReachabilitySensitiveTest.java +++ b/src/test/java/com/android/tools/r8/reachabilitysensitive/ReachabilitySensitiveTest.java
@@ -12,10 +12,10 @@ import com.android.tools.r8.CompilationMode; import com.android.tools.r8.TestBase; import com.android.tools.r8.TestParameters; -import com.android.tools.r8.code.AddIntLit8; -import com.android.tools.r8.code.Const4; -import com.android.tools.r8.code.Instruction; import com.android.tools.r8.dex.Marker.Tool; +import com.android.tools.r8.dex.code.DexAddIntLit8; +import com.android.tools.r8.dex.code.DexConst4; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexDebugEvent.StartLocal; import com.android.tools.r8.utils.AndroidApiLevel; @@ -145,16 +145,16 @@ private void checkAnnotatedCode(DexCode code) { // All live at the same time: receiver, i, j, k, System.out. assertEquals(5, code.registerSize); - Instruction first = code.instructions[0]; - Instruction second = code.instructions[1]; - Instruction third = code.instructions[2]; + DexInstruction first = code.instructions[0]; + DexInstruction second = code.instructions[1]; + DexInstruction third = code.instructions[2]; // None of the local declarations overwrite other locals. - assertTrue(first instanceof Const4); - assertTrue(second instanceof AddIntLit8); - assertTrue(third instanceof AddIntLit8); - int firstRegister = ((Const4) first).A; - int secondRegister = ((AddIntLit8) second).AA; - int thirdRegister = ((AddIntLit8) third).AA; + assertTrue(first instanceof DexConst4); + assertTrue(second instanceof DexAddIntLit8); + assertTrue(third instanceof DexAddIntLit8); + int firstRegister = ((DexConst4) first).A; + int secondRegister = ((DexAddIntLit8) second).AA; + int thirdRegister = ((DexAddIntLit8) third).AA; assertFalse(firstRegister == secondRegister); assertFalse(firstRegister == thirdRegister); assertFalse(secondRegister == thirdRegister);
diff --git a/src/test/java/com/android/tools/r8/regress/b111250398/B111250398.java b/src/test/java/com/android/tools/r8/regress/b111250398/B111250398.java index 33bef6d..535da71 100644 --- a/src/test/java/com/android/tools/r8/regress/b111250398/B111250398.java +++ b/src/test/java/com/android/tools/r8/regress/b111250398/B111250398.java
@@ -9,9 +9,9 @@ import static org.junit.Assert.assertEquals; import com.android.tools.r8.TestBase; -import com.android.tools.r8.code.Iget; -import com.android.tools.r8.code.IgetObject; -import com.android.tools.r8.code.Sget; +import com.android.tools.r8.dex.code.DexIget; +import com.android.tools.r8.dex.code.DexIgetObject; +import com.android.tools.r8.dex.code.DexSget; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.utils.AndroidApp; @@ -214,24 +214,24 @@ private long countIget(DexCode code, DexField field) { return Arrays.stream(code.instructions) - .filter(instruction -> instruction instanceof Iget) - .map(instruction -> (Iget) instruction) + .filter(instruction -> instruction instanceof DexIget) + .map(instruction -> (DexIget) instruction) .filter(get -> get.getField() == field) .count(); } private long countSget(DexCode code, DexField field) { return Arrays.stream(code.instructions) - .filter(instruction -> instruction instanceof Sget) - .map(instruction -> (Sget) instruction) + .filter(instruction -> instruction instanceof DexSget) + .map(instruction -> (DexSget) instruction) .filter(get -> get.getField() == field) .count(); } private long countIgetObject(MethodSubject method, FieldSubject field) { return Arrays.stream(method.getMethod().getCode().asDexCode().instructions) - .filter(instruction -> instruction instanceof IgetObject) - .map(instruction -> (IgetObject) instruction) + .filter(instruction -> instruction instanceof DexIgetObject) + .map(instruction -> (DexIgetObject) instruction) .filter(get -> get.getField() == field.getField().getReference()) .count(); }
diff --git a/src/test/java/com/android/tools/r8/regress/b113326860/B113326860.java b/src/test/java/com/android/tools/r8/regress/b113326860/B113326860.java index 294dbbc..b6f3d94 100644 --- a/src/test/java/com/android/tools/r8/regress/b113326860/B113326860.java +++ b/src/test/java/com/android/tools/r8/regress/b113326860/B113326860.java
@@ -13,9 +13,9 @@ import com.android.tools.r8.CompilationMode; import com.android.tools.r8.D8Command; import com.android.tools.r8.ToolHelper; -import com.android.tools.r8.code.Sput; -import com.android.tools.r8.code.SputBoolean; -import com.android.tools.r8.code.SputObject; +import com.android.tools.r8.dex.code.DexSput; +import com.android.tools.r8.dex.code.DexSputBoolean; +import com.android.tools.r8.dex.code.DexSputObject; import com.android.tools.r8.ir.code.SingleConstant; import com.android.tools.r8.origin.Origin; import com.android.tools.r8.utils.AndroidApp; @@ -113,10 +113,12 @@ assertThat(clazz, isPresent()); MethodSubject method = clazz.method("void", "<clinit>", ImmutableList.of()); assertThat(method, isPresent()); - assertFalse(Arrays.stream(method.getMethod().getCode().asDexCode().instructions) - .anyMatch(i -> i instanceof SputBoolean || i instanceof Sput)); - assertTrue(Arrays.stream(method.getMethod().getCode().asDexCode().instructions) - .anyMatch(i -> i instanceof SputObject)); + assertFalse( + Arrays.stream(method.getMethod().getCode().asDexCode().instructions) + .anyMatch(i -> i instanceof DexSputBoolean || i instanceof DexSput)); + assertTrue( + Arrays.stream(method.getMethod().getCode().asDexCode().instructions) + .anyMatch(i -> i instanceof DexSputObject)); } @Test @@ -128,8 +130,9 @@ assertThat(clazz, isPresent()); MethodSubject method = clazz.method("void", "<clinit>", ImmutableList.of()); assertThat(method, isPresent()); - assertTrue(Arrays.stream(method.getMethod().getCode().asDexCode().instructions) - .anyMatch(i -> i instanceof SputBoolean)); + assertTrue( + Arrays.stream(method.getMethod().getCode().asDexCode().instructions) + .anyMatch(i -> i instanceof DexSputBoolean)); } @Test @@ -141,8 +144,9 @@ assertThat(clazz, isPresent()); MethodSubject method = clazz.method("void", "<clinit>", ImmutableList.of()); assertThat(method, isPresent()); - assertTrue(Arrays.stream(method.getMethod().getCode().asDexCode().instructions) - .anyMatch(i -> i instanceof SputBoolean)); + assertTrue( + Arrays.stream(method.getMethod().getCode().asDexCode().instructions) + .anyMatch(i -> i instanceof DexSputBoolean)); } @Test
diff --git a/src/test/java/com/android/tools/r8/regress/b115552239/B115552239.java b/src/test/java/com/android/tools/r8/regress/b115552239/B115552239.java index 5aa5d24..0703498 100644 --- a/src/test/java/com/android/tools/r8/regress/b115552239/B115552239.java +++ b/src/test/java/com/android/tools/r8/regress/b115552239/B115552239.java
@@ -12,9 +12,9 @@ import com.android.tools.r8.CompilationFailedException; import com.android.tools.r8.D8Command; import com.android.tools.r8.ToolHelper; -import com.android.tools.r8.code.CmpgFloat; -import com.android.tools.r8.code.IfGez; -import com.android.tools.r8.code.Instruction; +import com.android.tools.r8.dex.code.DexCmpgFloat; +import com.android.tools.r8.dex.code.DexIfGez; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.origin.Origin; import com.android.tools.r8.utils.AndroidApiLevel; import com.android.tools.r8.utils.AndroidApp; @@ -58,14 +58,14 @@ throws IOException, CompilationFailedException, ExecutionException { MethodSubject method = compileTestClassAndGetMethod(AndroidApiLevel.L.getLevel()); boolean previousWasCmp = false; - Instruction[] instructions = method.getMethod().getCode().asDexCode().instructions; - assertTrue(Arrays.stream(instructions).anyMatch(i -> i instanceof CmpgFloat)); - for (Instruction instruction : instructions) { - if (instruction instanceof CmpgFloat) { + DexInstruction[] instructions = method.getMethod().getCode().asDexCode().instructions; + assertTrue(Arrays.stream(instructions).anyMatch(i -> i instanceof DexCmpgFloat)); + for (DexInstruction instruction : instructions) { + if (instruction instanceof DexCmpgFloat) { previousWasCmp = true; continue; } else if (previousWasCmp) { - assertTrue(instruction instanceof IfGez); + assertTrue(instruction instanceof DexIfGez); } previousWasCmp = false; } @@ -76,15 +76,15 @@ throws IOException, CompilationFailedException, ExecutionException { MethodSubject method = compileTestClassAndGetMethod(AndroidApiLevel.M.getLevel()); boolean previousWasCmp = false; - Instruction[] instructions = method.getMethod().getCode().asDexCode().instructions; - assertTrue(Arrays.stream(instructions).anyMatch(i -> i instanceof CmpgFloat)); - for (Instruction instruction : instructions) { - if (instruction instanceof CmpgFloat) { + DexInstruction[] instructions = method.getMethod().getCode().asDexCode().instructions; + assertTrue(Arrays.stream(instructions).anyMatch(i -> i instanceof DexCmpgFloat)); + for (DexInstruction instruction : instructions) { + if (instruction instanceof DexCmpgFloat) { previousWasCmp = true; continue; } else if (previousWasCmp) { // We lowered the const instruction as close to its use as possible. - assertFalse(instruction instanceof IfGez); + assertFalse(instruction instanceof DexIfGez); } previousWasCmp = false; }
diff --git a/src/test/java/com/android/tools/r8/regress/b117907456/B117907456.java b/src/test/java/com/android/tools/r8/regress/b117907456/B117907456.java index 4c092ce..4da22f8 100644 --- a/src/test/java/com/android/tools/r8/regress/b117907456/B117907456.java +++ b/src/test/java/com/android/tools/r8/regress/b117907456/B117907456.java
@@ -11,12 +11,9 @@ import com.android.tools.r8.CompilationFailedException; import com.android.tools.r8.TestBase; -import com.android.tools.r8.code.Goto; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.Return; -import com.android.tools.r8.code.ReturnVoid; -import com.android.tools.r8.code.ReturnWide; -import com.android.tools.r8.code.Throw; +import com.android.tools.r8.dex.code.DexGoto; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexThrow; import com.android.tools.r8.utils.AndroidApiLevel; import com.android.tools.r8.utils.codeinspector.ClassSubject; import com.android.tools.r8.utils.codeinspector.CodeInspector; @@ -37,17 +34,17 @@ public class B117907456 extends TestBase { - private boolean isGoto(Instruction lastInstruction) { - return lastInstruction instanceof Goto; + private boolean isGoto(DexInstruction lastInstruction) { + return lastInstruction instanceof DexGoto; } @Test public void testNopDupInsertionForDalvikTracingBug() throws IOException, CompilationFailedException, ExecutionException { MethodSubject method = getMethodSubject(AndroidApiLevel.K); - Instruction[] instructions = method.getMethod().getCode().asDexCode().instructions; - Instruction lastInstruction = instructions[instructions.length - 1]; - assertFalse(lastInstruction instanceof Throw); + DexInstruction[] instructions = method.getMethod().getCode().asDexCode().instructions; + DexInstruction lastInstruction = instructions[instructions.length - 1]; + assertFalse(lastInstruction instanceof DexThrow); assertTrue(isGoto(lastInstruction)); } @@ -55,9 +52,9 @@ public void testNoNopDupInsertionForDalvikTracingBug() throws IOException, CompilationFailedException, ExecutionException { MethodSubject method = getMethodSubject(AndroidApiLevel.L); - Instruction[] instructions = method.getMethod().getCode().asDexCode().instructions; - Instruction lastInstruction = instructions[instructions.length - 1]; - assertTrue(lastInstruction instanceof Throw); + DexInstruction[] instructions = method.getMethod().getCode().asDexCode().instructions; + DexInstruction lastInstruction = instructions[instructions.length - 1]; + assertTrue(lastInstruction instanceof DexThrow); } private MethodSubject getMethodSubject(AndroidApiLevel level)
diff --git a/src/test/java/com/android/tools/r8/regress/b142682636/Regress142682636Runner.java b/src/test/java/com/android/tools/r8/regress/b142682636/Regress142682636Runner.java index d3604b6..78694ea 100644 --- a/src/test/java/com/android/tools/r8/regress/b142682636/Regress142682636Runner.java +++ b/src/test/java/com/android/tools/r8/regress/b142682636/Regress142682636Runner.java
@@ -10,7 +10,7 @@ import com.android.tools.r8.TestBase; import com.android.tools.r8.TestParameters; import com.android.tools.r8.TestParametersCollection; -import com.android.tools.r8.code.MoveWide; +import com.android.tools.r8.dex.code.DexMoveWide; import com.android.tools.r8.utils.codeinspector.ClassSubject; import com.android.tools.r8.utils.codeinspector.CodeInspector; import com.android.tools.r8.utils.codeinspector.MethodSubject; @@ -54,8 +54,9 @@ } private void checkNoMoveWide(MethodSubject m) { - assertTrue(Arrays.stream(m.getMethod().getCode().asDexCode().instructions) - .noneMatch(i -> i instanceof MoveWide)); + assertTrue( + Arrays.stream(m.getMethod().getCode().asDexCode().instructions) + .noneMatch(i -> i instanceof DexMoveWide)); } }
diff --git a/src/test/java/com/android/tools/r8/regress/b77496850/B77496850.java b/src/test/java/com/android/tools/r8/regress/b77496850/B77496850.java index 7fb7e88..375b845 100644 --- a/src/test/java/com/android/tools/r8/regress/b77496850/B77496850.java +++ b/src/test/java/com/android/tools/r8/regress/b77496850/B77496850.java
@@ -7,8 +7,8 @@ import static org.junit.Assert.assertEquals; import com.android.tools.r8.TestBase; -import com.android.tools.r8.code.InvokeStatic; import com.android.tools.r8.dex.Marker.Tool; +import com.android.tools.r8.dex.code.DexInvokeStatic; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexItemFactory; import com.android.tools.r8.graph.DexMethod; @@ -419,8 +419,8 @@ factory.booleanDescriptor, new DexString[]{factory.doubleDescriptor}); for (int i = 0; i < code.instructions.length; i++) { - if (code.instructions[i] instanceof InvokeStatic) { - InvokeStatic invoke = (InvokeStatic) code.instructions[i]; + if (code.instructions[i] instanceof DexInvokeStatic) { + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[i]; if (invoke.getMethod() == doubleIsNaN) { count++; }
diff --git a/src/test/java/com/android/tools/r8/regress/b80262475/B80262475.java b/src/test/java/com/android/tools/r8/regress/b80262475/B80262475.java index b3fc08f..1d70128 100644 --- a/src/test/java/com/android/tools/r8/regress/b80262475/B80262475.java +++ b/src/test/java/com/android/tools/r8/regress/b80262475/B80262475.java
@@ -5,18 +5,13 @@ package com.android.tools.r8.regress.b80262475; import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent; -import static junit.framework.TestCase.assertTrue; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertFalse; import com.android.tools.r8.CompilationFailedException; import com.android.tools.r8.TestBase; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.LongToInt; -import com.android.tools.r8.code.Return; -import com.android.tools.r8.code.ReturnVoid; -import com.android.tools.r8.code.ReturnWide; -import com.android.tools.r8.code.Throw; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexLongToInt; import com.android.tools.r8.utils.AndroidApiLevel; import com.android.tools.r8.utils.codeinspector.ClassSubject; import com.android.tools.r8.utils.codeinspector.CodeInspector; @@ -35,9 +30,9 @@ public class B80262475 extends TestBase { - private boolean overlappingLongToIntInputAndOutput(Instruction instruction) { - if (instruction instanceof LongToInt) { - LongToInt longToInt = (LongToInt) instruction; + private boolean overlappingLongToIntInputAndOutput(DexInstruction instruction) { + if (instruction instanceof DexLongToInt) { + DexLongToInt longToInt = (DexLongToInt) instruction; return longToInt.A == longToInt.B; } return false; @@ -47,8 +42,8 @@ public void testLongToIntOverlap() throws IOException, CompilationFailedException, ExecutionException { MethodSubject method = getMethodSubject(AndroidApiLevel.L); - Instruction[] instructions = method.getMethod().getCode().asDexCode().instructions; - for (Instruction instruction : instructions) { + DexInstruction[] instructions = method.getMethod().getCode().asDexCode().instructions; + for (DexInstruction instruction : instructions) { assertFalse(overlappingLongToIntInputAndOutput(instruction)); } }
diff --git a/src/test/java/com/android/tools/r8/rewrite/staticvalues/StaticValuesTest.java b/src/test/java/com/android/tools/r8/rewrite/staticvalues/StaticValuesTest.java index 662b22e..eb4bb23 100644 --- a/src/test/java/com/android/tools/r8/rewrite/staticvalues/StaticValuesTest.java +++ b/src/test/java/com/android/tools/r8/rewrite/staticvalues/StaticValuesTest.java
@@ -9,8 +9,8 @@ import static org.junit.Assert.assertTrue; import com.android.tools.r8.ToolHelper.ProcessResult; -import com.android.tools.r8.code.IfEqz; -import com.android.tools.r8.code.SgetBoolean; +import com.android.tools.r8.dex.code.DexIfEqz; +import com.android.tools.r8.dex.code.DexSgetBoolean; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexValue; import com.android.tools.r8.smali.SmaliBuilder; @@ -393,8 +393,8 @@ assertEquals(("5"), value.asDexValueString().getValue().toString()); DexCode code = inspector.clazz("Test").clinit().getMethod().getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof SgetBoolean); - assertTrue(code.instructions[1] instanceof IfEqz); + assertTrue(code.instructions[0] instanceof DexSgetBoolean); + assertTrue(code.instructions[1] instanceof DexIfEqz); String result = runArt(processedApplication);
diff --git a/src/test/java/com/android/tools/r8/rewrite/switches/SwitchRewritingTest.java b/src/test/java/com/android/tools/r8/rewrite/switches/SwitchRewritingTest.java index bcd4063..03275f0 100644 --- a/src/test/java/com/android/tools/r8/rewrite/switches/SwitchRewritingTest.java +++ b/src/test/java/com/android/tools/r8/rewrite/switches/SwitchRewritingTest.java
@@ -8,14 +8,14 @@ import static org.junit.Assert.assertTrue; import com.android.tools.r8.CompilationFailedException; -import com.android.tools.r8.code.Const; -import com.android.tools.r8.code.Const4; -import com.android.tools.r8.code.ConstHigh16; -import com.android.tools.r8.code.IfEq; -import com.android.tools.r8.code.IfEqz; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.PackedSwitch; -import com.android.tools.r8.code.SparseSwitch; +import com.android.tools.r8.dex.code.DexConst; +import com.android.tools.r8.dex.code.DexConst4; +import com.android.tools.r8.dex.code.DexConstHigh16; +import com.android.tools.r8.dex.code.DexIfEq; +import com.android.tools.r8.dex.code.DexIfEqz; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexPackedSwitch; +import com.android.tools.r8.dex.code.DexSparseSwitch; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexEncodedMethod; import com.android.tools.r8.smali.SmaliBuilder; @@ -30,10 +30,10 @@ public class SwitchRewritingTest extends SmaliTestBase { - private boolean some16BitConst(Instruction instruction) { - return instruction instanceof Const4 - || instruction instanceof ConstHigh16 - || instruction instanceof Const; + private boolean some16BitConst(DexInstruction instruction) { + return instruction instanceof DexConst4 + || instruction instanceof DexConstHigh16 + || instruction instanceof DexConst; } private void runSingleCaseDexTest(boolean packed, int key) throws CompilationFailedException { @@ -88,11 +88,11 @@ if (key == 0) { assertEquals(5, code.instructions.length); - assertTrue(code.instructions[0] instanceof IfEqz); + assertTrue(code.instructions[0] instanceof DexIfEqz); } else { assertEquals(6, code.instructions.length); assertTrue(some16BitConst(code.instructions[0])); - assertTrue(code.instructions[1] instanceof IfEq); + assertTrue(code.instructions[1] instanceof DexIfEq); } } @@ -158,13 +158,13 @@ DexEncodedMethod method = getMethod(processedApplication, signature); DexCode code = method.getCode().asDexCode(); if (keyStep <= 2) { - assertTrue(code.instructions[0] instanceof PackedSwitch); + assertTrue(code.instructions[0] instanceof DexPackedSwitch); } else { if (additionalLastKey != null && additionalLastKey == Integer.MAX_VALUE) { - assertTrue(code.instructions[0] instanceof Const); - assertTrue(code.instructions[1] instanceof IfEq); + assertTrue(code.instructions[0] instanceof DexConst); + assertTrue(code.instructions[1] instanceof DexIfEq); } else { - assertTrue(code.instructions[0] instanceof SparseSwitch); + assertTrue(code.instructions[0] instanceof DexSparseSwitch); } } }
diff --git a/src/test/java/com/android/tools/r8/smali/BinopLiteralTest.java b/src/test/java/com/android/tools/r8/smali/BinopLiteralTest.java index 7429b43..afd71b9 100644 --- a/src/test/java/com/android/tools/r8/smali/BinopLiteralTest.java +++ b/src/test/java/com/android/tools/r8/smali/BinopLiteralTest.java
@@ -7,11 +7,11 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import com.android.tools.r8.code.Const16; -import com.android.tools.r8.code.Format22b; -import com.android.tools.r8.code.Format22s; -import com.android.tools.r8.code.Return; import com.android.tools.r8.dex.Constants; +import com.android.tools.r8.dex.code.DexConst16; +import com.android.tools.r8.dex.code.DexFormat22b; +import com.android.tools.r8.dex.code.DexFormat22s; +import com.android.tools.r8.dex.code.DexReturn; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexEncodedMethod; import java.util.Arrays; @@ -63,9 +63,9 @@ ); DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); - assertTrue(code.instructions[0] instanceof Format22b); - assertEquals(lit8Value, ((Format22b) code.instructions[0]).CC); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[0] instanceof DexFormat22b); + assertEquals(lit8Value, ((DexFormat22b) code.instructions[0]).CC); + assertTrue(code.instructions[1] instanceof DexReturn); } } } @@ -88,9 +88,9 @@ ); DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); - assertTrue(code.instructions[0] instanceof Format22s); - assertEquals(lit16Value, ((Format22s) code.instructions[0]).CCCC); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[0] instanceof DexFormat22s); + assertEquals(lit16Value, ((DexFormat22s) code.instructions[0]).CCCC); + assertTrue(code.instructions[1] instanceof DexReturn); } } } @@ -111,9 +111,9 @@ ); DexCode code = method.getCode().asDexCode(); assertEquals(3, code.instructions.length); - assertTrue(code.instructions[0] instanceof Const16); - assertEquals(lit16Value, ((Const16) code.instructions[0]).BBBB); - assertTrue(code.instructions[2] instanceof Return); + assertTrue(code.instructions[0] instanceof DexConst16); + assertEquals(lit16Value, ((DexConst16) code.instructions[0]).BBBB); + assertTrue(code.instructions[2] instanceof DexReturn); } } }
diff --git a/src/test/java/com/android/tools/r8/smali/ConstantFoldingTest.java b/src/test/java/com/android/tools/r8/smali/ConstantFoldingTest.java index b9a9dc8..54fe690 100644 --- a/src/test/java/com/android/tools/r8/smali/ConstantFoldingTest.java +++ b/src/test/java/com/android/tools/r8/smali/ConstantFoldingTest.java
@@ -6,12 +6,12 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import com.android.tools.r8.code.Const4; -import com.android.tools.r8.code.DivIntLit8; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.RemIntLit8; -import com.android.tools.r8.code.Return; -import com.android.tools.r8.code.ReturnWide; +import com.android.tools.r8.dex.code.DexConst4; +import com.android.tools.r8.dex.code.DexDivIntLit8; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexRemIntLit8; +import com.android.tools.r8.dex.code.DexReturn; +import com.android.tools.r8.dex.code.DexReturnWide; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexEncodedMethod; @@ -135,13 +135,13 @@ assertTrue(code.instructions[0] instanceof WideConstant); assertEquals(test.result.longValue(), ((WideConstant) code.instructions[0]).decodedValue()); - assertTrue(code.instructions[1] instanceof ReturnWide); + assertTrue(code.instructions[1] instanceof DexReturnWide); } else { assertTrue(code.instructions[0] instanceof SingleConstant); assertEquals( test.result.longValue(), (long) ((SingleConstant) code.instructions[0]).decodedValue()); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[1] instanceof DexReturn); } } @@ -211,50 +211,50 @@ testBuilder.addTest( (builder, name, parameters) -> { builder.addStaticMethod( - "int", name, Collections.singletonList("int"), + "int", + name, + Collections.singletonList("int"), 2, " const/4 v0, 1 ", " const/4 v1, 0 ", " div-int/2addr v0, v1 ", - " return v0\n " - ); + " return v0\n "); }, (method, parameters) -> { DexCode code = method.getCode().asDexCode(); // Division by zero is not folded, but div-int/lit8 is used. assertEquals(3, code.instructions.length); - assertTrue(code.instructions[0] instanceof Const4); - assertTrue(code.instructions[1] instanceof DivIntLit8); - assertEquals(0, ((DivIntLit8) code.instructions[1]).CC); - assertTrue(code.instructions[2] instanceof Return); + assertTrue(code.instructions[0] instanceof DexConst4); + assertTrue(code.instructions[1] instanceof DexDivIntLit8); + assertEquals(0, ((DexDivIntLit8) code.instructions[1]).CC); + assertTrue(code.instructions[2] instanceof DexReturn); }, - null - ); + null); } private void addDivIntFoldRemByZero(SmaliBuilderWithCheckers testBuilder) { testBuilder.addTest( (builder, name, parameters) -> { builder.addStaticMethod( - "int", name, Collections.singletonList("int"), - 2, - " const/4 v0, 1 ", - " const/4 v1, 0 ", - " rem-int/2addr v0, v1 ", - " return v0\n " - ); + "int", + name, + Collections.singletonList("int"), + 2, + " const/4 v0, 1 ", + " const/4 v1, 0 ", + " rem-int/2addr v0, v1 ", + " return v0\n "); }, (method, parameters) -> { DexCode code = method.getCode().asDexCode(); // Division by zero is not folded, but rem-int/lit8 is used. assertEquals(3, code.instructions.length); - assertTrue(code.instructions[0] instanceof Const4); - assertTrue(code.instructions[1] instanceof RemIntLit8); - assertEquals(0, ((RemIntLit8) code.instructions[1]).CC); - assertTrue(code.instructions[2] instanceof Return); + assertTrue(code.instructions[0] instanceof DexConst4); + assertTrue(code.instructions[1] instanceof DexRemIntLit8); + assertEquals(0, ((DexRemIntLit8) code.instructions[1]).CC); + assertTrue(code.instructions[2] instanceof DexReturn); }, - null - ); + null); } public class UnopTestData { @@ -302,12 +302,12 @@ if (wide) { assertTrue(code.instructions[0] instanceof WideConstant); assertEquals(test.result.longValue(), ((WideConstant) code.instructions[0]).decodedValue()); - assertTrue(code.instructions[1] instanceof ReturnWide); + assertTrue(code.instructions[1] instanceof DexReturnWide); } else { assertTrue(code.instructions[0] instanceof SingleConstant); assertEquals( test.result.longValue(), (long) ((SingleConstant) code.instructions[0]).decodedValue()); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[1] instanceof DexReturn); } } @@ -330,12 +330,12 @@ addUnopTest(testBuilder, new UnopTestData("double", "neg", doubleBits(-0.0), doubleBits(0.0))); } - private void assertConstValue(int expected, Instruction insn) { + private void assertConstValue(int expected, DexInstruction insn) { assertTrue(insn instanceof SingleConstant); assertEquals(expected, ((SingleConstant) insn).decodedValue()); } - private void assertConstValue(long expected, Instruction insn) { + private void assertConstValue(long expected, DexInstruction insn) { assertTrue(insn instanceof WideConstant); assertEquals(expected, ((WideConstant) insn).decodedValue()); } @@ -393,7 +393,7 @@ // Test that this just returns a constant. assertEquals(2, code.instructions.length); assertConstValue(test.expected, code.instructions[0]); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[1] instanceof DexReturn); } private void addLogicalOperatorsFoldTests(SmaliBuilderWithCheckers testBuilder) { @@ -476,7 +476,7 @@ // Test that this just returns a constant. assertEquals(2, code.instructions.length); assertConstValue(data.expected, code.instructions[0]); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[1] instanceof DexReturn); } public void addShiftOperatorsFolding(SmaliBuilderWithCheckers testBuilder) { @@ -560,7 +560,7 @@ // Test that this just returns a constant. assertEquals(2, code.instructions.length); assertConstValue(data.expected, code.instructions[0]); - assertTrue(code.instructions[1] instanceof ReturnWide); + assertTrue(code.instructions[1] instanceof DexReturnWide); } public void addShiftOperatorsFoldingWide(SmaliBuilderWithCheckers testBuilder) { @@ -598,7 +598,7 @@ DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); assertConstValue(~value, code.instructions[0]); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[1] instanceof DexReturn); } private void addNotIntFoldTests(SmaliBuilderWithCheckers testBuilder) throws Exception { @@ -620,7 +620,7 @@ DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); assertConstValue(~value, code.instructions[0]); - assertTrue(code.instructions[1] instanceof ReturnWide); + assertTrue(code.instructions[1] instanceof DexReturnWide); } @@ -650,7 +650,7 @@ DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); assertConstValue(-value, code.instructions[0]); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[1] instanceof DexReturn); } private void addNegIntFoldTests(SmaliBuilderWithCheckers testBuilder) throws Exception { @@ -673,7 +673,7 @@ DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); assertConstValue(-value, code.instructions[0]); - assertTrue(code.instructions[1] instanceof ReturnWide); + assertTrue(code.instructions[1] instanceof DexReturnWide); } private void addNegLongFoldTests(SmaliBuilderWithCheckers testBuilder) throws Exception { @@ -748,7 +748,7 @@ DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); assertConstValue(test.expected ? 1: 0, code.instructions[0]); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[1] instanceof DexReturn); } private void addCmpFloatFoldTests(SmaliBuilderWithCheckers testBuilder) throws Exception { @@ -856,7 +856,7 @@ DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); assertConstValue(test.expected ? 1: 0, code.instructions[0]); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[1] instanceof DexReturn); } @@ -920,7 +920,7 @@ DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); assertConstValue(Long.compare(values[0], values[1]), code.instructions[0]); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[1] instanceof DexReturn); } private void addCmpLongFold(SmaliBuilderWithCheckers testBuilder) throws Exception {
diff --git a/src/test/java/com/android/tools/r8/smali/IfSimplificationTest.java b/src/test/java/com/android/tools/r8/smali/IfSimplificationTest.java index d42de0f..35dee6e 100644 --- a/src/test/java/com/android/tools/r8/smali/IfSimplificationTest.java +++ b/src/test/java/com/android/tools/r8/smali/IfSimplificationTest.java
@@ -7,16 +7,16 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import com.android.tools.r8.code.Const4; -import com.android.tools.r8.code.IfEqz; -import com.android.tools.r8.code.IfGez; -import com.android.tools.r8.code.IfGtz; -import com.android.tools.r8.code.IfLez; -import com.android.tools.r8.code.IfLtz; -import com.android.tools.r8.code.IfNez; -import com.android.tools.r8.code.InvokeVirtual; -import com.android.tools.r8.code.Return; -import com.android.tools.r8.code.ReturnObject; +import com.android.tools.r8.dex.code.DexConst4; +import com.android.tools.r8.dex.code.DexIfEqz; +import com.android.tools.r8.dex.code.DexIfGez; +import com.android.tools.r8.dex.code.DexIfGtz; +import com.android.tools.r8.dex.code.DexIfLez; +import com.android.tools.r8.dex.code.DexIfLtz; +import com.android.tools.r8.dex.code.DexIfNez; +import com.android.tools.r8.dex.code.DexInvokeVirtual; +import com.android.tools.r8.dex.code.DexReturn; +import com.android.tools.r8.dex.code.DexReturnObject; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexEncodedMethod; import com.android.tools.r8.ir.code.If.Type; @@ -55,9 +55,9 @@ " goto :label_1"); DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); - assertTrue(code.instructions[0] instanceof Const4); - assertEquals(0, ((Const4) code.instructions[0]).B); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[0] instanceof DexConst4); + assertEquals(0, ((DexConst4) code.instructions[0]).B); + assertTrue(code.instructions[1] instanceof DexReturn); } @Test @@ -75,9 +75,9 @@ " goto :label_1"); DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); - assertTrue(code.instructions[0] instanceof Const4); - assertEquals(2, ((Const4) code.instructions[0]).B); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[0] instanceof DexConst4); + assertEquals(2, ((DexConst4) code.instructions[0]).B); + assertTrue(code.instructions[1] instanceof DexReturn); } @Test @@ -99,9 +99,9 @@ " goto :label_1"); DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); - assertTrue(code.instructions[0] instanceof Const4); - assertEquals(0, ((Const4) code.instructions[0]).B); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[0] instanceof DexConst4); + assertEquals(0, ((DexConst4) code.instructions[0]).B); + assertTrue(code.instructions[1] instanceof DexReturn); } @Test @@ -123,9 +123,9 @@ " goto :label_2"); DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); - assertTrue(code.instructions[0] instanceof Const4); - assertEquals(0, ((Const4) code.instructions[0]).B); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[0] instanceof DexConst4); + assertEquals(0, ((DexConst4) code.instructions[0]).B); + assertTrue(code.instructions[1] instanceof DexReturn); } @Test @@ -154,9 +154,9 @@ " goto :label_2"); DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); - assertTrue(code.instructions[0] instanceof Const4); - assertEquals(0, ((Const4) code.instructions[0]).B); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[0] instanceof DexConst4); + assertEquals(0, ((DexConst4) code.instructions[0]).B); + assertTrue(code.instructions[1] instanceof DexReturn); } @Test @@ -181,7 +181,7 @@ " return v0"); DexCode code = method.getCode().asDexCode(); assertEquals(10, code.instructions.length); - assertTrue(code.instructions[9] instanceof Return); + assertTrue(code.instructions[9] instanceof DexReturn); } @Test @@ -199,9 +199,9 @@ " goto :label_2"); DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); - assertTrue(code.instructions[0] instanceof Const4); - assertEquals(0, ((Const4) code.instructions[0]).B); - assertTrue(code.instructions[1] instanceof Return); + assertTrue(code.instructions[0] instanceof DexConst4); + assertEquals(0, ((DexConst4) code.instructions[0]).B); + assertTrue(code.instructions[1] instanceof DexReturn); } @Test @@ -257,10 +257,10 @@ " goto :label_1"); DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); - assertTrue(code.instructions[0] instanceof Const4); + assertTrue(code.instructions[0] instanceof DexConst4); int expected = test.results[type.ordinal()] ? 1 : 0; - assertEquals(expected, ((Const4) code.instructions[0]).B); - assertTrue(code.instructions[1] instanceof Return); + assertEquals(expected, ((DexConst4) code.instructions[0]).B); + assertTrue(code.instructions[1] instanceof DexReturn); } } } @@ -288,113 +288,121 @@ DexCode code = method.getCode().asDexCode(); assertEquals(5, code.instructions.length); assertTrue(expected.isInstance(code.instructions[0])); - assertTrue(code.instructions[4] instanceof Return); + assertTrue(code.instructions[4] instanceof DexReturn); } @Test public void testRewriteIfWithConstZero() { - runRewriteIfWithConstZeroTest(Type.EQ, true, IfEqz.class); - runRewriteIfWithConstZeroTest(Type.NE, true, IfNez.class); - runRewriteIfWithConstZeroTest(Type.LE, true, IfGez.class); - runRewriteIfWithConstZeroTest(Type.GE, true, IfLez.class); - runRewriteIfWithConstZeroTest(Type.LT, true, IfGtz.class); - runRewriteIfWithConstZeroTest(Type.GT, true, IfLtz.class); + runRewriteIfWithConstZeroTest(Type.EQ, true, DexIfEqz.class); + runRewriteIfWithConstZeroTest(Type.NE, true, DexIfNez.class); + runRewriteIfWithConstZeroTest(Type.LE, true, DexIfGez.class); + runRewriteIfWithConstZeroTest(Type.GE, true, DexIfLez.class); + runRewriteIfWithConstZeroTest(Type.LT, true, DexIfGtz.class); + runRewriteIfWithConstZeroTest(Type.GT, true, DexIfLtz.class); - runRewriteIfWithConstZeroTest(Type.EQ, false, IfEqz.class); - runRewriteIfWithConstZeroTest(Type.NE, false, IfNez.class); - runRewriteIfWithConstZeroTest(Type.LE, false, IfLez.class); - runRewriteIfWithConstZeroTest(Type.GE, false, IfGez.class); - runRewriteIfWithConstZeroTest(Type.LT, false, IfLtz.class); - runRewriteIfWithConstZeroTest(Type.GT, false, IfGtz.class); + runRewriteIfWithConstZeroTest(Type.EQ, false, DexIfEqz.class); + runRewriteIfWithConstZeroTest(Type.NE, false, DexIfNez.class); + runRewriteIfWithConstZeroTest(Type.LE, false, DexIfLez.class); + runRewriteIfWithConstZeroTest(Type.GE, false, DexIfGez.class); + runRewriteIfWithConstZeroTest(Type.LT, false, DexIfLtz.class); + runRewriteIfWithConstZeroTest(Type.GT, false, DexIfGtz.class); } @Test public void x() { - DexEncodedMethod method = oneMethodApplication( - "Test", - Lists.newArrayList("Test", "java.lang.String[]", "java.lang.String", - "java.lang.String[]", "java.lang.String"), - 10, - " const/4 v4, 0x00 # 0", - " invoke-virtual { v10 }, LTest;->a()LTest;", - " if-nez v4, :label_8", - " move-object v0, v4", - " :label_7", - " return-object v0", - " :label_8", - " invoke-static { v14 }, LTest;->a([Ljava/lang/String;)LTest;", - " move-result-object v2", - " invoke-virtual { v2 }, LTest;->a()Z", - " move-result v0", - " if-nez v0, :label_20", - " move-object v0, v4", - " goto :label_7", - " :label_20", - " iget-wide v0, v2, LTest;->a:J", - " iget-wide v6, v2, LTest;->b:J", - " invoke-virtual { v2 }, LTest;->c()Z", - " move-result v2", - " if-eqz v2, :label_33", - " invoke-virtual { v4 }, LTest;->a()V", - " :label_33", - " new-instance v5, LTest;", - " sget-object v2, LTest;->a:[Ljava/lang/String;", - " invoke-direct { v5, v2 }, LTest;-><init>([Ljava/lang/String;)V", - " invoke-virtual { v10 }, LTest;->a()LTest;", - " invoke-virtual { v4, v0, v1, v6, v7 }, LTest;->a(JJ)Ljava/util/List;", - " move-result-object v2", - " invoke-interface { v2 }, Ljava/util/List;->iterator()Ljava/util/Iterator;", - " move-result-object v6", - " move-wide v2, v0", - " :label_52", - " invoke-interface { v6 }, Ljava/util/Iterator;->hasNext()Z", - " move-result v0", - " if-eqz v0, :label_107", - " invoke-interface { v6 }, Ljava/util/Iterator;->next()Ljava/lang/Object;", - " move-result-object v0", - " check-cast v0, LTest;", - " const-wide/16 v8, 0x0000000000000001 # 1", - " add-long/2addr v2, v8", - " invoke-virtual { v5 }, LTest;->newRow()LTest;", - " move-result-object v1", - " invoke-static { v2, v3 }, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;", - " move-result-object v7", - " invoke-virtual { v1, v7 }, LTest;->a(Ljava/lang/Object;)LTest;", - " move-result-object v1", - " const-string v7, \"add\"", - " invoke-virtual { v1, v7 }, LTest;->a(Ljava/lang/Object;)LTest;", - " move-result-object v1", - " iget-object v7, v0, LTest;->a:Ljava/lang/String;", - " invoke-virtual { v1, v7 }, LTest;->a(Ljava/lang/Object;)LTest;", - " move-result-object v1", - " iget v7, v0, LTest;->b:I", - " invoke-static { v7 }, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;", - " move-result-object v7", - " invoke-virtual { v1, v7 }, LTest;->add(Ljava/lang/Object;)LTest;", - " move-result-object v1", - " iget-object v0, v0, LTest;->a:Ljava/lang/String;", - " invoke-virtual { v1, v0 }, LTest;->add(Ljava/lang/Object;)LTest;", - " goto :label_52", - " :label_107", - " iget-object v0, v4, LTest;->a:LTest;", - " const-string v1, \"text 1\"", - " const/4 v2, 0x00 # 0", - " invoke-virtual { v0, v1, v2 }, LTest;->a(Ljava/lang/String;I)LTest;", - " move-result-object v0", - " const-string v1, \"text 2\"", - " const-string v2, \"\"", - " invoke-interface { v0, v1, v2 }, LTest;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;", - " move-result-object v0", - " invoke-static { v5, v0 }, LTest;->a(LTest;Ljava/lang/String;)LTest;", - " move-result-object v0", - " goto :label_7" - ); + DexEncodedMethod method = + oneMethodApplication( + "Test", + Lists.newArrayList( + "Test", + "java.lang.String[]", + "java.lang.String", + "java.lang.String[]", + "java.lang.String"), + 10, + " const/4 v4, 0x00 # 0", + " invoke-virtual { v10 }, LTest;->a()LTest;", + " if-nez v4, :label_8", + " move-object v0, v4", + " :label_7", + " return-object v0", + " :label_8", + " invoke-static { v14 }, LTest;->a([Ljava/lang/String;)LTest;", + " move-result-object v2", + " invoke-virtual { v2 }, LTest;->a()Z", + " move-result v0", + " if-nez v0, :label_20", + " move-object v0, v4", + " goto :label_7", + " :label_20", + " iget-wide v0, v2, LTest;->a:J", + " iget-wide v6, v2, LTest;->b:J", + " invoke-virtual { v2 }, LTest;->c()Z", + " move-result v2", + " if-eqz v2, :label_33", + " invoke-virtual { v4 }, LTest;->a()V", + " :label_33", + " new-instance v5, LTest;", + " sget-object v2, LTest;->a:[Ljava/lang/String;", + " invoke-direct { v5, v2 }, LTest;-><init>([Ljava/lang/String;)V", + " invoke-virtual { v10 }, LTest;->a()LTest;", + " invoke-virtual { v4, v0, v1, v6, v7 }, LTest;->a(JJ)Ljava/util/List;", + " move-result-object v2", + " invoke-interface { v2 }," + + " Ljava/util/List;->iterator()Ljava/util/Iterator;", + " move-result-object v6", + " move-wide v2, v0", + " :label_52", + " invoke-interface { v6 }, Ljava/util/Iterator;->hasNext()Z", + " move-result v0", + " if-eqz v0, :label_107", + " invoke-interface { v6 }, Ljava/util/Iterator;->next()Ljava/lang/Object;", + " move-result-object v0", + " check-cast v0, LTest;", + " const-wide/16 v8, 0x0000000000000001 # 1", + " add-long/2addr v2, v8", + " invoke-virtual { v5 }, LTest;->newRow()LTest;", + " move-result-object v1", + " invoke-static { v2, v3 }," + + " Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;", + " move-result-object v7", + " invoke-virtual { v1, v7 }, LTest;->a(Ljava/lang/Object;)LTest;", + " move-result-object v1", + " const-string v7, \"add\"", + " invoke-virtual { v1, v7 }, LTest;->a(Ljava/lang/Object;)LTest;", + " move-result-object v1", + " iget-object v7, v0, LTest;->a:Ljava/lang/String;", + " invoke-virtual { v1, v7 }, LTest;->a(Ljava/lang/Object;)LTest;", + " move-result-object v1", + " iget v7, v0, LTest;->b:I", + " invoke-static { v7 }," + + " Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;", + " move-result-object v7", + " invoke-virtual { v1, v7 }, LTest;->add(Ljava/lang/Object;)LTest;", + " move-result-object v1", + " iget-object v0, v0, LTest;->a:Ljava/lang/String;", + " invoke-virtual { v1, v0 }, LTest;->add(Ljava/lang/Object;)LTest;", + " goto :label_52", + " :label_107", + " iget-object v0, v4, LTest;->a:LTest;", + " const-string v1, \"text 1\"", + " const/4 v2, 0x00 # 0", + " invoke-virtual { v0, v1, v2 }, LTest;->a(Ljava/lang/String;I)LTest;", + " move-result-object v0", + " const-string v1, \"text 2\"", + " const-string v2, \"\"", + " invoke-interface { v0, v1, v2 }," + + " LTest;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;", + " move-result-object v0", + " invoke-static { v5, v0 }, LTest;->a(LTest;Ljava/lang/String;)LTest;", + " move-result-object v0", + " goto :label_7"); DexCode code = method.getCode().asDexCode(); assertEquals(3, code.instructions.length); - assertTrue(code.instructions[0] instanceof InvokeVirtual); - assertTrue(code.instructions[1] instanceof Const4); - assertEquals(0, ((Const4) code.instructions[1]).B); - assertTrue(code.instructions[2] instanceof ReturnObject); + assertTrue(code.instructions[0] instanceof DexInvokeVirtual); + assertTrue(code.instructions[1] instanceof DexConst4); + assertEquals(0, ((DexConst4) code.instructions[1]).B); + assertTrue(code.instructions[2] instanceof DexReturnObject); } @Test
diff --git a/src/test/java/com/android/tools/r8/smali/OutlineTest.java b/src/test/java/com/android/tools/r8/smali/OutlineTest.java index 042bec1..10d96c1 100644 --- a/src/test/java/com/android/tools/r8/smali/OutlineTest.java +++ b/src/test/java/com/android/tools/r8/smali/OutlineTest.java
@@ -9,24 +9,24 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import com.android.tools.r8.code.Const4; -import com.android.tools.r8.code.ConstString; -import com.android.tools.r8.code.ConstWide; -import com.android.tools.r8.code.ConstWideHigh16; -import com.android.tools.r8.code.DivInt; -import com.android.tools.r8.code.DivInt2Addr; -import com.android.tools.r8.code.Goto; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.InvokeStatic; -import com.android.tools.r8.code.InvokeStaticRange; -import com.android.tools.r8.code.InvokeVirtual; -import com.android.tools.r8.code.MoveResult; -import com.android.tools.r8.code.MoveResultObject; -import com.android.tools.r8.code.MoveResultWide; -import com.android.tools.r8.code.Return; -import com.android.tools.r8.code.ReturnObject; -import com.android.tools.r8.code.ReturnVoid; -import com.android.tools.r8.code.ReturnWide; +import com.android.tools.r8.dex.code.DexConst4; +import com.android.tools.r8.dex.code.DexConstString; +import com.android.tools.r8.dex.code.DexConstWide; +import com.android.tools.r8.dex.code.DexConstWideHigh16; +import com.android.tools.r8.dex.code.DexDivInt; +import com.android.tools.r8.dex.code.DexDivInt2Addr; +import com.android.tools.r8.dex.code.DexGoto; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeStatic; +import com.android.tools.r8.dex.code.DexInvokeStaticRange; +import com.android.tools.r8.dex.code.DexInvokeVirtual; +import com.android.tools.r8.dex.code.DexMoveResult; +import com.android.tools.r8.dex.code.DexMoveResultObject; +import com.android.tools.r8.dex.code.DexMoveResultWide; +import com.android.tools.r8.dex.code.DexReturn; +import com.android.tools.r8.dex.code.DexReturnObject; +import com.android.tools.r8.dex.code.DexReturnVoid; +import com.android.tools.r8.dex.code.DexReturnWide; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexEncodedMethod; import com.android.tools.r8.graph.DexItemFactory; @@ -158,9 +158,9 @@ DexEncodedMethod method = getMethod(processedApplication, signature); DexCode code = method.getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof ConstString); - assertTrue(code.instructions[1] instanceof InvokeStatic); - InvokeStatic invoke = (InvokeStatic) code.instructions[1]; + assertTrue(code.instructions[0] instanceof DexConstString); + assertTrue(code.instructions[1] instanceof DexInvokeStatic); + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[1]; assertTrue(isOutlineMethodName(invoke.getMethod())); // Run code and check result. @@ -230,10 +230,10 @@ // Up to 4 const instructions before the invoke of the outline. int firstOutlineInvoke = Math.min(i, 4); for (int j = 0; j < firstOutlineInvoke; j++) { - assertTrue(code.instructions[j] instanceof ConstString); + assertTrue(code.instructions[j] instanceof DexConstString); } - assertTrue(code.instructions[firstOutlineInvoke] instanceof InvokeStatic); - InvokeStatic invoke = (InvokeStatic) code.instructions[firstOutlineInvoke]; + assertTrue(code.instructions[firstOutlineInvoke] instanceof DexInvokeStatic); + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[firstOutlineInvoke]; assertTrue(isOutlineMethodName(invoke.getMethod())); // Run code and check result. @@ -287,9 +287,9 @@ DexEncodedMethod method = getMethod(processedApplication, signature); DexCode code = method.getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof ConstString); - assertTrue(code.instructions[1] instanceof InvokeStatic); - InvokeStatic invoke = (InvokeStatic) code.instructions[1]; + assertTrue(code.instructions[0] instanceof DexConstString); + assertTrue(code.instructions[1] instanceof DexInvokeStatic); + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[1]; assertTrue(isOutlineMethodName(invoke.getMethod())); // Run code and check result. @@ -349,10 +349,10 @@ DexEncodedMethod method = getMethod(processedApplication, signature); DexCode code = method.getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof ConstString); - assertTrue(code.instructions[1] instanceof ConstString); - assertTrue(code.instructions[2] instanceof InvokeStatic); - InvokeStatic invoke = (InvokeStatic) code.instructions[2]; + assertTrue(code.instructions[0] instanceof DexConstString); + assertTrue(code.instructions[1] instanceof DexConstString); + assertTrue(code.instructions[2] instanceof DexInvokeStatic); + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[2]; assertTrue(isOutlineMethodName(invoke.getMethod())); // Run code and check result. @@ -414,16 +414,16 @@ DexEncodedMethod method = getMethod(processedApplication, signature); DexCode code = method.getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof ConstWide); + assertTrue(code.instructions[0] instanceof DexConstWide); if (i < 3) { - assertTrue(code.instructions[1] instanceof InvokeStatic); - InvokeStatic invoke = (InvokeStatic) code.instructions[1]; + assertTrue(code.instructions[1] instanceof DexInvokeStatic); + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[1]; assertTrue(isOutlineMethodName(invoke.getMethod())); } else { - assertTrue(code.instructions[1] instanceof InvokeVirtual); - assertTrue(code.instructions[2] instanceof InvokeVirtual); - assertTrue(code.instructions[3] instanceof InvokeStatic); - InvokeStatic invoke = (InvokeStatic) code.instructions[3]; + assertTrue(code.instructions[1] instanceof DexInvokeVirtual); + assertTrue(code.instructions[2] instanceof DexInvokeVirtual); + assertTrue(code.instructions[3] instanceof DexInvokeStatic); + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[3]; assertTrue(isOutlineMethodName(invoke.getMethod())); } @@ -491,16 +491,16 @@ DexEncodedMethod method = getMethod(processedApplication, signature); DexCode code = method.getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof ConstWideHigh16); + assertTrue(code.instructions[0] instanceof DexConstWideHigh16); if (i < 3) { - assertTrue(code.instructions[1] instanceof InvokeStatic); - InvokeStatic invoke = (InvokeStatic) code.instructions[1]; + assertTrue(code.instructions[1] instanceof DexInvokeStatic); + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[1]; assertTrue(isOutlineMethodName(invoke.getMethod())); } else { - assertTrue(code.instructions[1] instanceof InvokeVirtual); - assertTrue(code.instructions[2] instanceof InvokeVirtual); - assertTrue(code.instructions[3] instanceof InvokeStatic); - InvokeStatic invoke = (InvokeStatic) code.instructions[3]; + assertTrue(code.instructions[1] instanceof DexInvokeVirtual); + assertTrue(code.instructions[2] instanceof DexInvokeVirtual); + assertTrue(code.instructions[3] instanceof DexInvokeStatic); + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[3]; assertTrue(isOutlineMethodName(invoke.getMethod())); } @@ -572,14 +572,14 @@ assert mainCode.instructions.length == 7; } if (i == 2) { - InvokeStatic invoke = (InvokeStatic) mainCode.instructions[4]; + DexInvokeStatic invoke = (DexInvokeStatic) mainCode.instructions[4]; assertTrue(isOutlineMethodName(invoke.getMethod())); } else if (i == 3) { - InvokeStatic invoke = (InvokeStatic) mainCode.instructions[1]; + DexInvokeStatic invoke = (DexInvokeStatic) mainCode.instructions[1]; assertTrue(isOutlineMethodName(invoke.getMethod())); } else { assert i == 4 || i == 5; - InvokeStatic invoke = (InvokeStatic) mainCode.instructions[2]; + DexInvokeStatic invoke = (DexInvokeStatic) mainCode.instructions[2]; assertTrue(isOutlineMethodName(invoke.getMethod())); } @@ -661,14 +661,14 @@ DexCode code1 = getMethod(processedApplication, signature1).getCode().asDexCode(); assertEquals(4, code1.instructions.length); - assertTrue(code1.instructions[1] instanceof InvokeStatic); - InvokeStatic invoke1 = (InvokeStatic) code1.instructions[1]; + assertTrue(code1.instructions[1] instanceof DexInvokeStatic); + DexInvokeStatic invoke1 = (DexInvokeStatic) code1.instructions[1]; assertTrue(isOutlineMethodName(invoke1.getMethod())); DexCode code2 = getMethod(processedApplication, signature2).getCode().asDexCode(); assertEquals(5, code2.instructions.length); - assertTrue(code2.instructions[2] instanceof InvokeStatic); - InvokeStatic invoke2 = (InvokeStatic) code2.instructions[2]; + assertTrue(code2.instructions[2] instanceof DexInvokeStatic); + DexInvokeStatic invoke2 = (DexInvokeStatic) code2.instructions[2]; assertTrue(isOutlineMethodName(invoke1.getMethod())); // Run code and check result. @@ -739,12 +739,12 @@ default: outlineInstructionIndex = 2; } - Instruction instruction = code.instructions[outlineInstructionIndex]; - if (instruction instanceof InvokeStatic) { - InvokeStatic invoke = (InvokeStatic) instruction; + DexInstruction instruction = code.instructions[outlineInstructionIndex]; + if (instruction instanceof DexInvokeStatic) { + DexInvokeStatic invoke = (DexInvokeStatic) instruction; assertTrue(isOutlineMethodName(invoke.getMethod())); } else { - InvokeStaticRange invoke = (InvokeStaticRange) instruction; + DexInvokeStaticRange invoke = (DexInvokeStaticRange) instruction; assertTrue(isOutlineMethodName(invoke.getMethod())); } @@ -791,9 +791,9 @@ assertEquals(2, getNumberOfProgramClasses(processedApplication)); DexCode code = getMethod(processedApplication, signature1).getCode().asDexCode(); - InvokeStatic invoke; - assertTrue(code.instructions[0] instanceof InvokeStatic); - invoke = (InvokeStatic) code.instructions[0]; + DexInvokeStatic invoke; + assertTrue(code.instructions[0] instanceof DexInvokeStatic); + invoke = (DexInvokeStatic) code.instructions[0]; assertTrue(isOutlineMethodName(invoke.getMethod())); // Run code and check result. @@ -871,7 +871,7 @@ // Collect the return types of the outlines for the body of method1 and method2. List<DexType> r = new ArrayList<>(); for (DexEncodedMethod directMethod : outlineMethods) { - if (directMethod.getCode().asDexCode().instructions[0] instanceof InvokeVirtual) { + if (directMethod.getCode().asDexCode().instructions[0] instanceof DexInvokeVirtual) { r.add(directMethod.getReference().proto.returnType); } } @@ -1022,10 +1022,10 @@ // The calls to set, set and getTimeInMillis was outlined. DexCode code = method.getCode().asDexCode(); assertEquals(3, code.instructions.length); - assertTrue(code.instructions[0] instanceof InvokeStatic); - assertTrue(code.instructions[1] instanceof MoveResultWide); - assertTrue(code.instructions[2] instanceof ReturnWide); - InvokeStatic invoke = (InvokeStatic) code.instructions[0]; + assertTrue(code.instructions[0] instanceof DexInvokeStatic); + assertTrue(code.instructions[1] instanceof DexMoveResultWide); + assertTrue(code.instructions[2] instanceof DexReturnWide); + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[0]; assertEquals(firstOutlineMethodName(), invoke.getMethod().qualifiedName()); // Run the code and expect a parsable long. @@ -1139,9 +1139,9 @@ DexEncodedMethod method = getMethod(processedApplication, signature); DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); - assertTrue(code.instructions[0] instanceof InvokeStatic); - assertTrue(code.instructions[1] instanceof ReturnObject); - InvokeStatic invoke = (InvokeStatic) code.instructions[0]; + assertTrue(code.instructions[0] instanceof DexInvokeStatic); + assertTrue(code.instructions[1] instanceof DexReturnObject); + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[0]; assertEquals(firstOutlineMethodName(), invoke.getMethod().qualifiedName()); // Run code and check result. @@ -1215,16 +1215,16 @@ DexEncodedMethod method1 = getMethod(processedApplication, signature1); DexCode code1 = method1.getCode().asDexCode(); assertEquals(3, code1.instructions.length); - assertTrue(code1.instructions[0] instanceof InvokeStatic); - assertTrue(code1.instructions[1] instanceof MoveResult); - assertTrue(code1.instructions[2] instanceof Return); - InvokeStatic invoke1 = (InvokeStatic) code1.instructions[0]; + assertTrue(code1.instructions[0] instanceof DexInvokeStatic); + assertTrue(code1.instructions[1] instanceof DexMoveResult); + assertTrue(code1.instructions[2] instanceof DexReturn); + DexInvokeStatic invoke1 = (DexInvokeStatic) code1.instructions[0]; assertTrue(isOutlineMethodName(invoke1.getMethod())); DexEncodedMethod method2 = getMethod(processedApplication, signature2); DexCode code2 = method2.getCode().asDexCode(); - assertTrue(code2.instructions[0] instanceof InvokeStatic); - InvokeStatic invoke2 = (InvokeStatic) code2.instructions[0]; + assertTrue(code2.instructions[0] instanceof DexInvokeStatic); + DexInvokeStatic invoke2 = (DexInvokeStatic) code2.instructions[0]; assertEquals(invoke1.getMethod().qualifiedName(), invoke2.getMethod().qualifiedName()); // Run code and check result. @@ -1293,14 +1293,14 @@ DexEncodedMethod method = getMethod(processedApplication, signature); DexCode code = method.getCode().asDexCode(); assertEquals(7, code.instructions.length); - assertTrue(code.instructions[0] instanceof DivInt); - assertTrue(code.instructions[1] instanceof InvokeStatic); - assertTrue(code.instructions[2] instanceof MoveResult); - assertTrue(code.instructions[3] instanceof DivInt2Addr); - assertTrue(code.instructions[4] instanceof Goto); - assertTrue(code.instructions[5] instanceof Const4); - assertTrue(code.instructions[6] instanceof Return); - InvokeStatic invoke = (InvokeStatic) code.instructions[1]; + assertTrue(code.instructions[0] instanceof DexDivInt); + assertTrue(code.instructions[1] instanceof DexInvokeStatic); + assertTrue(code.instructions[2] instanceof DexMoveResult); + assertTrue(code.instructions[3] instanceof DexDivInt2Addr); + assertTrue(code.instructions[4] instanceof DexGoto); + assertTrue(code.instructions[5] instanceof DexConst4); + assertTrue(code.instructions[6] instanceof DexReturn); + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[1]; assertTrue(isOutlineMethodName(invoke.getMethod())); // Run code and check result. @@ -1347,10 +1347,10 @@ DexEncodedMethod method = getMethod(processedApplication, signature); DexCode code = method.getCode().asDexCode(); assertEquals(3, code.instructions.length); - assertTrue(code.instructions[0] instanceof InvokeStatic); - assertTrue(code.instructions[1] instanceof MoveResultObject); - assertTrue(code.instructions[2] instanceof ReturnObject); - InvokeStatic invoke = (InvokeStatic) code.instructions[0]; + assertTrue(code.instructions[0] instanceof DexInvokeStatic); + assertTrue(code.instructions[1] instanceof DexMoveResultObject); + assertTrue(code.instructions[2] instanceof DexReturnObject); + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[0]; assertEquals(firstOutlineMethodName(), invoke.getMethod().qualifiedName()); // Run code and check result. @@ -1405,9 +1405,9 @@ DexEncodedMethod method = getMethod(processedApplication, signature); DexCode code = method.getCode().asDexCode(); assertEquals(2, code.instructions.length); - assertTrue(code.instructions[0] instanceof InvokeStatic); - assertTrue(code.instructions[1] instanceof ReturnVoid); - InvokeStatic invoke = (InvokeStatic) code.instructions[0]; + assertTrue(code.instructions[0] instanceof DexInvokeStatic); + assertTrue(code.instructions[1] instanceof DexReturnVoid); + DexInvokeStatic invoke = (DexInvokeStatic) code.instructions[0]; assertEquals(firstOutlineMethodName(), invoke.getMethod().qualifiedName()); // Run code and check result. @@ -1635,8 +1635,8 @@ runDex2Oat(processedApplication); } - private static boolean isOutlineInvoke(Instruction instruction) { - return instruction instanceof InvokeStatic && isOutlineMethodName(instruction.getMethod()); + private static boolean isOutlineInvoke(DexInstruction instruction) { + return instruction instanceof DexInvokeStatic && isOutlineMethodName(instruction.getMethod()); } private void assertHasOutlineInvoke(DexEncodedMethod method) {
diff --git a/src/test/java/com/android/tools/r8/smali/RunArtSmokeTest.java b/src/test/java/com/android/tools/r8/smali/RunArtSmokeTest.java index 4d13ae0..00e8d8f 100644 --- a/src/test/java/com/android/tools/r8/smali/RunArtSmokeTest.java +++ b/src/test/java/com/android/tools/r8/smali/RunArtSmokeTest.java
@@ -8,10 +8,10 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import com.android.tools.r8.code.ConstString; -import com.android.tools.r8.code.InvokeVirtual; -import com.android.tools.r8.code.ReturnVoid; -import com.android.tools.r8.code.SgetObject; +import com.android.tools.r8.dex.code.DexConstString; +import com.android.tools.r8.dex.code.DexInvokeVirtual; +import com.android.tools.r8.dex.code.DexReturnVoid; +import com.android.tools.r8.dex.code.DexSgetObject; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.graph.DexEncodedMethod; import com.android.tools.r8.smali.SmaliBuilder.MethodSignature; @@ -42,10 +42,10 @@ assertNotNull(main); DexCode code = main.getCode().asDexCode(); - assertTrue(code.instructions[0] instanceof SgetObject); - assertTrue(code.instructions[1] instanceof ConstString); - assertTrue(code.instructions[2] instanceof InvokeVirtual); - assertTrue(code.instructions[3] instanceof ReturnVoid); + assertTrue(code.instructions[0] instanceof DexSgetObject); + assertTrue(code.instructions[1] instanceof DexConstString); + assertTrue(code.instructions[2] instanceof DexInvokeVirtual); + assertTrue(code.instructions[3] instanceof DexReturnVoid); // Run the generated code in Art. String result = runArt(processedApplication);
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/CheckCastDexInstructionSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/CheckCastDexInstructionSubject.java index ea10ad4..671ec25 100644 --- a/src/test/java/com/android/tools/r8/utils/codeinspector/CheckCastDexInstructionSubject.java +++ b/src/test/java/com/android/tools/r8/utils/codeinspector/CheckCastDexInstructionSubject.java
@@ -4,20 +4,20 @@ package com.android.tools.r8.utils.codeinspector; -import com.android.tools.r8.code.CheckCast; -import com.android.tools.r8.code.Instruction; +import com.android.tools.r8.dex.code.DexCheckCast; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.graph.DexType; public class CheckCastDexInstructionSubject extends DexInstructionSubject implements CheckCastInstructionSubject { - public CheckCastDexInstructionSubject(Instruction instruction, MethodSubject method) { + public CheckCastDexInstructionSubject(DexInstruction instruction, MethodSubject method) { super(instruction, method); assert isCheckCast(); } @Override public DexType getType() { - return ((CheckCast) instruction).getType(); + return ((DexCheckCast) instruction).getType(); } @Override
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java b/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java index d9869b2..44942ab 100644 --- a/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java +++ b/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
@@ -8,9 +8,9 @@ import com.android.tools.r8.TestDiagnosticMessagesImpl; import com.android.tools.r8.cf.code.CfInstruction; import com.android.tools.r8.cf.code.CfTryCatch; -import com.android.tools.r8.code.Instruction; import com.android.tools.r8.dex.ApplicationReader; import com.android.tools.r8.dex.Marker; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.errors.Unimplemented; import com.android.tools.r8.graph.CfCode; import com.android.tools.r8.graph.Code; @@ -391,7 +391,9 @@ } InstructionSubject createInstructionSubject( - Instruction instruction, MethodSubject method, SwitchPayloadResolver switchPayloadResolver) { + DexInstruction instruction, + MethodSubject method, + SwitchPayloadResolver switchPayloadResolver) { DexInstructionSubject dexInst = new DexInstructionSubject(instruction, method); if (dexInst.isInvoke()) { return new InvokeDexInstructionSubject(this, instruction, method);
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/ConstStringDexInstructionSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/ConstStringDexInstructionSubject.java index ddff370..62da578 100644 --- a/src/test/java/com/android/tools/r8/utils/codeinspector/ConstStringDexInstructionSubject.java +++ b/src/test/java/com/android/tools/r8/utils/codeinspector/ConstStringDexInstructionSubject.java
@@ -4,25 +4,25 @@ package com.android.tools.r8.utils.codeinspector; -import com.android.tools.r8.code.ConstString; -import com.android.tools.r8.code.ConstStringJumbo; -import com.android.tools.r8.code.Instruction; +import com.android.tools.r8.dex.code.DexConstString; +import com.android.tools.r8.dex.code.DexConstStringJumbo; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.graph.DexString; public class ConstStringDexInstructionSubject extends DexInstructionSubject implements ConstStringInstructionSubject { - public ConstStringDexInstructionSubject(Instruction instruction, MethodSubject method) { + public ConstStringDexInstructionSubject(DexInstruction instruction, MethodSubject method) { super(instruction, method); assert isConstString(JumboStringMode.ALLOW); } @Override public DexString getString() { - if (instruction instanceof ConstString) { - return ((ConstString) instruction).getString(); + if (instruction instanceof DexConstString) { + return ((DexConstString) instruction).getString(); } else { - assert (instruction instanceof ConstStringJumbo); - return ((ConstStringJumbo) instruction).getString(); + assert (instruction instanceof DexConstStringJumbo); + return ((DexConstStringJumbo) instruction).getString(); } } }
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/DexInstructionIterator.java b/src/test/java/com/android/tools/r8/utils/codeinspector/DexInstructionIterator.java index 1ea464c..31b85c3 100644 --- a/src/test/java/com/android/tools/r8/utils/codeinspector/DexInstructionIterator.java +++ b/src/test/java/com/android/tools/r8/utils/codeinspector/DexInstructionIterator.java
@@ -4,8 +4,8 @@ package com.android.tools.r8.utils.codeinspector; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.SwitchPayload; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexSwitchPayload; import com.android.tools.r8.graph.Code; import com.android.tools.r8.graph.DexCode; import com.android.tools.r8.ir.conversion.SwitchPayloadResolver; @@ -49,12 +49,12 @@ private void ensureSwitchPayloadResolver() { if (switchPayloadResolver == null) { switchPayloadResolver = new SwitchPayloadResolver(); - for (Instruction instruction : code.instructions) { + for (DexInstruction instruction : code.instructions) { if (instruction.isIntSwitch()) { switchPayloadResolver.addPayloadUser(instruction); } if (instruction.isSwitchPayload()) { - switchPayloadResolver.resolve((SwitchPayload) instruction); + switchPayloadResolver.resolve((DexSwitchPayload) instruction); } } }
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/DexInstructionSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/DexInstructionSubject.java index 00cfc92..2785f57 100644 --- a/src/test/java/com/android/tools/r8/utils/codeinspector/DexInstructionSubject.java +++ b/src/test/java/com/android/tools/r8/utils/codeinspector/DexInstructionSubject.java
@@ -4,109 +4,109 @@ package com.android.tools.r8.utils.codeinspector; -import com.android.tools.r8.code.Aget; -import com.android.tools.r8.code.AgetBoolean; -import com.android.tools.r8.code.AgetByte; -import com.android.tools.r8.code.AgetChar; -import com.android.tools.r8.code.AgetObject; -import com.android.tools.r8.code.AgetShort; -import com.android.tools.r8.code.AgetWide; -import com.android.tools.r8.code.Aput; -import com.android.tools.r8.code.AputBoolean; -import com.android.tools.r8.code.AputByte; -import com.android.tools.r8.code.AputChar; -import com.android.tools.r8.code.AputObject; -import com.android.tools.r8.code.AputShort; -import com.android.tools.r8.code.AputWide; -import com.android.tools.r8.code.ArrayLength; -import com.android.tools.r8.code.CheckCast; -import com.android.tools.r8.code.Const; -import com.android.tools.r8.code.Const16; -import com.android.tools.r8.code.Const4; -import com.android.tools.r8.code.ConstClass; -import com.android.tools.r8.code.ConstHigh16; -import com.android.tools.r8.code.ConstString; -import com.android.tools.r8.code.ConstStringJumbo; -import com.android.tools.r8.code.ConstWide; -import com.android.tools.r8.code.ConstWide16; -import com.android.tools.r8.code.ConstWide32; -import com.android.tools.r8.code.ConstWideHigh16; -import com.android.tools.r8.code.Goto; -import com.android.tools.r8.code.IfEq; -import com.android.tools.r8.code.IfEqz; -import com.android.tools.r8.code.IfGe; -import com.android.tools.r8.code.IfGez; -import com.android.tools.r8.code.IfGt; -import com.android.tools.r8.code.IfGtz; -import com.android.tools.r8.code.IfLe; -import com.android.tools.r8.code.IfLez; -import com.android.tools.r8.code.IfLt; -import com.android.tools.r8.code.IfLtz; -import com.android.tools.r8.code.IfNe; -import com.android.tools.r8.code.IfNez; -import com.android.tools.r8.code.Iget; -import com.android.tools.r8.code.IgetBoolean; -import com.android.tools.r8.code.IgetByte; -import com.android.tools.r8.code.IgetChar; -import com.android.tools.r8.code.IgetObject; -import com.android.tools.r8.code.IgetShort; -import com.android.tools.r8.code.IgetWide; -import com.android.tools.r8.code.InstanceOf; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.InvokeCustom; -import com.android.tools.r8.code.InvokeCustomRange; -import com.android.tools.r8.code.InvokeDirect; -import com.android.tools.r8.code.InvokeDirectRange; -import com.android.tools.r8.code.InvokeInterface; -import com.android.tools.r8.code.InvokeInterfaceRange; -import com.android.tools.r8.code.InvokeStatic; -import com.android.tools.r8.code.InvokeStaticRange; -import com.android.tools.r8.code.InvokeSuper; -import com.android.tools.r8.code.InvokeSuperRange; -import com.android.tools.r8.code.InvokeVirtual; -import com.android.tools.r8.code.InvokeVirtualRange; -import com.android.tools.r8.code.Iput; -import com.android.tools.r8.code.IputBoolean; -import com.android.tools.r8.code.IputByte; -import com.android.tools.r8.code.IputChar; -import com.android.tools.r8.code.IputObject; -import com.android.tools.r8.code.IputShort; -import com.android.tools.r8.code.IputWide; -import com.android.tools.r8.code.MonitorEnter; -import com.android.tools.r8.code.MonitorExit; -import com.android.tools.r8.code.MulDouble; -import com.android.tools.r8.code.MulDouble2Addr; -import com.android.tools.r8.code.MulFloat; -import com.android.tools.r8.code.MulFloat2Addr; -import com.android.tools.r8.code.MulInt; -import com.android.tools.r8.code.MulInt2Addr; -import com.android.tools.r8.code.MulIntLit16; -import com.android.tools.r8.code.MulIntLit8; -import com.android.tools.r8.code.MulLong; -import com.android.tools.r8.code.MulLong2Addr; -import com.android.tools.r8.code.NewArray; -import com.android.tools.r8.code.NewInstance; -import com.android.tools.r8.code.Nop; -import com.android.tools.r8.code.PackedSwitch; -import com.android.tools.r8.code.Return; -import com.android.tools.r8.code.ReturnObject; -import com.android.tools.r8.code.ReturnVoid; -import com.android.tools.r8.code.Sget; -import com.android.tools.r8.code.SgetBoolean; -import com.android.tools.r8.code.SgetByte; -import com.android.tools.r8.code.SgetChar; -import com.android.tools.r8.code.SgetObject; -import com.android.tools.r8.code.SgetShort; -import com.android.tools.r8.code.SgetWide; -import com.android.tools.r8.code.SparseSwitch; -import com.android.tools.r8.code.Sput; -import com.android.tools.r8.code.SputBoolean; -import com.android.tools.r8.code.SputByte; -import com.android.tools.r8.code.SputChar; -import com.android.tools.r8.code.SputObject; -import com.android.tools.r8.code.SputShort; -import com.android.tools.r8.code.SputWide; -import com.android.tools.r8.code.Throw; +import com.android.tools.r8.dex.code.DexAget; +import com.android.tools.r8.dex.code.DexAgetBoolean; +import com.android.tools.r8.dex.code.DexAgetByte; +import com.android.tools.r8.dex.code.DexAgetChar; +import com.android.tools.r8.dex.code.DexAgetObject; +import com.android.tools.r8.dex.code.DexAgetShort; +import com.android.tools.r8.dex.code.DexAgetWide; +import com.android.tools.r8.dex.code.DexAput; +import com.android.tools.r8.dex.code.DexAputBoolean; +import com.android.tools.r8.dex.code.DexAputByte; +import com.android.tools.r8.dex.code.DexAputChar; +import com.android.tools.r8.dex.code.DexAputObject; +import com.android.tools.r8.dex.code.DexAputShort; +import com.android.tools.r8.dex.code.DexAputWide; +import com.android.tools.r8.dex.code.DexArrayLength; +import com.android.tools.r8.dex.code.DexCheckCast; +import com.android.tools.r8.dex.code.DexConst; +import com.android.tools.r8.dex.code.DexConst16; +import com.android.tools.r8.dex.code.DexConst4; +import com.android.tools.r8.dex.code.DexConstClass; +import com.android.tools.r8.dex.code.DexConstHigh16; +import com.android.tools.r8.dex.code.DexConstString; +import com.android.tools.r8.dex.code.DexConstStringJumbo; +import com.android.tools.r8.dex.code.DexConstWide; +import com.android.tools.r8.dex.code.DexConstWide16; +import com.android.tools.r8.dex.code.DexConstWide32; +import com.android.tools.r8.dex.code.DexConstWideHigh16; +import com.android.tools.r8.dex.code.DexGoto; +import com.android.tools.r8.dex.code.DexIfEq; +import com.android.tools.r8.dex.code.DexIfEqz; +import com.android.tools.r8.dex.code.DexIfGe; +import com.android.tools.r8.dex.code.DexIfGez; +import com.android.tools.r8.dex.code.DexIfGt; +import com.android.tools.r8.dex.code.DexIfGtz; +import com.android.tools.r8.dex.code.DexIfLe; +import com.android.tools.r8.dex.code.DexIfLez; +import com.android.tools.r8.dex.code.DexIfLt; +import com.android.tools.r8.dex.code.DexIfLtz; +import com.android.tools.r8.dex.code.DexIfNe; +import com.android.tools.r8.dex.code.DexIfNez; +import com.android.tools.r8.dex.code.DexIget; +import com.android.tools.r8.dex.code.DexIgetBoolean; +import com.android.tools.r8.dex.code.DexIgetByte; +import com.android.tools.r8.dex.code.DexIgetChar; +import com.android.tools.r8.dex.code.DexIgetObject; +import com.android.tools.r8.dex.code.DexIgetShort; +import com.android.tools.r8.dex.code.DexIgetWide; +import com.android.tools.r8.dex.code.DexInstanceOf; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexInvokeCustom; +import com.android.tools.r8.dex.code.DexInvokeCustomRange; +import com.android.tools.r8.dex.code.DexInvokeDirect; +import com.android.tools.r8.dex.code.DexInvokeDirectRange; +import com.android.tools.r8.dex.code.DexInvokeInterface; +import com.android.tools.r8.dex.code.DexInvokeInterfaceRange; +import com.android.tools.r8.dex.code.DexInvokeStatic; +import com.android.tools.r8.dex.code.DexInvokeStaticRange; +import com.android.tools.r8.dex.code.DexInvokeSuper; +import com.android.tools.r8.dex.code.DexInvokeSuperRange; +import com.android.tools.r8.dex.code.DexInvokeVirtual; +import com.android.tools.r8.dex.code.DexInvokeVirtualRange; +import com.android.tools.r8.dex.code.DexIput; +import com.android.tools.r8.dex.code.DexIputBoolean; +import com.android.tools.r8.dex.code.DexIputByte; +import com.android.tools.r8.dex.code.DexIputChar; +import com.android.tools.r8.dex.code.DexIputObject; +import com.android.tools.r8.dex.code.DexIputShort; +import com.android.tools.r8.dex.code.DexIputWide; +import com.android.tools.r8.dex.code.DexMonitorEnter; +import com.android.tools.r8.dex.code.DexMonitorExit; +import com.android.tools.r8.dex.code.DexMulDouble; +import com.android.tools.r8.dex.code.DexMulDouble2Addr; +import com.android.tools.r8.dex.code.DexMulFloat; +import com.android.tools.r8.dex.code.DexMulFloat2Addr; +import com.android.tools.r8.dex.code.DexMulInt; +import com.android.tools.r8.dex.code.DexMulInt2Addr; +import com.android.tools.r8.dex.code.DexMulIntLit16; +import com.android.tools.r8.dex.code.DexMulIntLit8; +import com.android.tools.r8.dex.code.DexMulLong; +import com.android.tools.r8.dex.code.DexMulLong2Addr; +import com.android.tools.r8.dex.code.DexNewArray; +import com.android.tools.r8.dex.code.DexNewInstance; +import com.android.tools.r8.dex.code.DexNop; +import com.android.tools.r8.dex.code.DexPackedSwitch; +import com.android.tools.r8.dex.code.DexReturn; +import com.android.tools.r8.dex.code.DexReturnObject; +import com.android.tools.r8.dex.code.DexReturnVoid; +import com.android.tools.r8.dex.code.DexSget; +import com.android.tools.r8.dex.code.DexSgetBoolean; +import com.android.tools.r8.dex.code.DexSgetByte; +import com.android.tools.r8.dex.code.DexSgetChar; +import com.android.tools.r8.dex.code.DexSgetObject; +import com.android.tools.r8.dex.code.DexSgetShort; +import com.android.tools.r8.dex.code.DexSgetWide; +import com.android.tools.r8.dex.code.DexSparseSwitch; +import com.android.tools.r8.dex.code.DexSput; +import com.android.tools.r8.dex.code.DexSputBoolean; +import com.android.tools.r8.dex.code.DexSputByte; +import com.android.tools.r8.dex.code.DexSputChar; +import com.android.tools.r8.dex.code.DexSputObject; +import com.android.tools.r8.dex.code.DexSputShort; +import com.android.tools.r8.dex.code.DexSputWide; +import com.android.tools.r8.dex.code.DexThrow; import com.android.tools.r8.graph.DexField; import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.ir.code.SingleConstant; @@ -114,10 +114,10 @@ public class DexInstructionSubject implements InstructionSubject { - protected final Instruction instruction; + protected final DexInstruction instruction; protected final MethodSubject method; - public DexInstructionSubject(Instruction instruction, MethodSubject method) { + public DexInstructionSubject(DexInstruction instruction, MethodSubject method) { this.instruction = instruction; this.method = method; } @@ -149,46 +149,46 @@ @Override public boolean isInstanceGet() { - return instruction instanceof Iget - || instruction instanceof IgetBoolean - || instruction instanceof IgetByte - || instruction instanceof IgetShort - || instruction instanceof IgetChar - || instruction instanceof IgetWide - || instruction instanceof IgetObject; + return instruction instanceof DexIget + || instruction instanceof DexIgetBoolean + || instruction instanceof DexIgetByte + || instruction instanceof DexIgetShort + || instruction instanceof DexIgetChar + || instruction instanceof DexIgetWide + || instruction instanceof DexIgetObject; } @Override public boolean isInstancePut() { - return instruction instanceof Iput - || instruction instanceof IputBoolean - || instruction instanceof IputByte - || instruction instanceof IputShort - || instruction instanceof IputChar - || instruction instanceof IputWide - || instruction instanceof IputObject; + return instruction instanceof DexIput + || instruction instanceof DexIputBoolean + || instruction instanceof DexIputByte + || instruction instanceof DexIputShort + || instruction instanceof DexIputChar + || instruction instanceof DexIputWide + || instruction instanceof DexIputObject; } @Override public boolean isStaticGet() { - return instruction instanceof Sget - || instruction instanceof SgetBoolean - || instruction instanceof SgetByte - || instruction instanceof SgetShort - || instruction instanceof SgetChar - || instruction instanceof SgetWide - || instruction instanceof SgetObject; + return instruction instanceof DexSget + || instruction instanceof DexSgetBoolean + || instruction instanceof DexSgetByte + || instruction instanceof DexSgetShort + || instruction instanceof DexSgetChar + || instruction instanceof DexSgetWide + || instruction instanceof DexSgetObject; } @Override public boolean isStaticPut() { - return instruction instanceof Sput - || instruction instanceof SputBoolean - || instruction instanceof SputByte - || instruction instanceof SputShort - || instruction instanceof SputChar - || instruction instanceof SputWide - || instruction instanceof SputObject; + return instruction instanceof DexSput + || instruction instanceof DexSputBoolean + || instruction instanceof DexSputByte + || instruction instanceof DexSputShort + || instruction instanceof DexSputChar + || instruction instanceof DexSputWide + || instruction instanceof DexSputObject; } @Override @@ -208,17 +208,18 @@ @Override public boolean isInvokeVirtual() { - return instruction instanceof InvokeVirtual || instruction instanceof InvokeVirtualRange; + return instruction instanceof DexInvokeVirtual || instruction instanceof DexInvokeVirtualRange; } @Override public boolean isInvokeInterface() { - return instruction instanceof InvokeInterface || instruction instanceof InvokeInterfaceRange; + return instruction instanceof DexInvokeInterface + || instruction instanceof DexInvokeInterfaceRange; } @Override public boolean isInvokeStatic() { - return instruction instanceof InvokeStatic || instruction instanceof InvokeStaticRange; + return instruction instanceof DexInvokeStatic || instruction instanceof DexInvokeStaticRange; } @Override @@ -227,15 +228,15 @@ } public boolean isInvokeCustom() { - return instruction instanceof InvokeCustom || instruction instanceof InvokeCustomRange; + return instruction instanceof DexInvokeCustom || instruction instanceof DexInvokeCustomRange; } public boolean isInvokeSuper() { - return instruction instanceof InvokeSuper || instruction instanceof InvokeSuperRange; + return instruction instanceof DexInvokeSuper || instruction instanceof DexInvokeSuperRange; } public boolean isInvokeDirect() { - return instruction instanceof InvokeDirect || instruction instanceof InvokeDirectRange; + return instruction instanceof DexInvokeDirect || instruction instanceof DexInvokeDirectRange; } @Override @@ -246,19 +247,19 @@ @Override public boolean isNop() { - return instruction instanceof Nop; + return instruction instanceof DexNop; } @Override public boolean isConstNumber() { - return instruction instanceof Const - || instruction instanceof Const4 - || instruction instanceof Const16 - || instruction instanceof ConstHigh16 - || instruction instanceof ConstWide - || instruction instanceof ConstWide16 - || instruction instanceof ConstWide32 - || instruction instanceof ConstWideHigh16; + return instruction instanceof DexConst + || instruction instanceof DexConst4 + || instruction instanceof DexConst16 + || instruction instanceof DexConstHigh16 + || instruction instanceof DexConstWide + || instruction instanceof DexConstWide16 + || instruction instanceof DexConstWide32 + || instruction instanceof DexConstWideHigh16; } @Override @@ -273,22 +274,22 @@ @Override public boolean isConstString(JumboStringMode jumboStringMode) { - return instruction instanceof ConstString - || (jumboStringMode == JumboStringMode.ALLOW && instruction instanceof ConstStringJumbo); + return instruction instanceof DexConstString + || (jumboStringMode == JumboStringMode.ALLOW && instruction instanceof DexConstStringJumbo); } @Override public boolean isConstString(String value, JumboStringMode jumboStringMode) { - return (instruction instanceof ConstString - && ((ConstString) instruction).BBBB.toSourceString().equals(value)) + return (instruction instanceof DexConstString + && ((DexConstString) instruction).BBBB.toSourceString().equals(value)) || (jumboStringMode == JumboStringMode.ALLOW - && instruction instanceof ConstStringJumbo - && ((ConstStringJumbo) instruction).BBBBBBBB.toSourceString().equals(value)); + && instruction instanceof DexConstStringJumbo + && ((DexConstStringJumbo) instruction).BBBBBBBB.toSourceString().equals(value)); } @Override public boolean isJumboString() { - return instruction instanceof ConstStringJumbo; + return instruction instanceof DexConstStringJumbo; } @Override public long getConstNumber() { @@ -302,44 +303,44 @@ @Override public String getConstString() { - if (instruction instanceof ConstString) { - return ((ConstString) instruction).BBBB.toSourceString(); + if (instruction instanceof DexConstString) { + return ((DexConstString) instruction).BBBB.toSourceString(); } - if (instruction instanceof ConstStringJumbo) { - return ((ConstStringJumbo) instruction).BBBBBBBB.toSourceString(); + if (instruction instanceof DexConstStringJumbo) { + return ((DexConstStringJumbo) instruction).BBBBBBBB.toSourceString(); } return null; } @Override public boolean isConstClass() { - return instruction instanceof ConstClass; + return instruction instanceof DexConstClass; } @Override public boolean isConstClass(String type) { - return isConstClass() && ((ConstClass) instruction).getType().toString().equals(type); + return isConstClass() && ((DexConstClass) instruction).getType().toString().equals(type); } @Override public boolean isGoto() { - return instruction instanceof Goto; + return instruction instanceof DexGoto; } @Override public boolean isIfNez() { - return instruction instanceof IfNez; + return instruction instanceof DexIfNez; } @Override public boolean isIfEq() { - return instruction instanceof IfEq; + return instruction instanceof DexIfEq; } @Override public boolean isIfEqz() { - return instruction instanceof IfEqz; + return instruction instanceof DexIfEqz; } @Override @@ -356,73 +357,72 @@ @Override public boolean isReturn() { - return instruction instanceof Return; + return instruction instanceof DexReturn; } @Override public boolean isReturnVoid() { - return instruction instanceof ReturnVoid; + return instruction instanceof DexReturnVoid; } @Override public boolean isReturnObject() { - return instruction instanceof ReturnObject; + return instruction instanceof DexReturnObject; } @Override public boolean isThrow() { - return instruction instanceof Throw; + return instruction instanceof DexThrow; } @Override public boolean isNewInstance() { - return instruction instanceof NewInstance; + return instruction instanceof DexNewInstance; } @Override public boolean isNewInstance(String type) { - return isNewInstance() - && ((NewInstance) instruction).getType().toString().equals(type); + return isNewInstance() && ((DexNewInstance) instruction).getType().toString().equals(type); } @Override public boolean isCheckCast() { - return instruction instanceof CheckCast; + return instruction instanceof DexCheckCast; } @Override public boolean isCheckCast(String type) { - return isCheckCast() && ((CheckCast) instruction).getType().toString().equals(type); + return isCheckCast() && ((DexCheckCast) instruction).getType().toString().equals(type); } @Override public boolean isInstanceOf() { - return instruction instanceof InstanceOf; + return instruction instanceof DexInstanceOf; } @Override public boolean isInstanceOf(String type) { - return isInstanceOf() && ((InstanceOf) instruction).getType().toString().equals(type); + return isInstanceOf() && ((DexInstanceOf) instruction).getType().toString().equals(type); } public boolean isConst4() { - return instruction instanceof Const4; + return instruction instanceof DexConst4; } @Override public boolean isIf() { - return instruction instanceof IfEq - || instruction instanceof IfEqz - || instruction instanceof IfGe - || instruction instanceof IfGez - || instruction instanceof IfGt - || instruction instanceof IfGtz - || instruction instanceof IfLe - || instruction instanceof IfLez - || instruction instanceof IfLt - || instruction instanceof IfLtz - || instruction instanceof IfNe - || instruction instanceof IfNez; + return instruction instanceof DexIfEq + || instruction instanceof DexIfEqz + || instruction instanceof DexIfGe + || instruction instanceof DexIfGez + || instruction instanceof DexIfGt + || instruction instanceof DexIfGtz + || instruction instanceof DexIfLe + || instruction instanceof DexIfLez + || instruction instanceof DexIfLt + || instruction instanceof DexIfLtz + || instruction instanceof DexIfNe + || instruction instanceof DexIfNez; } @Override @@ -432,68 +432,68 @@ @Override public boolean isPackedSwitch() { - return instruction instanceof PackedSwitch; + return instruction instanceof DexPackedSwitch; } @Override public boolean isSparseSwitch() { - return instruction instanceof SparseSwitch; + return instruction instanceof DexSparseSwitch; } @Override public boolean isMultiplication() { - return instruction instanceof MulInt - || instruction instanceof MulIntLit8 - || instruction instanceof MulIntLit16 - || instruction instanceof MulInt2Addr - || instruction instanceof MulFloat - || instruction instanceof MulFloat2Addr - || instruction instanceof MulLong - || instruction instanceof MulLong2Addr - || instruction instanceof MulDouble - || instruction instanceof MulDouble2Addr; + return instruction instanceof DexMulInt + || instruction instanceof DexMulIntLit8 + || instruction instanceof DexMulIntLit16 + || instruction instanceof DexMulInt2Addr + || instruction instanceof DexMulFloat + || instruction instanceof DexMulFloat2Addr + || instruction instanceof DexMulLong + || instruction instanceof DexMulLong2Addr + || instruction instanceof DexMulDouble + || instruction instanceof DexMulDouble2Addr; } @Override public boolean isNewArray() { - return instruction instanceof NewArray; + return instruction instanceof DexNewArray; } @Override public boolean isArrayLength() { - return instruction instanceof ArrayLength; + return instruction instanceof DexArrayLength; } @Override public boolean isArrayGet() { - return instruction instanceof Aget - || instruction instanceof AgetBoolean - || instruction instanceof AgetByte - || instruction instanceof AgetChar - || instruction instanceof AgetObject - || instruction instanceof AgetShort - || instruction instanceof AgetWide; + return instruction instanceof DexAget + || instruction instanceof DexAgetBoolean + || instruction instanceof DexAgetByte + || instruction instanceof DexAgetChar + || instruction instanceof DexAgetObject + || instruction instanceof DexAgetShort + || instruction instanceof DexAgetWide; } @Override public boolean isArrayPut() { - return instruction instanceof Aput - || instruction instanceof AputBoolean - || instruction instanceof AputByte - || instruction instanceof AputChar - || instruction instanceof AputObject - || instruction instanceof AputShort - || instruction instanceof AputWide; + return instruction instanceof DexAput + || instruction instanceof DexAputBoolean + || instruction instanceof DexAputByte + || instruction instanceof DexAputChar + || instruction instanceof DexAputObject + || instruction instanceof DexAputShort + || instruction instanceof DexAputWide; } @Override public boolean isMonitorEnter() { - return instruction instanceof MonitorEnter; + return instruction instanceof DexMonitorEnter; } @Override public boolean isMonitorExit() { - return instruction instanceof MonitorExit; + return instruction instanceof DexMonitorExit; } @Override @@ -527,7 +527,7 @@ return instruction.toString(); } - public Instruction getInstruction() { + public DexInstruction getInstruction() { return instruction; } }
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/FieldAccessDexInstructionSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/FieldAccessDexInstructionSubject.java index fcfdbbe..64880f5 100644 --- a/src/test/java/com/android/tools/r8/utils/codeinspector/FieldAccessDexInstructionSubject.java +++ b/src/test/java/com/android/tools/r8/utils/codeinspector/FieldAccessDexInstructionSubject.java
@@ -4,7 +4,7 @@ package com.android.tools.r8.utils.codeinspector; -import com.android.tools.r8.code.Instruction; +import com.android.tools.r8.dex.code.DexInstruction; public class FieldAccessDexInstructionSubject extends DexInstructionSubject implements FieldAccessInstructionSubject { @@ -12,7 +12,7 @@ private final CodeInspector codeInspector; public FieldAccessDexInstructionSubject( - CodeInspector codeInspector, Instruction instruction, MethodSubject method) { + CodeInspector codeInspector, DexInstruction instruction, MethodSubject method) { super(instruction, method); this.codeInspector = codeInspector; assert isFieldAccess();
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/FoundMethodSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/FoundMethodSubject.java index c8014e7..8a27919 100644 --- a/src/test/java/com/android/tools/r8/utils/codeinspector/FoundMethodSubject.java +++ b/src/test/java/com/android/tools/r8/utils/codeinspector/FoundMethodSubject.java
@@ -8,7 +8,7 @@ import com.android.tools.r8.cf.code.CfInstruction; import com.android.tools.r8.cf.code.CfPosition; -import com.android.tools.r8.code.Instruction; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.errors.Unimplemented; import com.android.tools.r8.errors.Unreachable; import com.android.tools.r8.graph.AppInfo; @@ -317,7 +317,7 @@ DexDebugPositionState state = new DexDebugPositionState(info.startLine, getMethod().getReference()); Iterator<DexDebugEvent> iterator = Arrays.asList(info.events).iterator(); - for (Instruction insn : code.instructions) { + for (DexInstruction insn : code.instructions) { int offset = insn.getOffset(); while (state.getCurrentPc() < offset && iterator.hasNext()) { iterator.next().accept(state);
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/InvokeDexInstructionSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/InvokeDexInstructionSubject.java index 7f5c6ff..5788846 100644 --- a/src/test/java/com/android/tools/r8/utils/codeinspector/InvokeDexInstructionSubject.java +++ b/src/test/java/com/android/tools/r8/utils/codeinspector/InvokeDexInstructionSubject.java
@@ -4,7 +4,7 @@ package com.android.tools.r8.utils.codeinspector; -import com.android.tools.r8.code.Instruction; +import com.android.tools.r8.dex.code.DexInstruction; import com.android.tools.r8.graph.DexMethod; public class InvokeDexInstructionSubject extends DexInstructionSubject @@ -13,7 +13,7 @@ private final CodeInspector codeInspector; public InvokeDexInstructionSubject( - CodeInspector codeInspector, Instruction instruction, MethodSubject method) { + CodeInspector codeInspector, DexInstruction instruction, MethodSubject method) { super(instruction, method); this.codeInspector = codeInspector; assert isInvoke();
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/NewInstanceDexInstructionSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/NewInstanceDexInstructionSubject.java index ef883fa..ff925b5 100644 --- a/src/test/java/com/android/tools/r8/utils/codeinspector/NewInstanceDexInstructionSubject.java +++ b/src/test/java/com/android/tools/r8/utils/codeinspector/NewInstanceDexInstructionSubject.java
@@ -4,18 +4,18 @@ package com.android.tools.r8.utils.codeinspector; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.NewInstance; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexNewInstance; import com.android.tools.r8.graph.DexType; public class NewInstanceDexInstructionSubject extends DexInstructionSubject implements NewInstanceInstructionSubject { - public NewInstanceDexInstructionSubject(Instruction instruction, MethodSubject method) { + public NewInstanceDexInstructionSubject(DexInstruction instruction, MethodSubject method) { super(instruction, method); } @Override public DexType getType() { - return ((NewInstance) instruction).getType(); + return ((DexNewInstance) instruction).getType(); } }
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/SwitchDexInstructionSubject.java b/src/test/java/com/android/tools/r8/utils/codeinspector/SwitchDexInstructionSubject.java index a49553f..6f94d8c 100644 --- a/src/test/java/com/android/tools/r8/utils/codeinspector/SwitchDexInstructionSubject.java +++ b/src/test/java/com/android/tools/r8/utils/codeinspector/SwitchDexInstructionSubject.java
@@ -4,9 +4,9 @@ package com.android.tools.r8.utils.codeinspector; -import com.android.tools.r8.code.Instruction; -import com.android.tools.r8.code.PackedSwitch; -import com.android.tools.r8.code.SparseSwitch; +import com.android.tools.r8.dex.code.DexInstruction; +import com.android.tools.r8.dex.code.DexPackedSwitch; +import com.android.tools.r8.dex.code.DexSparseSwitch; import com.android.tools.r8.ir.conversion.SwitchPayloadResolver; import it.unimi.dsi.fastutil.ints.IntArrayList; import java.util.List; @@ -17,7 +17,9 @@ private final SwitchPayloadResolver switchPayloadResolver; public SwitchDexInstructionSubject( - Instruction instruction, MethodSubject method, SwitchPayloadResolver switchPayloadResolver) { + DexInstruction instruction, + MethodSubject method, + SwitchPayloadResolver switchPayloadResolver) { super(instruction, method); assert isSwitch(); assert instruction.isIntSwitch(); @@ -27,7 +29,7 @@ @Override public List<Integer> getKeys() { - if (instruction instanceof PackedSwitch) { + if (instruction instanceof DexPackedSwitch) { assert switchPayloadResolver.getKeys(instruction.getOffset() + instruction.getPayloadOffset()) .length == 1; @@ -44,7 +46,7 @@ } return keys; } else { - assert instruction instanceof SparseSwitch; + assert instruction instanceof DexSparseSwitch; return new IntArrayList( switchPayloadResolver.getKeys(instruction.getOffset() + instruction.getPayloadOffset())); }