@Override public void visitPut(SSAPutInstruction instruction) { visitPutInternal(instruction.getVal(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitPut(SSAPutInstruction instruction) { visitPutInternal(instruction.getVal(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitPut(SSAPutInstruction instruction) { visitPutInternal(instruction.getVal(), instruction.getRef(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitPut(SSAPutInstruction instruction) { visitPutInternal(instruction.getVal(), instruction.getRef(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitPut(SSAPutInstruction instruction) { visitPutInternal(instruction.getVal(), instruction.getRef(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitPut(SSAPutInstruction instruction) { visitPutInternal(instruction.getVal(), instruction.getRef(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitPut(SSAPutInstruction put) { visitPut(put.getVal(), put.getDeclaredField().getName().toString()); }
@Override public void visitPut(SSAPutInstruction put) { visitPut(put.getVal(), put.getDeclaredField().getName().toString()); }
@Override public void visitPut(SSAPutInstruction instruction) { visitPutInternal(instruction.getVal(), instruction.getRef(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitPut(SSAPutInstruction instruction) { visitPutInternal(instruction.getVal(), instruction.getRef(), instruction.isStatic(), instruction.getDeclaredField()); }
String value = getLocalName(instruction.getVal()); TypeReference fieldType = instruction.getDeclaredFieldType(); TypeReference classType = instruction.getDeclaredField()
@Override public Iterator<PointerKey> getWritesToInstanceField(PointerKey pk, IField f) { // TODO: cache this!! if (f == ArrayContents.v()) { return getArrayWrites(pk); } pk = convertPointerKeyToHeapModel(pk, mam.getHeapModel()); Collection<MemoryAccess> writes = mam.getFieldWrites(pk, f); for (MemoryAccess a : writes) { addSubgraphForNode(a.getNode()); } ArrayList<PointerKey> written = new ArrayList<>(); for (MemoryAccess a : writes) { IR ir = a.getNode().getIR(); SSAPutInstruction s = (SSAPutInstruction) ir.getInstructions()[a.getInstructionIndex()]; if (s == null) { // s can be null because the memory access map may be constructed from bytecode, // and the write instruction may have been eliminated from SSA because it's dead // TODO clean this up continue; } PointerKey r = heapModel.getPointerKeyForLocal(a.getNode(), s.getVal()); // if (Assertions.verifyAssertions) { // Assertions._assert(containsNode(r)); // } written.add(r); } return written.iterator(); }
@Override public Iterator<PointerKey> getWritesToInstanceField(PointerKey pk, IField f) { // TODO: cache this!! if (f == ArrayContents.v()) { return getArrayWrites(pk); } pk = convertPointerKeyToHeapModel(pk, mam.getHeapModel()); Collection<MemoryAccess> writes = mam.getFieldWrites(pk, f); for (MemoryAccess a : writes) { addSubgraphForNode(a.getNode()); } ArrayList<PointerKey> written = new ArrayList<>(); for (MemoryAccess a : writes) { IR ir = a.getNode().getIR(); SSAPutInstruction s = (SSAPutInstruction) ir.getInstructions()[a.getInstructionIndex()]; if (s == null) { // s can be null because the memory access map may be constructed from bytecode, // and the write instruction may have been eliminated from SSA because it's dead // TODO clean this up continue; } PointerKey r = heapModel.getPointerKeyForLocal(a.getNode(), s.getVal()); // if (Assertions.verifyAssertions) { // Assertions._assert(containsNode(r)); // } written.add(r); } return written.iterator(); }
private void addMatchHelper(LocalPointerKey pk, Collection<MemoryAccess> writes) { for (MemoryAccess a : writes) { addSubgraphForNode(a.getNode()); } for (MemoryAccess a : writes) { IR ir = a.getNode().getIR(); SSAPutInstruction s = (SSAPutInstruction) ir.getInstructions()[a.getInstructionIndex()]; PointerKey r = heapModel.getPointerKeyForLocal(a.getNode(), s.getVal()); assert containsNode(r); assert containsNode(pk); addMatchEdge(pk, r); } }
private void addMatchHelper(LocalPointerKey pk, Collection<MemoryAccess> writes) { for (MemoryAccess a : writes) { addSubgraphForNode(a.getNode()); } for (MemoryAccess a : writes) { IR ir = a.getNode().getIR(); SSAPutInstruction s = (SSAPutInstruction) ir.getInstructions()[a.getInstructionIndex()]; PointerKey r = heapModel.getPointerKeyForLocal(a.getNode(), s.getVal()); assert containsNode(r); assert containsNode(pk); addMatchEdge(pk, r); } }