SSAInstruction instr = ir.getInstructions()[i]; if (instr == null) continue; // Some instructions are null (padding NoOps) LOG(DEBUG, "DEBUG", "\tinst: " + instr.toString());
SSAInstruction instr = ir.getInstructions()[i]; if (instr instanceof SSAReturnInstruction) { SSAReturnInstruction retInstr = (SSAReturnInstruction) instr;
public static Position getSomePositionForMethod(IR ir, AstMethod method) { SSAInstruction[] instructions = ir.getInstructions(); for (int i = 0; i < instructions.length; i++) { Position p = method.getSourcePosition(i); if (p != null) { return p; } } return null; }
@Override public Iterator<FieldReference> iterateFieldsWritten(CGNode node) { SSAInstruction[] statements = getIR(node).getInstructions(); return CodeScanner.getFieldsWritten(statements).iterator(); }
@Override public Iterator<FieldReference> iterateFieldsRead(CGNode node) { SSAInstruction[] statements = getIR(node).getInstructions(); return CodeScanner.getFieldsRead(statements).iterator(); }
@Override public Iterator<FieldReference> iterateFieldsWritten(CGNode node) { SSAInstruction[] statements = getIR(node).getInstructions(); return CodeScanner.getFieldsWritten(statements).iterator(); }
@Override public Iterator<FieldReference> iterateFieldsRead(CGNode node) { SSAInstruction[] statements = getIR(node).getInstructions(); return CodeScanner.getFieldsRead(statements).iterator(); }
@Override public int getNumberOfStatements(CGNode node) { assert understands(node); return getIR(node).getInstructions().length; }
@Override public SSAInstruction getInstruction() { if (isEntryBlock() || isExitBlock()) { return null; } else { return ir.getInstructions()[instructionIndex]; } }
@Override public int getNumberOfStatements(CGNode node) { // TODO verify this is correct assert understands(node); return getIR(node).getInstructions().length; }
@Override public int getNumberOfStatements(CGNode node) { assert understands(node); return getIR(node).getInstructions().length; }
@Override public int getNumberOfStatements(CGNode node) { assert understands(node); return getIR(node).getInstructions().length; }
@Override public SSAInstruction getLastInstruction() { if (getLastInstructionIndex() < 0) { return null; } else { return ir.getInstructions()[getLastInstructionIndex()]; } }
@Override public int getNumberOfStatements(CGNode node) { assert understands(node); return getIR(node).getInstructions().length; }
@Override public int getNumberOfStatements(CGNode node) { assert understands(node); return getIR(node).getInstructions().length; }
@Override public int getNumberOfStatements(CGNode node) { assert understands(node); return getIR(node).getInstructions().length; }
/** END Custom change: caching */ /* * @see com.ibm.wala.ipa.callgraph.propagation.SSAContextInterpreter#getNumberOfStatements(com.ibm.wala.ipa.callgraph.CGNode) */ @Override public int getNumberOfStatements(CGNode node) { assert understands(node); return getIR(node).getInstructions().length; }
@Override public Iterator<FieldReference> iterateFieldsWritten(CGNode node) { assert understands(node); final SSAInstruction[] statements = getIR(node).getInstructions(); return CodeScanner.getFieldsWritten(statements).iterator(); }
public static Statement findFirstAllocation(CGNode n) { IR ir = n.getIR(); for (int i = 0; i < ir.getInstructions().length; i++) { SSAInstruction s = ir.getInstructions()[i]; if (s instanceof SSANewInstruction) { return new NormalStatement(n, i); } } Assertions.UNREACHABLE("failed to find allocation in " + n); return null; }
@Test public void testArrayLiteral1() throws IllegalArgumentException, CancelException, IOException { runTest(singleTestSrc(), rtJar, simpleTestEntryPoint(), Collections.singletonList( cg -> { MethodReference mref = descriptorToMethodRef("Source#ArrayLiteral1#main#([Ljava/lang/String;)V", cg.getClassHierarchy()); CGNode node = cg.getNodes(mref).iterator().next(); SSAInstruction s = node.getIR().getInstructions()[2]; Assert.assertTrue("Did not find new array instruction.", s instanceof SSANewInstruction); Assert.assertTrue("", ((SSANewInstruction) s).getNewSite().getDeclaredType().isArrayType()); }), true, null); }