public FillArrayNode(int resReg, FillArrayDataPayloadDecodedInstruction payload) { super(InsnType.FILL_ARRAY, 0); ArgType elType; switch (payload.getElementWidthUnit()) { case 1: elType = ArgType.unknown(PrimitiveType.BOOLEAN, PrimitiveType.BYTE); break; case 2: elType = ArgType.unknown(PrimitiveType.SHORT, PrimitiveType.CHAR); break; case 4: elType = ArgType.unknown(PrimitiveType.INT, PrimitiveType.FLOAT); break; case 8: elType = ArgType.unknown(PrimitiveType.LONG, PrimitiveType.DOUBLE); break; default: throw new JadxRuntimeException("Unknown array element width: " + payload.getElementWidthUnit()); } setResult(InsnArg.reg(resReg, ArgType.array(elType))); this.data = payload.getData(); this.size = payload.getSize(); this.elemType = elType; }
@Override public void encode(DecodedInstruction insn, CodeOutput out) { FillArrayDataPayloadDecodedInstruction payload = (FillArrayDataPayloadDecodedInstruction) insn; short elementWidth = payload.getElementWidthUnit(); Object data = payload.getData(); out.write(payload.getOpcodeUnit()); out.write(elementWidth); out.writeInt(payload.getSize()); switch (elementWidth) { case 1: out.write((byte[]) data); break; case 2: out.write((short[]) data); break; case 4: out.write((int[]) data); break; case 8: out.write((long[]) data); break; default: { throw new DexException("bogus element_width: " + Hex.u2(elementWidth)); } } } };
@Override public void encode(DecodedInstruction insn, CodeOutput out) { FillArrayDataPayloadDecodedInstruction payload = (FillArrayDataPayloadDecodedInstruction) insn; short elementWidth = payload.getElementWidthUnit(); Object data = payload.getData(); out.write(payload.getOpcodeUnit()); out.write(elementWidth); out.writeInt(payload.getSize()); switch (elementWidth) { case 1: out.write((byte[]) data); break; case 2: out.write((short[]) data); break; case 4: out.write((int[]) data); break; case 8: out.write((long[]) data); break; default: { throw new DexException("bogus element_width: " + Hex.u2(elementWidth)); } } } };
@Override public void encode(DecodedInstruction insn, CodeOutput out) { FillArrayDataPayloadDecodedInstruction payload = (FillArrayDataPayloadDecodedInstruction) insn; short elementWidth = payload.getElementWidthUnit(); Object data = payload.getData(); out.write(payload.getOpcodeUnit()); out.write(elementWidth); out.writeInt(payload.getSize()); switch (elementWidth) { case 1: out.write((byte[]) data); break; case 2: out.write((short[]) data); break; case 4: out.write((int[]) data); break; case 8: out.write((long[]) data); break; default: { throw new DexException("bogus element_width: " + Hex.u2(elementWidth)); } } } };
@Override public void encode(DecodedInstruction insn, CodeOutput out) { FillArrayDataPayloadDecodedInstruction payload = (FillArrayDataPayloadDecodedInstruction) insn; short elementWidth = payload.getElementWidthUnit(); Object data = payload.getData(); out.write(payload.getOpcodeUnit()); out.write(elementWidth); out.writeInt(payload.getSize()); switch (elementWidth) { case 1: out.write((byte[]) data); break; case 2: out.write((short[]) data); break; case 4: out.write((int[]) data); break; case 8: out.write((long[]) data); break; default: { throw new DexException("bogus element_width: " + Hex.u2(elementWidth)); } } } };
@Override public void encode(DecodedInstruction insn, CodeOutput out) { FillArrayDataPayloadDecodedInstruction payload = (FillArrayDataPayloadDecodedInstruction) insn; short elementWidth = payload.getElementWidthUnit(); Object data = payload.getData(); out.write(payload.getOpcodeUnit()); out.write(elementWidth); out.writeInt(payload.getSize()); switch (elementWidth) { case 1: out.write((byte[]) data); break; case 2: out.write((short[]) data); break; case 4: out.write((int[]) data); break; case 8: out.write((long[]) data); break; default: { throw new DexException("bogus element_width: " + Hex.u2(elementWidth)); } } } };
@Override public void encode(DecodedInstruction insn, CodeOutput out) { FillArrayDataPayloadDecodedInstruction payload = (FillArrayDataPayloadDecodedInstruction) insn; short elementWidth = payload.getElementWidthUnit(); Object data = payload.getData(); out.write(payload.getOpcodeUnit()); out.write(elementWidth); out.writeInt(payload.getSize()); switch (elementWidth) { case 1: out.write((byte[]) data); break; case 2: out.write((short[]) data); break; case 4: out.write((int[]) data); break; case 8: out.write((long[]) data); break; default: { throw new DexException("bogus element_width: " + Hex.u2(elementWidth)); } } } };
@Override public void encode(DecodedInstruction insn, CodeOutput out) { FillArrayDataPayloadDecodedInstruction payload = (FillArrayDataPayloadDecodedInstruction) insn; short elementWidth = payload.getElementWidthUnit(); Object data = payload.getData(); out.write(payload.getOpcodeUnit()); out.write(elementWidth); out.writeInt(payload.getSize()); switch (elementWidth) { case 1: out.write((byte[]) data); break; case 2: out.write((short[]) data); break; case 4: out.write((int[]) data); break; case 8: out.write((long[]) data); break; default: { throw new DexException("bogus element_width: " + Hex.u2(elementWidth)); } } } };