@Override public void encode(DecodedInstruction insn, CodeOutput out) { PackedSwitchPayloadDecodedInstruction payload = (PackedSwitchPayloadDecodedInstruction) insn; int[] targets = payload.getTargets(); int baseAddress = out.baseAddressForCursor(); out.write(payload.getOpcodeUnit()); out.write(asUnsignedUnit(targets.length)); out.writeInt(payload.getFirstKey()); for (int target : targets) { out.writeInt(target - baseAddress); } } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { out.write(insn.getOpcodeUnit()); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { out.write(codeUnit(insn.getOpcode(), insn.getA())); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { out.write( codeUnit(insn.getOpcodeUnit(), makeByte(insn.getA(), insn.getB()))); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { PackedSwitchPayloadDecodedInstruction payload = (PackedSwitchPayloadDecodedInstruction) insn; int[] targets = payload.getTargets(); int baseAddress = out.baseAddressForCursor(); out.write(payload.getOpcodeUnit()); out.write(asUnsignedUnit(targets.length)); out.writeInt(payload.getFirstKey()); for (int target : targets) { out.writeInt(target - baseAddress); } } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { // See above. int opcode = insn.getOpcode(); int shift = (opcode == Opcodes.CONST_HIGH16) ? 16 : 48; short literal = (short) (insn.getLiteral() >> shift); out.write(codeUnit(opcode, insn.getA()), literal); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { int index = insn.getIndex(); out.write( codeUnit(insn.getOpcode(), insn.getA()), unit0(index), unit1(index)); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { out.write( codeUnit(insn.getOpcode(), insn.getA()), insn.getLiteralUnit()); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { int literal = insn.getLiteralInt(); out.write( codeUnit(insn.getOpcode(), insn.getA()), unit0(literal), unit1(literal)); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { long literal = insn.getLiteral(); out.write( codeUnit(insn.getOpcode(), insn.getA()), unit0(literal), unit1(literal), unit2(literal), unit3(literal)); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { out.write( codeUnit(insn.getOpcode(), insn.getA()), insn.getBUnit()); } },