@Override protected BuilderInstruction getRealInsn0(LabelAssigner assigner) { return new BuilderArrayPayload(elementWidth, arrayElements); }
@Nonnull private BuilderArrayPayload newBuilderArrayPayload(@Nonnull ArrayPayload instruction) { return new BuilderArrayPayload(instruction.getElementWidth(), instruction.getArrayElements()); }
List<Number> elements = array_elements205; method_stack.peek().methodBuilder.addInstruction(new BuilderArrayPayload(elementWidth, array_elements205));
@Nonnull private BuilderArrayPayload newBuilderArrayPayload(@Nonnull ArrayPayload instruction) { return new BuilderArrayPayload(instruction.getElementWidth(), instruction.getArrayElements()); }
@Nonnull private BuilderArrayPayload newBuilderArrayPayload(@Nonnull ArrayPayload instruction) { return new BuilderArrayPayload(instruction.getElementWidth(), instruction.getArrayElements()); }
@Nonnull private BuilderArrayPayload newBuilderArrayPayload(@Nonnull ArrayPayload instruction) { return new BuilderArrayPayload(instruction.getElementWidth(), instruction.getArrayElements()); }
@Nonnull private BuilderArrayPayload newBuilderArrayPayload(@Nonnull ArrayPayload instruction) { return new BuilderArrayPayload(instruction.getElementWidth(), instruction.getArrayElements()); }
@Test public void testPayloadAlignmentRemoveNop() { MethodImplementationBuilder implBuilder = new MethodImplementationBuilder(10); implBuilder.addInstruction(new BuilderInstruction10x(Opcode.NOP)); implBuilder.addInstruction(new BuilderArrayPayload(4, null)); List<? extends Instruction> instructions = Lists.newArrayList(implBuilder.getMethodImplementation().getInstructions()); Assert.assertEquals(instructions.size(), 1); Instruction instruction = instructions.get(0); Assert.assertEquals(instruction.getOpcode(), Opcode.ARRAY_PAYLOAD); }
@Test public void testPayloadAlignmentAddNop() { MethodImplementationBuilder implBuilder = new MethodImplementationBuilder(10); implBuilder.addInstruction(new BuilderInstruction12x(Opcode.MOVE, 0, 0)); implBuilder.addInstruction(new BuilderArrayPayload(4, null)); List<? extends Instruction> instructions = Lists.newArrayList(implBuilder.getMethodImplementation().getInstructions()); Assert.assertEquals(instructions.size(), 3); Instruction instruction = instructions.get(0); Assert.assertEquals(instruction.getOpcode(), Opcode.MOVE); instruction = instructions.get(1); Assert.assertEquals(instruction.getOpcode(), Opcode.NOP); instruction = instructions.get(2); Assert.assertEquals(instruction.getOpcode(), Opcode.ARRAY_PAYLOAD); }
List<Number> elements = array_elements177; method_stack.peek().methodBuilder.addInstruction(new BuilderArrayPayload(elementWidth, array_elements177));
List<Number> elements = array_elements205; method_stack.peek().methodBuilder.addInstruction(new BuilderArrayPayload(elementWidth, array_elements205));
@Test public void testPayloadAlignmentRemoveNopWithReferent() { MethodImplementationBuilder implBuilder = new MethodImplementationBuilder(10); Label label = implBuilder.getLabel("array_payload"); implBuilder.addInstruction(new BuilderInstruction31t(Opcode.FILL_ARRAY_DATA, 0, label)); implBuilder.addInstruction(new BuilderInstruction12x(Opcode.MOVE, 0, 0)); implBuilder.addInstruction(new BuilderInstruction12x(Opcode.MOVE, 0, 0)); implBuilder.addInstruction(new BuilderInstruction12x(Opcode.MOVE, 0, 0)); implBuilder.addInstruction(new BuilderInstruction10x(Opcode.NOP)); implBuilder.addLabel("array_payload"); implBuilder.addInstruction(new BuilderArrayPayload(4, null)); List<Instruction> instructions = Lists.newArrayList(implBuilder.getMethodImplementation().getInstructions()); checkInstructions(instructions, new Opcode[]{Opcode.FILL_ARRAY_DATA, Opcode.MOVE, Opcode.MOVE, Opcode.MOVE, Opcode.ARRAY_PAYLOAD}); Instruction31t referent = (Instruction31t)instructions.get(0); Assert.assertEquals(6, referent.getCodeOffset()); }
@Test public void testPayloadAlignmentAddNopWithReferent() { MethodImplementationBuilder implBuilder = new MethodImplementationBuilder(10); Label label = implBuilder.getLabel("array_payload"); implBuilder.addInstruction(new BuilderInstruction31t(Opcode.FILL_ARRAY_DATA, 0, label)); implBuilder.addInstruction(new BuilderInstruction12x(Opcode.MOVE, 0, 0)); implBuilder.addInstruction(new BuilderInstruction12x(Opcode.MOVE, 0, 0)); implBuilder.addInstruction(new BuilderInstruction12x(Opcode.MOVE, 0, 0)); implBuilder.addInstruction(new BuilderInstruction12x(Opcode.MOVE, 0, 0)); implBuilder.addLabel("array_payload"); implBuilder.addInstruction(new BuilderArrayPayload(4, null)); List<Instruction> instructions = Lists.newArrayList(implBuilder.getMethodImplementation().getInstructions()); checkInstructions(instructions, new Opcode[]{Opcode.FILL_ARRAY_DATA, Opcode.MOVE, Opcode.MOVE, Opcode.MOVE, Opcode.MOVE, Opcode.NOP, Opcode.ARRAY_PAYLOAD}); Instruction31t referent = (Instruction31t)instructions.get(0); Assert.assertEquals(8, referent.getCodeOffset()); }