@Test public void payloadOpHasExpectedToString() { when(instruction.getOpcode()).thenReturn(Opcode.PACKED_SWITCH_PAYLOAD); List<SwitchElement> elements = new LinkedList<SwitchElement>(); doReturn(elements).when((SwitchPayload) instruction).getSwitchElements(); SwitchElement element1 = mock(SwitchElement.class); when(element1.getKey()).thenReturn(1); when(element1.getOffset()).thenReturn(10); SwitchElement element2 = mock(SwitchElement.class); when(element2.getKey()).thenReturn(2); when(element2.getOffset()).thenReturn(20); elements.add(element2); elements.add(element1); op = (SwitchPayloadOp) opFactory.create(location, addressToLocation, vm); assertEquals("packed-switch-payload [1 -> :addr_10, 2 -> :addr_20]", op.toString()); }
@Override public Op create(MethodLocation location, TIntObjectMap<MethodLocation> addressToLocation, VirtualMachine vm) { SwitchPayload instr = (SwitchPayload) location.getInstruction(); TIntIntMap targetKeyToOffset = new TIntIntHashMap(); for (SwitchElement element : instr.getSwitchElements()) { targetKeyToOffset.put(element.getKey(), element.getOffset()); } return new SwitchPayloadOp(location, addressToLocation, targetKeyToOffset); }
for (SwitchElement switchElement: switchPayload.getSwitchElements()) { AnalyzedInstruction targetInstruction = analyzedInstructions.get(instructionCodeAddress + switchElement.getOffset());
public SparseSwitchPad(SwitchPayload inst, int defaultOffset) { int i = 0; this.values = new int[ inst.getSwitchElements().size() ]; this.offsets = new int[ inst.getSwitchElements().size() ]; for(SwitchElement elt : inst.getSwitchElements()) { values[i] = elt.getKey(); offsets[i++] = elt.getOffset(); } this.defaultOffset = defaultOffset; }
public SparseSwitchPad(SwitchPayload inst, int defaultOffset) { int i = 0; this.values = new int[ inst.getSwitchElements().size() ]; this.offsets = new int[ inst.getSwitchElements().size() ]; for(SwitchElement elt : inst.getSwitchElements()) { values[i] = elt.getKey(); offsets[i++] = elt.getOffset(); } this.defaultOffset = defaultOffset; }
public PackedSwitchPad(SwitchPayload inst, int defaultOffset) { int i = 0; this.offsets = new int[inst.getSwitchElements().size()]; for(SwitchElement elt : inst.getSwitchElements()) { if (i == 0) { firstValue = elt.getKey(); } offsets[i++] = elt.getOffset(); } this.defaultOffset = defaultOffset; }
public PackedSwitchPad(SwitchPayload inst, int defaultOffset) { int i = 0; this.offsets = new int[inst.getSwitchElements().size()]; for(SwitchElement elt : inst.getSwitchElements()) { if (i == 0) { firstValue = elt.getKey(); } offsets[i++] = elt.getOffset(); } this.defaultOffset = defaultOffset; }
Integer sourceAddress = switchMap.get(bbinsn.address); if(sourceAddress != null) { for(SwitchElement switchElement : ((SwitchPayload) bbinsn.instruction).getSwitchElements()){ offset = switchElement.getOffset() + (int)sourceAddress; if(bbinsn.destinations == null)
SwitchPayload switchPayload = (SwitchPayload)analyzedInstructions.get(instructionCodeAddress + offsetInstruction.getCodeOffset()).instruction; for (SwitchElement switchElement: switchPayload.getSwitchElements()) { AnalyzedInstruction targetInstruction = analyzedInstructions.get(instructionCodeAddress + switchElement.getOffset());
for (SwitchElement switchElement: switchPayload.getSwitchElements()) { AnalyzedInstruction targetInstruction = analyzedInstructions.get(instructionCodeAddress + switchElement.getOffset());