/** * Helper to produce the first bit of output for each instruction. * * @param offset the offset to the start of the instruction */ private String header(int offset) { /* * Note: This uses the original bytecode, not the * possibly-transformed one. */ int opcode = bytes.getUnsignedByte(offset); String name = ByteOps.opName(opcode); if (opcode == ByteOps.WIDE) { opcode = bytes.getUnsignedByte(offset + 1); name += " " + ByteOps.opName(opcode); } return Hex.u2(offset) + ": " + name; }
int info = ByteOps.opInfo(opcode); int fmt = info & ByteOps.FMT_MASK;
int info = ByteOps.opInfo(opcode); int fmt = info & ByteOps.FMT_MASK;
/** * Helper to produce the first bit of output for each instruction. * * @param offset the offset to the start of the instruction */ private String header(int offset) { /* * Note: This uses the original bytecode, not the * possibly-transformed one. */ int opcode = bytes.getUnsignedByte(offset); String name = ByteOps.opName(opcode); if (opcode == ByteOps.WIDE) { opcode = bytes.getUnsignedByte(offset + 1); name += " " + ByteOps.opName(opcode); } return Hex.u2(offset) + ": " + name; }
int info = ByteOps.opInfo(opcode); int fmt = info & ByteOps.FMT_MASK;
/** * Helper to produce the first bit of output for each instruction. * * @param offset the offset to the start of the instruction */ private String header(int offset) { /* * Note: This uses the original bytecode, not the * possibly-transformed one. */ int opcode = bytes.getUnsignedByte(offset); String name = ByteOps.opName(opcode); if (opcode == ByteOps.WIDE) { opcode = bytes.getUnsignedByte(offset + 1); name += " " + ByteOps.opName(opcode); } return Hex.u2(offset) + ": " + name; }
int info = ByteOps.opInfo(opcode); int fmt = info & ByteOps.FMT_MASK;
/** * Helper to produce the first bit of output for each instruction. * * @param offset the offset to the start of the instruction */ private String header(int offset) { /* * Note: This uses the original bytecode, not the * possibly-transformed one. */ int opcode = bytes.getUnsignedByte(offset); String name = ByteOps.opName(opcode); if (opcode == ByteOps.WIDE) { opcode = bytes.getUnsignedByte(offset + 1); name += " " + ByteOps.opName(opcode); } return Hex.u2(offset) + ": " + name; }
int info = ByteOps.opInfo(opcode); int fmt = info & ByteOps.FMT_MASK;
/** * Helper to produce the first bit of output for each instruction. * * @param offset the offset to the start of the instruction */ private String header(int offset) { /* * Note: This uses the original bytecode, not the * possibly-transformed one. */ int opcode = bytes.getUnsignedByte(offset); String name = ByteOps.opName(opcode); if (opcode == ByteOps.WIDE) { opcode = bytes.getUnsignedByte(offset + 1); name += " " + ByteOps.opName(opcode); } return Hex.u2(offset) + ": " + name; }
/** * Helper to produce the first bit of output for each instruction. * * @param offset the offset to the start of the instruction */ private String header(int offset) { /* * Note: This uses the original bytecode, not the * possibly-transformed one. */ int opcode = bytes.getUnsignedByte(offset); String name = ByteOps.opName(opcode); if (opcode == ByteOps.WIDE) { opcode = bytes.getUnsignedByte(offset + 1); name += " " + ByteOps.opName(opcode); } return Hex.u2(offset) + ": " + name; }
private void checkInvokeSignaturePolymorphic(final int opcode) { if (!dexOptions.apiIsSupported(DexFormat.API_METHOD_HANDLES)) { fail(String.format( "invoking a signature-polymorphic requires --min-sdk-version >= %d (currently %d)", DexFormat.API_METHOD_HANDLES, dexOptions.minSdkVersion)); } else if (opcode != ByteOps.INVOKEVIRTUAL) { fail("Unsupported signature polymorphic invocation (" + ByteOps.opName(opcode) + ")"); } }
throw new SimException( "Unsupported signature polymorphic invocation (" + ByteOps.opName(opcode) + ")");