@Nonnull private BuilderInstruction23x newBuilderInstruction23x(@Nonnull Instruction23x instruction) { return new BuilderInstruction23x( instruction.getOpcode(), instruction.getRegisterA(), instruction.getRegisterB(), instruction.getRegisterC()); }
private List<BuilderInstruction> getArrayAccessorInstructions(int arrayRegister, List<Integer> registers, List<String> parameterTypes) { List<BuilderInstruction> instructions = new LinkedList<>(); for (int index = 0; index < parameterTypes.size(); index++) { int register = registers.get(index); BuilderInstruction constInstruction = ConstantBuilder.buildConstant(index, register); BuilderInstruction arrayGet = new BuilderInstruction23x(Opcode.AGET_OBJECT, register, arrayRegister, register); String typeName = parameterTypes.get(index); if (ClassNameUtils.isPrimitive(typeName)) { // check-cast expects a non-primitive type (afaik) typeName = ClassNameUtils.binaryToInternal(ClassNameUtils.getWrapper(typeName)); } BuilderTypeReference typeRef = manipulator.getDexBuilder().internTypeReference(typeName); BuilderInstruction checkCast = new BuilderInstruction21c(Opcode.CHECK_CAST, register, typeRef); instructions.add(constInstruction); instructions.add(arrayGet); instructions.add(checkCast); } return instructions; }
@Override protected BuilderInstruction getRealInsn0(LabelAssigner assigner) { return new BuilderInstruction23x(opc, (short) getRegA().getNumber(), (short) getRegB().getNumber(), (short) getRegC().getNumber()); }
short regC = parseRegister_byte((registerC!=null?registerC.getText():null)); method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction23x(opcode, regA, regB, regC));
@Nonnull private BuilderInstruction23x newBuilderInstruction23x(@Nonnull Instruction23x instruction) { return new BuilderInstruction23x( instruction.getOpcode(), instruction.getRegisterA(), instruction.getRegisterB(), instruction.getRegisterC()); }
@Nonnull private BuilderInstruction23x newBuilderInstruction23x(@Nonnull Instruction23x instruction) { return new BuilderInstruction23x( instruction.getOpcode(), instruction.getRegisterA(), instruction.getRegisterB(), instruction.getRegisterC()); }
@Nonnull private BuilderInstruction23x newBuilderInstruction23x(@Nonnull Instruction23x instruction) { return new BuilderInstruction23x( instruction.getOpcode(), instruction.getRegisterA(), instruction.getRegisterB(), instruction.getRegisterC()); }
@Nonnull private BuilderInstruction23x newBuilderInstruction23x(@Nonnull Instruction23x instruction) { return new BuilderInstruction23x( instruction.getOpcode(), instruction.getRegisterA(), instruction.getRegisterB(), instruction.getRegisterC()); }
short regC = parseRegister_byte((registerC!=null?registerC.getText():null)); method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction23x(opcode, regA, regB, regC));
short regC = parseRegister_byte((registerC!=null?registerC.getText():null)); method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction23x(opcode, regA, regB, regC));