private static int compareExceptionKey(ExceptionReturnValueKey key1, Object key2) { if (key2 instanceof ExceptionReturnValueKey) { int n1 = key1.getNode().getGraphNodeId(); int n2 = ((ExceptionReturnValueKey)key2).getNode().getGraphNodeId(); if (n1 != n2) return n1-n2; else { assert key1.equals(key2); return 0; } } else return -1; }
private static int compareExceptionKey(ExceptionReturnValueKey key1, Object key2) { if (key2 instanceof ExceptionReturnValueKey) { int n1 = key1.getNode().getGraphNodeId(); int n2 = ((ExceptionReturnValueKey)key2).getNode().getGraphNodeId(); if (n1 != n2) return n1-n2; else { assert key1.equals(key2); return 0; } } else return -1; }
private static int compareReturnValueKey(ReturnValueKey key1, Object key2) { if (key2 instanceof ReturnValueKey) { int n1 = key1.getNode().getGraphNodeId(); int n2 = ((ReturnValueKey)key2).getNode().getGraphNodeId(); if (n1 != n2) return n1-n2; else { assert key1.equals(key2); return 0; } } else return -1; }
private static int compareReturnValueKey(ReturnValueKey key1, Object key2) { if (key2 instanceof ReturnValueKey) { int n1 = key1.getNode().getGraphNodeId(); int n2 = ((ReturnValueKey)key2).getNode().getGraphNodeId(); if (n1 != n2) return n1-n2; else { assert key1.equals(key2); return 0; } } else return -1; }
/** * Used for filling the tree dynamically. Override and handle your own nodes / different links. */ protected List<Object> getChildrenFor(Object node) { List<Object> ret = new ArrayList<>(); if (node instanceof InstanceKey){ ret.addAll(getPointerKeysUnderInstanceKey((InstanceKey) node)); } else if (node instanceof PointerKey){ for (InstanceKey ik : pa.getPointsToSet((PointerKey) node)){ ret.add(ik); } } else if (node instanceof CGNode){ int nodeId = ((CGNode) node).getGraphNodeId(); ret.addAll(nonNullList(cgNodeIdToLocalPointers.getMappedObject(nodeId))); ret.addAll(nonNullList(cgNodeIdToReturnValue.getMappedObject(nodeId))); } else { assert false : "Unhandled Node : " + node; } return ret; }
/** * Used for filling the tree dynamically. Override and handle your own nodes / different links. */ protected List<Object> getChildrenFor(Object node) { List<Object> ret = new ArrayList<>(); if (node instanceof InstanceKey){ ret.addAll(getPointerKeysUnderInstanceKey((InstanceKey) node)); } else if (node instanceof PointerKey){ for (InstanceKey ik : pa.getPointsToSet((PointerKey) node)){ ret.add(ik); } } else if (node instanceof CGNode){ int nodeId = ((CGNode) node).getGraphNodeId(); ret.addAll(nonNullList(cgNodeIdToLocalPointers.getMappedObject(nodeId))); ret.addAll(nonNullList(cgNodeIdToReturnValue.getMappedObject(nodeId))); } else { assert false : "Unhandled Node : " + node; } return ret; }
private static int compareLocalKey(LocalPointerKey key1, Object key2) { if (key2 instanceof LocalPointerKey) { int l1 = key1.getValueNumber(); int l2 = ((LocalPointerKey)key2).getValueNumber(); if (l1 != l2) return l1-l2; else { int n1 = key1.getNode().getGraphNodeId(); int n2 = ((LocalPointerKey)key2).getNode().getGraphNodeId(); if (n1 != n2) return n1-n2; else { assert key1.equals(key2); return 0; } } } else return -1; }
private static int compareLocalKey(LocalPointerKey key1, Object key2) { if (key2 instanceof LocalPointerKey) { int l1 = key1.getValueNumber(); int l2 = ((LocalPointerKey)key2).getValueNumber(); if (l1 != l2) return l1-l2; else { int n1 = key1.getNode().getGraphNodeId(); int n2 = ((LocalPointerKey)key2).getNode().getGraphNodeId(); if (n1 != n2) return n1-n2; else { assert key1.equals(key2); return 0; } } } else return -1; }
System.err.println("\nIR of node " + N.getGraphNodeId() + ", context " + N.getContext()); IRView ir = interp.getIRView(N); if (ir != null) {
System.err.println("\nIR of node " + N.getGraphNodeId() + ", context " + N.getContext()); IRView ir = interp.getIRView(N); if (ir != null) {
@Override public IntSet getSuccNodeNumbers(CGNode node) { MutableIntSet result = IntSetUtil.make(); for(CGNode s : Iterator2Iterable.make(getSuccNodes(node))) { result.add(s.getGraphNodeId()); } return result; }
@Override public IntSet getPredNodeNumbers(CGNode node) { MutableIntSet result = IntSetUtil.make(); for(CGNode s : Iterator2Iterable.make(getPredNodes(node))) { result.add(s.getGraphNodeId()); } return result; }
@Override public IntSet getPredNodeNumbers(CGNode node) { MutableIntSet result = IntSetUtil.make(); for(CGNode s : Iterator2Iterable.make(getPredNodes(node))) { result.add(s.getGraphNodeId()); } return result; }
@Override public IntSet getSuccNodeNumbers(CGNode node) { MutableIntSet result = IntSetUtil.make(); for(CGNode s : Iterator2Iterable.make(getSuccNodes(node))) { result.add(s.getGraphNodeId()); } return result; }
private void initDataStructures(PointerAnalysis<InstanceKey> pa) { HeapGraph<InstanceKey> heapGraph = pa.getHeapGraph(); OrdinalSetMapping<InstanceKey> instanceKeyMapping = pa.getInstanceKeyMapping(); for (Object n : heapGraph){ if (heapGraph.getPredNodeCount(n) == 0){ // considering only roots of the heap graph. if (n instanceof PointerKey){ if (n instanceof LocalPointerKey){ LocalPointerKey lpk = (LocalPointerKey) n; int nodeId = lpk.getNode().getGraphNodeId(); mapUsingMutableMapping(cgNodeIdToLocalPointers, nodeId, lpk); } else if (n instanceof ReturnValueKey){ ReturnValueKey rvk = (ReturnValueKey) n; int nodeId = rvk.getNode().getGraphNodeId(); mapUsingMutableMapping(cgNodeIdToReturnValue, nodeId, rvk); } else if (n instanceof InstanceFieldPointerKey){ InstanceFieldPointerKey ifpk = (InstanceFieldPointerKey) n; int instanceKeyId = instanceKeyMapping.getMappedIndex(ifpk.getInstanceKey()); mapUsingMutableMapping(instanceKeyIdToInstanceFieldPointers, instanceKeyId, ifpk); } } else { System.err.println("Non Pointer key root: " + n); } } } }
private void initDataStructures(PointerAnalysis<InstanceKey> pa) { HeapGraph<InstanceKey> heapGraph = pa.getHeapGraph(); OrdinalSetMapping<InstanceKey> instanceKeyMapping = pa.getInstanceKeyMapping(); for (Object n : heapGraph){ if (heapGraph.getPredNodeCount(n) == 0){ // considering only roots of the heap graph. if (n instanceof PointerKey){ if (n instanceof LocalPointerKey){ LocalPointerKey lpk = (LocalPointerKey) n; int nodeId = lpk.getNode().getGraphNodeId(); mapUsingMutableMapping(cgNodeIdToLocalPointers, nodeId, lpk); } else if (n instanceof ReturnValueKey){ ReturnValueKey rvk = (ReturnValueKey) n; int nodeId = rvk.getNode().getGraphNodeId(); mapUsingMutableMapping(cgNodeIdToReturnValue, nodeId, rvk); } else if (n instanceof InstanceFieldPointerKey){ InstanceFieldPointerKey ifpk = (InstanceFieldPointerKey) n; int instanceKeyId = instanceKeyMapping.getMappedIndex(ifpk.getInstanceKey()); mapUsingMutableMapping(instanceKeyIdToInstanceFieldPointers, instanceKeyId, ifpk); } } else { System.err.println("Non Pointer key root: " + n); } } } }
if (targets != null && targets.contains(target.getGraphNodeId()) && noConstParams()) {
if (targets != null && targets.contains(target.getGraphNodeId()) && noConstParams()) {
if (targets != null && targets.contains(target.getGraphNodeId())) {
if (targets != null && targets.contains(target.getGraphNodeId())) {