@Override public void visitGet(SSAGetInstruction get) { String propName = get.getDeclaredField().getName().toString(); if(propName.startsWith("global ")) propName = propName.substring("global ".length()); Vertex v = factory.makePropVertex(propName), w = factory.makeVarVertex(func, get.getDef()); flowgraph.addEdge(v, w); handleLexicalDef(get.getDef()); }
@Override public void visitGet(SSAGetInstruction get) { String propName = get.getDeclaredField().getName().toString(); if(propName.startsWith("global ")) propName = propName.substring("global ".length()); Vertex v = factory.makePropVertex(propName), w = factory.makeVarVertex(func, get.getDef()); flowgraph.addEdge(v, w); handleLexicalDef(get.getDef()); }
@Override public void visitGet(SSAGetInstruction instruction) { visitGetInternal(instruction.getDef(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitGet(SSAGetInstruction instruction) { visitGetInternal(instruction.getDef(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitGet(SSAGetInstruction instruction) { visitGetInternal(instruction.getDef(), instruction.getRef(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitGet(SSAGetInstruction instruction) { visitGetInternal(instruction.getDef(), instruction.getRef(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitGet(SSAGetInstruction instruction) { visitGetInternal(instruction.getDef(), instruction.getRef(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitGet(SSAGetInstruction instruction) { visitGetInternal(instruction.getDef(), instruction.getRef(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitGet(SSAGetInstruction instruction) { visitGetInternal(instruction.getDef(), instruction.getRef(), instruction.isStatic(), instruction.getDeclaredField()); }
@Override public void visitGet(SSAGetInstruction instruction) { visitGetInternal(instruction.getDef(), instruction.getRef(), instruction.isStatic(), instruction.getDeclaredField()); }
result.append(g.getDef()); result.append(":="); result.append(g.isStatic() ? "getstatic " : "getfield ");
String def = newLocalDef(instruction.getDef()); TypeReference fieldType = instruction.getDeclaredFieldType(); TypeReference classType = instruction.getDeclaredField()
@Override public Iterator<PointerKey> getReadsOfInstanceField(PointerKey pk, IField f) { // TODO: cache this!! if (f == ArrayContents.v()) { return getArrayReads(pk); } pk = convertPointerKeyToHeapModel(pk, mam.getHeapModel()); Collection<MemoryAccess> reads = mam.getFieldReads(pk, f); for (MemoryAccess a : reads) { addSubgraphForNode(a.getNode()); } ArrayList<PointerKey> readInto = new ArrayList<>(); for (MemoryAccess a : reads) { IR ir = a.getNode().getIR(); SSAGetInstruction s = (SSAGetInstruction) ir.getInstructions()[a.getInstructionIndex()]; if (s == null) { // actually dead code continue; } PointerKey r = heapModel.getPointerKeyForLocal(a.getNode(), s.getDef()); // if (Assertions.verifyAssertions) { // Assertions._assert(containsNode(r)); // } readInto.add(r); } return readInto.iterator(); }
@Override public Iterator<PointerKey> getReadsOfInstanceField(PointerKey pk, IField f) { // TODO: cache this!! if (f == ArrayContents.v()) { return getArrayReads(pk); } pk = convertPointerKeyToHeapModel(pk, mam.getHeapModel()); Collection<MemoryAccess> reads = mam.getFieldReads(pk, f); for (MemoryAccess a : reads) { addSubgraphForNode(a.getNode()); } ArrayList<PointerKey> readInto = new ArrayList<>(); for (MemoryAccess a : reads) { IR ir = a.getNode().getIR(); SSAGetInstruction s = (SSAGetInstruction) ir.getInstructions()[a.getInstructionIndex()]; if (s == null) { // actually dead code continue; } PointerKey r = heapModel.getPointerKeyForLocal(a.getNode(), s.getDef()); // if (Assertions.verifyAssertions) { // Assertions._assert(containsNode(r)); // } readInto.add(r); } return readInto.iterator(); }