@Override public PointerKey getPointerKeyForStaticField(IField f) { return delegate.getPointerKeyForStaticField(f); }
@Override public PointerKey getPointerKeyForStaticField(IField f) { return h.getPointerKeyForStaticField(f); }
@Override public PointerKey getPointerKeyForStaticField(IField f) { return delegate.getPointerKeyForStaticField(f); }
@Override public PointerKey getPointerKeyForStaticField(IField f) { return h.getPointerKeyForStaticField(f); }
@Override public Collection<MemoryAccess> getStaticFieldReads(IField field) { Collection<MemoryAccess> result = new ArrayList<>(); convertStmtsToMemoryAccess(invRef.get(heapModel.getPointerKeyForStaticField(field)), result); return result; }
@Override public Collection<MemoryAccess> getStaticFieldWrites(IField field) { Collection<MemoryAccess> result = new ArrayList<>(); convertStmtsToMemoryAccess(invMod.get(heapModel.getPointerKeyForStaticField(field)), result); return result; }
@Override public Collection<MemoryAccess> getStaticFieldReads(IField field) { Collection<MemoryAccess> result = new ArrayList<>(); convertStmtsToMemoryAccess(invRef.get(heapModel.getPointerKeyForStaticField(field)), result); return result; }
@Override public Collection<MemoryAccess> getStaticFieldWrites(IField field) { Collection<MemoryAccess> result = new ArrayList<>(); convertStmtsToMemoryAccess(invMod.get(heapModel.getPointerKeyForStaticField(field)), result); return result; }
public void visitPutInternal(int rval, boolean isStatic, FieldReference field) { // skip putfields of primitive type (optimisation) if (field.getFieldType().isPrimitiveType()) { return; } IField f = cg.getClassHierarchy().resolveField(field); if (f == null) { return; } PointerKey use = heapModel.getPointerKeyForLocal(node, rval); assert use != null; if (isStatic) { PointerKey fKey = heapModel.getPointerKeyForStaticField(f); addNode(use); addNode(fKey); addEdge(fKey, use); } else { addNode(use); } }
public void visitPutInternal(int rval, boolean isStatic, FieldReference field) { // skip putfields of primitive type (optimisation) if (field.getFieldType().isPrimitiveType()) { return; } IField f = cg.getClassHierarchy().resolveField(field); if (f == null) { return; } PointerKey use = heapModel.getPointerKeyForLocal(node, rval); assert use != null; if (isStatic) { PointerKey fKey = heapModel.getPointerKeyForStaticField(f); addNode(use); addNode(fKey); addEdge(fKey, use); } else { addNode(use); } }
PointerKey fKey = heapModel.getPointerKeyForStaticField(f); addNode(def); addNode(fKey);
PointerKey pk = pa.getHeapModel().getPointerKeyForStaticField(field); OrdinalSet<InstanceKey> pointsToSet = pa.getPointsToSet(pk);
public void visitPutInternal(int rval, int ref, boolean isStatic, FieldReference field) { IField f = cg.getClassHierarchy().resolveField(field); if (f == null) { return; } PointerKey use = heapModel.getPointerKeyForLocal(node, rval); assert use != null; if (isStatic) { PointerKey fKey = heapModel.getPointerKeyForStaticField(f); addNode(use); addNode(fKey); // TODO assign global edge addEdge(fKey, use, AssignGlobalLabel.v()); } else { PointerKey refKey = heapModel.getPointerKeyForLocal(node, ref); addNode(use); addNode(refKey); addEdge(refKey, use, PutFieldLabel.make(f)); } }
public void visitPutInternal(int rval, int ref, boolean isStatic, FieldReference field) { IField f = cg.getClassHierarchy().resolveField(field); if (f == null) { return; } PointerKey use = heapModel.getPointerKeyForLocal(node, rval); assert use != null; if (isStatic) { PointerKey fKey = heapModel.getPointerKeyForStaticField(f); addNode(use); addNode(fKey); // TODO assign global edge addEdge(fKey, use, AssignGlobalLabel.v()); } else { PointerKey refKey = heapModel.getPointerKeyForLocal(node, ref); addNode(use); addNode(refKey); addEdge(refKey, use, PutFieldLabel.make(f)); } }
protected void visitGetInternal(int lval, int ref, boolean isStatic, FieldReference field) { IField f = cg.getClassHierarchy().resolveField(field); if (f == null) { return; } PointerKey def = heapModel.getPointerKeyForLocal(node, lval); assert def != null; if (isStatic) { PointerKey fKey = heapModel.getPointerKeyForStaticField(f); addNode(def); addNode(fKey); // TODO assign global edge for context-sensitive addEdge(def, fKey, AssignGlobalLabel.v()); } else { PointerKey refKey = heapModel.getPointerKeyForLocal(node, ref); addNode(def); addNode(refKey); // TODO purely local optimizations addEdge(def, refKey, GetFieldLabel.make(f)); } }
protected void visitGetInternal(int lval, int ref, boolean isStatic, FieldReference field) { IField f = cg.getClassHierarchy().resolveField(field); if (f == null) { return; } PointerKey def = heapModel.getPointerKeyForLocal(node, lval); assert def != null; if (isStatic) { PointerKey fKey = heapModel.getPointerKeyForStaticField(f); addNode(def); addNode(fKey); // TODO assign global edge for context-sensitive addEdge(def, fKey, AssignGlobalLabel.v()); } else { PointerKey refKey = heapModel.getPointerKeyForLocal(node, ref); addNode(def); addNode(refKey); // TODO purely local optimizations addEdge(def, refKey, GetFieldLabel.make(f)); } }
protected void visitGetInternal(int lval, int ref, boolean isStatic, FieldReference field) { // skip getfields of primitive type (optimisation) if (field.getFieldType().isPrimitiveType()) { return; } IField f = cg.getClassHierarchy().resolveField(field); if (f == null) { return; } PointerKey def = heapModel.getPointerKeyForLocal(node, lval); assert def != null; if (isStatic) { PointerKey fKey = heapModel.getPointerKeyForStaticField(f); g.addNode(def); g.addNode(fKey); g.addEdge(def, fKey, AssignGlobalLabel.v()); } else { PointerKey refKey = heapModel.getPointerKeyForLocal(node, ref); g.addNode(def); g.addNode(refKey); // TODO purely local optimizations g.addEdge(def, refKey, GetFieldLabel.make(f)); } }
public void visitPutInternal(int rval, int ref, boolean isStatic, FieldReference field) { // skip putfields of primitive type (optimisation) if (field.getFieldType().isPrimitiveType()) { return; } IField f = cg.getClassHierarchy().resolveField(field); if (f == null) { return; } PointerKey use = heapModel.getPointerKeyForLocal(node, rval); assert use != null; if (isStatic) { PointerKey fKey = heapModel.getPointerKeyForStaticField(f); g.addNode(use); g.addNode(fKey); g.addEdge(fKey, use, AssignGlobalLabel.v()); } else { PointerKey refKey = heapModel.getPointerKeyForLocal(node, ref); g.addNode(use); g.addNode(refKey); g.addEdge(refKey, use, PutFieldLabel.make(f)); } }
public void visitPutInternal(int rval, int ref, boolean isStatic, FieldReference field) { // skip putfields of primitive type (optimisation) if (field.getFieldType().isPrimitiveType()) { return; } IField f = cg.getClassHierarchy().resolveField(field); if (f == null) { return; } PointerKey use = heapModel.getPointerKeyForLocal(node, rval); assert use != null; if (isStatic) { PointerKey fKey = heapModel.getPointerKeyForStaticField(f); g.addNode(use); g.addNode(fKey); g.addEdge(fKey, use, AssignGlobalLabel.v()); } else { PointerKey refKey = heapModel.getPointerKeyForLocal(node, ref); g.addNode(use); g.addNode(refKey); g.addEdge(refKey, use, PutFieldLabel.make(f)); } }
protected void visitGetInternal(int lval, int ref, boolean isStatic, FieldReference field) { // skip getfields of primitive type (optimisation) if (field.getFieldType().isPrimitiveType()) { return; } IField f = cg.getClassHierarchy().resolveField(field); if (f == null) { return; } PointerKey def = heapModel.getPointerKeyForLocal(node, lval); assert def != null; if (isStatic) { PointerKey fKey = heapModel.getPointerKeyForStaticField(f); g.addNode(def); g.addNode(fKey); g.addEdge(def, fKey, AssignGlobalLabel.v()); } else { PointerKey refKey = heapModel.getPointerKeyForLocal(node, ref); g.addNode(def); g.addNode(refKey); // TODO purely local optimizations g.addEdge(def, refKey, GetFieldLabel.make(f)); } }