@Override public int getNumberOfNodes() { return pointerKeys.getSize() + P.getInstanceKeyMapping().getSize(); }
@Override public int getNumberOfNodes() { return pointerKeys.getSize() + P.getInstanceKeyMapping().getSize(); }
@Override public int getNumber(Object N) { if (N instanceof PointerKey) { return pointerKeys.getMappedIndex(N); } else { if (!(N instanceof InstanceKey)) { Assertions.UNREACHABLE(N.getClass().toString()); } int inumber = P.getInstanceKeyMapping().getMappedIndex(N); return (inumber == -1) ? -1 : inumber + pointerKeys.getMaximumIndex() + 1; } }
@Override protected List<PointerKey> getPointerKeysUnderInstanceKey(InstanceKey ik) { List<PointerKey> ret = new ArrayList<>(super.getPointerKeysUnderInstanceKey(ik)); int ikIndex = pa.getInstanceKeyMapping().getMappedIndex(ik); ret.addAll(nonNullList(instanceKeyIdToObjectPropertyCatalogKey.getMappedObject(ikIndex))); return ret; }
@Override protected List<PointerKey> getPointerKeysUnderInstanceKey(InstanceKey ik) { List<PointerKey> ret = new ArrayList<>(super.getPointerKeysUnderInstanceKey(ik)); int ikIndex = pa.getInstanceKeyMapping().getMappedIndex(ik); ret.addAll(nonNullList(instanceKeyIdToObjectPropertyCatalogKey.getMappedObject(ikIndex))); return ret; }
@Override public int getNumber(Object N) { if (N instanceof PointerKey) { return pointerKeys.getMappedIndex(N); } else { if (!(N instanceof InstanceKey)) { Assertions.UNREACHABLE(N.getClass().toString()); } int inumber = P.getInstanceKeyMapping().getMappedIndex(N); return (inumber == -1) ? -1 : inumber + pointerKeys.getMaximumIndex() + 1; } }
@Override public Iterator<Object> iterator() { return new CompoundIterator<>(pointerKeys.iterator(), P.getInstanceKeyMapping().iterator()); }
/** * Get the set of pointer keys that should be presented below an instance key in the heap tree. Override if you have special * pointer keys (not just for fields) */ protected List<? extends PointerKey> getPointerKeysUnderInstanceKey(InstanceKey ik) { int ikIndex = pa.getInstanceKeyMapping().getMappedIndex(ik); List<? extends PointerKey> ret; if (ikIndex <= instanceKeyIdToInstanceFieldPointers.getMaximumIndex()){ ret = nonNullList(instanceKeyIdToInstanceFieldPointers.getMappedObject(ikIndex)); } else { ret = Collections.emptyList(); } return ret; }
/** * Get the set of pointer keys that should be presented below an instance key in the heap tree. Override if you have special * pointer keys (not just for fields) */ protected List<? extends PointerKey> getPointerKeysUnderInstanceKey(InstanceKey ik) { int ikIndex = pa.getInstanceKeyMapping().getMappedIndex(ik); List<? extends PointerKey> ret; if (ikIndex <= instanceKeyIdToInstanceFieldPointers.getMaximumIndex()){ ret = nonNullList(instanceKeyIdToInstanceFieldPointers.getMappedObject(ikIndex)); } else { ret = Collections.emptyList(); } return ret; }
@Override public Iterator<Object> iterator() { return new CompoundIterator<>(pointerKeys.iterator(), P.getInstanceKeyMapping().iterator()); }
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){ if (n instanceof PointerKey){ if (n instanceof ObjectPropertyCatalogKey){ ObjectPropertyCatalogKey opck = (ObjectPropertyCatalogKey) n; InstanceKey instanceKey = opck.getObject(); int instanceKeyId = instanceKeyMapping.getMappedIndex(instanceKey); mapUsingMutableMapping(instanceKeyIdToObjectPropertyCatalogKey, instanceKeyId, opck); } else if (n instanceof AstGlobalPointerKey){ globalsPointerKeys.add((AstGlobalPointerKey) n); } } else { System.err.println("Non Pointer key root: " + n); } } } }
@Override public Object getNode(int number) { if (number > pointerKeys.getMaximumIndex()) { return P.getInstanceKeyMapping().getMappedObject(number - pointerKeys.getSize()); } else { return pointerKeys.getMappedObject(number); } }
@Override public Object getNode(int number) { if (number > pointerKeys.getMaximumIndex()) { return P.getInstanceKeyMapping().getMappedObject(number - pointerKeys.getSize()); } else { return pointerKeys.getMappedObject(number); } }
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){ if (n instanceof PointerKey){ if (n instanceof ObjectPropertyCatalogKey){ ObjectPropertyCatalogKey opck = (ObjectPropertyCatalogKey) n; InstanceKey instanceKey = opck.getObject(); int instanceKeyId = instanceKeyMapping.getMappedIndex(instanceKey); mapUsingMutableMapping(instanceKeyIdToObjectPropertyCatalogKey, instanceKeyId, opck); } else if (n instanceof AstGlobalPointerKey){ globalsPointerKeys.add((AstGlobalPointerKey) n); } } else { System.err.println("Non Pointer key root: " + n); } } } }
public UriPrefixTransferGraph(final PointerAnalysis<InstanceKey> pa) { final Map<InstanceKeySite, Set<InstanceKey>> unresolvedDependencies = new HashMap<>(); final OrdinalSetMapping<InstanceKey> mapping = pa.getInstanceKeyMapping(); final Collection<InstanceKey> instanceKeys = pa.getInstanceKeys();
public InstanceKeySite getNode(final CallSiteReference csr, final InstanceKey k) { final ISSABasicBlock bbs[] = node.getIR().getBasicBlocksForCall(csr); final OrdinalSetMapping<InstanceKey> mapping = pa.getInstanceKeyMapping(); final HashSet<ISSABasicBlock> blocksSeen = new HashSet<>(); final ArrayList<Integer> concatenatedInstanceKeys = new ArrayList<>();
node = new ConstantString(pa.getInstanceKeyMapping().getMappedIndex(k), (String)((ConstantKey<?>)k).getValue()); addNode(node); nodeMap.put(k, node); HashSet<InstanceKey> iks = new HashSet<>(); for (Integer i: ((StringBuilderToStringInstanceKeySite) node).concatenatedInstanceKeys) { iks.add(pa.getInstanceKeyMapping().getMappedObject(i));
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); } } } }