Changes between Version 1 and Version 2 of HeapCanonicalization
- Timestamp:
- 07/31/14 11:44:39 (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
HeapCanonicalization
v1 v2 33 33 {{{ 34 34 Map<HeapObject, Integer> reachableHeapObjectsOfState(state){ 35 Set<HeapObject> visited;36 35 Map<HeapObject, Integer> idMap; 37 36 38 37 for(dyscope: state.dyscopes()){ 39 38 for(varValue: dyscope.varValues()){ 40 reachableHeapObjects (varValue);39 reachableHeapObjectsOfValue(varValue, idMap); 41 40 } 42 41 } … … 45 44 46 45 //dfs 47 void reachableHeapObjectsOfValue(varValue, visited,idMap){46 void reachableHeapObjectsOfValue(varValue, idMap){ 48 47 if(varValue NOT pointer){ 49 48 for(element: varValue.elements()){ 50 reachableHeapObjects(varValue, visited,idMap);49 reachableHeapObjects(varValue, idMap); 51 50 } 52 51 }else if(varValue IS heap pointer){ 53 52 object = dereference(varValue); 54 53 55 if(!visited.contains(object)){ 56 visited.add(object); 57 idMap.put(object, idMap.size()); 58 } 54 if(! dMap.containsKey(object)) 55 if(object is SymbolicConstant) 56 idMap.put(object, idMap.size()); 57 else 58 idMap.put(object, -1); 59 59 }else{//other pointer 60 reachableHeapObjects(dereference(varValue), visited,idMap){60 reachableHeapObjects(dereference(varValue), idMap){ 61 61 } 62 62 }
