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); } } } }
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); } } } }
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); } } } }