svf-tools 1.0.284 → 1.0.285

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
  4. package/SVF-doxygen/html/html/Andersen_8h_source.html +5 -5
  5. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +2 -2
  6. package/SVF-doxygen/html/html/CHG_8cpp_source.html +5 -5
  7. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  9. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
  12. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +4 -4
  13. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
  14. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  16. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +3 -3
  17. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  19. package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +2 -2
  21. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  22. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +3 -3
  23. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +3 -3
  25. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +5 -5
  27. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +3 -3
  28. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +3 -3
  29. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +5 -5
  31. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  32. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
  33. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +6 -6
  34. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
  35. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +4 -4
  36. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  37. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +7 -7
  38. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
  39. package/SVF-doxygen/html/html/LocationSet_8h_source.html +3 -3
  40. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +7 -7
  42. package/SVF-doxygen/html/html/MHP_8cpp_source.html +3 -3
  43. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +5 -5
  44. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  45. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +7 -7
  47. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +5 -5
  48. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  49. package/SVF-doxygen/html/html/MemModel_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +15 -15
  51. package/SVF-doxygen/html/html/MemPartition_8h_source.html +11 -11
  52. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +103 -34
  53. package/SVF-doxygen/html/html/MemRegion_8h.html +3 -3
  54. package/SVF-doxygen/html/html/MemRegion_8h_source.html +97 -109
  55. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +43 -42
  56. package/SVF-doxygen/html/html/MemSSA_8h_source.html +46 -47
  57. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +3 -3
  58. package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +5 -5
  59. package/SVF-doxygen/html/html/PAG_8cpp_source.html +3 -3
  60. package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
  61. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
  62. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +29 -29
  64. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +7 -7
  65. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp.html +2 -2
  66. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +19 -21
  67. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +81 -81
  68. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +8 -8
  69. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
  70. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +8 -8
  71. package/SVF-doxygen/html/html/SVFGBuilder_8h.html +2 -1
  72. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +20 -19
  73. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +3 -3
  74. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +3 -3
  75. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +7 -7
  76. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -4
  77. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +21 -21
  78. package/SVF-doxygen/html/html/SVFG_8cpp.html +1 -0
  79. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +46 -45
  80. package/SVF-doxygen/html/html/SVFG_8h_source.html +12 -13
  81. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  82. package/SVF-doxygen/html/html/SVFUtil_8cpp.html +9 -8
  83. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +34 -33
  84. package/SVF-doxygen/html/html/SVFUtil_8h.html +14 -2
  85. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +43 -36
  86. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  87. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
  88. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -2
  89. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  90. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +6 -6
  91. package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
  92. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +2 -2
  93. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  94. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  95. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +9 -9
  96. package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -3
  97. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  98. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  99. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +3 -3
  100. package/SVF-doxygen/html/html/annotated.html +16 -16
  101. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +5 -5
  102. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +4 -4
  103. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +58 -59
  107. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +19 -22
  108. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +48 -49
  109. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +9 -12
  110. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +60 -61
  111. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +2 -5
  112. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +63 -64
  113. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +2 -5
  114. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +59 -60
  115. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +2 -5
  116. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +63 -64
  117. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +5 -8
  118. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +67 -68
  119. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -5
  120. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
  121. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +58 -59
  122. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +2 -5
  123. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType-members.html +64 -65
  124. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +4 -7
  125. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +2 -2
  126. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +2 -2
  127. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +135 -138
  128. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
  129. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
  130. package/SVF-doxygen/html/html/classSVF_1_1BranchCondManager.html +2 -2
  131. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
  132. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +2 -2
  133. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +2 -2
  134. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
  135. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  136. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +2 -2
  137. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
  139. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
  140. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +115 -115
  141. package/SVF-doxygen/html/html/classSVF_1_1CondPointsToSet.html +1 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +10 -10
  143. package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
  148. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +3 -3
  150. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +63 -62
  151. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +94 -92
  152. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1EntryCHI.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
  156. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +65 -66
  157. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -5
  158. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +4 -4
  159. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +51 -52
  160. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +10 -13
  161. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +62 -63
  162. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +35 -38
  163. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +5 -5
  164. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +74 -75
  165. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +17 -20
  166. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +3 -3
  167. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +5 -5
  168. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +1 -1
  169. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +1 -1
  170. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +2 -2
  171. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +1 -1
  172. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
  173. package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +7 -7
  175. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +7 -7
  176. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +3 -3
  178. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
  179. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +71 -70
  180. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +88 -86
  181. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +3 -3
  182. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +71 -70
  185. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +126 -124
  186. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  187. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +3 -3
  188. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +13 -13
  190. package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +2 -2
  191. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
  192. package/SVF-doxygen/html/html/classSVF_1_1LocSymTableInfo.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +1 -1
  194. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +11 -11
  195. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +3 -3
  196. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +8 -8
  197. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +5 -5
  198. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +76 -75
  199. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +515 -506
  200. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +2 -2
  201. package/SVF-doxygen/html/html/classSVF_1_1MSSACHI.html +2 -2
  202. package/SVF-doxygen/html/html/classSVF_1_1MSSADEF.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1MSSAMU.html +2 -2
  204. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHI.html +1 -1
  205. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +5 -5
  206. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +2 -2
  207. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  208. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +14 -14
  209. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +14 -14
  210. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +3 -3
  211. package/SVF-doxygen/html/html/classSVF_1_1MemRegion-members.html +9 -10
  212. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +38 -56
  213. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +1 -1
  214. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +132 -132
  215. package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +5 -5
  216. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +21 -21
  217. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
  218. package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
  219. package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +1 -1
  221. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +6 -6
  222. package/SVF-doxygen/html/html/classSVF_1_1PAGNode.html +1 -1
  223. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
  224. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +3 -3
  225. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
  226. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +2 -2
  227. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +1 -1
  228. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +3 -3
  229. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +4 -4
  230. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
  231. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +9 -9
  232. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +28 -27
  233. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +144 -111
  234. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +21 -21
  235. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +1 -1
  236. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +5 -5
  237. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +1 -1
  238. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  239. package/SVF-doxygen/html/html/classSVF_1_1RetMU.html +2 -2
  240. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  241. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
  242. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +4 -4
  243. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +62 -62
  244. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +37 -37
  245. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +6 -6
  246. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +49 -49
  247. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
  248. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +4 -4
  249. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +15 -15
  250. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
  251. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +52 -53
  252. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +6 -9
  253. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +2 -2
  254. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +2 -2
  255. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
  256. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +5 -5
  257. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +2 -2
  258. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  260. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +3 -3
  261. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +2 -2
  262. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  263. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +51 -52
  264. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -6
  265. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +10 -10
  266. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
  267. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  268. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +2 -2
  269. package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +1 -1
  270. package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +1 -1
  271. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +82 -83
  272. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +5 -8
  273. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  274. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +7 -7
  275. package/SVF-doxygen/html/html/classes.html +2 -2
  276. package/SVF-doxygen/html/html/functions_a.html +10 -10
  277. package/SVF-doxygen/html/html/functions_c.html +11 -11
  278. package/SVF-doxygen/html/html/functions_e.html +4 -7
  279. package/SVF-doxygen/html/html/functions_f.html +17 -14
  280. package/SVF-doxygen/html/html/functions_func.html +10 -10
  281. package/SVF-doxygen/html/html/functions_func_c.html +5 -5
  282. package/SVF-doxygen/html/html/functions_func_g.html +33 -30
  283. package/SVF-doxygen/html/html/functions_func_h.html +1 -1
  284. package/SVF-doxygen/html/html/functions_func_i.html +1 -1
  285. package/SVF-doxygen/html/html/functions_func_m.html +2 -2
  286. package/SVF-doxygen/html/html/functions_func_o.html +3 -3
  287. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  288. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  289. package/SVF-doxygen/html/html/functions_g.html +30 -27
  290. package/SVF-doxygen/html/html/functions_h.html +1 -1
  291. package/SVF-doxygen/html/html/functions_i.html +7 -7
  292. package/SVF-doxygen/html/html/functions_l.html +4 -4
  293. package/SVF-doxygen/html/html/functions_m.html +2 -2
  294. package/SVF-doxygen/html/html/functions_o.html +7 -9
  295. package/SVF-doxygen/html/html/functions_p.html +17 -13
  296. package/SVF-doxygen/html/html/functions_r.html +8 -4
  297. package/SVF-doxygen/html/html/functions_s.html +7 -7
  298. package/SVF-doxygen/html/html/functions_t.html +3 -3
  299. package/SVF-doxygen/html/html/functions_type_c.html +1 -1
  300. package/SVF-doxygen/html/html/functions_type_e.html +0 -3
  301. package/SVF-doxygen/html/html/functions_type_f.html +4 -1
  302. package/SVF-doxygen/html/html/functions_type_l.html +1 -1
  303. package/SVF-doxygen/html/html/functions_type_p.html +3 -3
  304. package/SVF-doxygen/html/html/functions_type_s.html +1 -1
  305. package/SVF-doxygen/html/html/functions_vars_c.html +5 -5
  306. package/SVF-doxygen/html/html/functions_vars_f.html +3 -3
  307. package/SVF-doxygen/html/html/functions_vars_i.html +1 -1
  308. package/SVF-doxygen/html/html/functions_vars_p.html +1 -1
  309. package/SVF-doxygen/html/html/globals_s.html +3 -3
  310. package/SVF-doxygen/html/html/hierarchy.html +2 -2
  311. package/SVF-doxygen/html/html/menudata.js +1 -0
  312. package/SVF-doxygen/html/html/namespaceSVF.html +3 -3
  313. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +250 -122
  314. package/SVF-doxygen/html/html/namespacemembers_c.html +3 -0
  315. package/SVF-doxygen/html/html/namespacemembers_e.html +3 -0
  316. package/SVF-doxygen/html/html/namespacemembers_func.html +23 -10
  317. package/SVF-doxygen/html/html/namespacemembers_m.html +3 -0
  318. package/SVF-doxygen/html/html/namespacemembers_p.html +4 -1
  319. package/SVF-doxygen/html/html/namespacemembers_type_e.html +3 -0
  320. package/SVF-doxygen/html/html/namespacemembers_type_p.html +1 -1
  321. package/SVF-doxygen/html/html/search/all_1.js +10 -10
  322. package/SVF-doxygen/html/html/search/all_10.js +12 -11
  323. package/SVF-doxygen/html/html/search/all_12.js +2 -2
  324. package/SVF-doxygen/html/html/search/all_13.js +7 -7
  325. package/SVF-doxygen/html/html/search/all_14.js +4 -4
  326. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  327. package/SVF-doxygen/html/html/search/all_3.js +12 -11
  328. package/SVF-doxygen/html/html/search/all_5.js +2 -1
  329. package/SVF-doxygen/html/html/search/all_6.js +4 -3
  330. package/SVF-doxygen/html/html/search/all_7.js +14 -13
  331. package/SVF-doxygen/html/html/search/all_8.js +1 -1
  332. package/SVF-doxygen/html/html/search/all_9.js +4 -4
  333. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  334. package/SVF-doxygen/html/html/search/all_d.js +5 -4
  335. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  336. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  337. package/SVF-doxygen/html/html/search/classes_4.js +2 -1
  338. package/SVF-doxygen/html/html/search/functions_0.js +10 -10
  339. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  340. package/SVF-doxygen/html/html/search/functions_2.js +6 -5
  341. package/SVF-doxygen/html/html/search/functions_6.js +14 -13
  342. package/SVF-doxygen/html/html/search/functions_7.js +1 -1
  343. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  344. package/SVF-doxygen/html/html/search/functions_b.js +3 -2
  345. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  346. package/SVF-doxygen/html/html/search/functions_e.js +2 -1
  347. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  348. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  349. package/SVF-doxygen/html/html/search/typedefs_4.js +2 -1
  350. package/SVF-doxygen/html/html/search/typedefs_5.js +2 -1
  351. package/SVF-doxygen/html/html/search/typedefs_b.js +1 -1
  352. package/SVF-doxygen/html/html/search/typedefs_f.js +3 -3
  353. package/SVF-doxygen/html/html/search/variables_10.js +1 -1
  354. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  355. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  356. package/SVF-doxygen/html/html/search/variables_3.js +5 -5
  357. package/SVF-doxygen/html/html/search/variables_6.js +3 -3
  358. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  359. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  360. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  361. package/SVF-doxygen/html/html/structSVF_1_1MemRegion_1_1equalMemRegion.html +3 -3
  362. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1equalNodeBS-members.html +81 -0
  363. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1equalNodeBS.html +134 -0
  364. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1equalPointsTo.html +3 -3
  365. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  366. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +1 -1
  367. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html +1 -1
  368. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  369. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  370. package/include/Graphs/SVFG.h +4 -4
  371. package/include/Graphs/SVFGOPT.h +4 -4
  372. package/include/MSSA/MemPartition.h +10 -10
  373. package/include/MSSA/MemRegion.h +40 -64
  374. package/include/MSSA/MemSSA.h +1 -4
  375. package/include/MSSA/SVFGBuilder.h +1 -0
  376. package/include/MemoryModel/LocationSet.h +3 -3
  377. package/include/MemoryModel/PersistentPointsToCache.h +19 -8
  378. package/include/MemoryModel/PointerAnalysisImpl.h +3 -4
  379. package/include/Util/SVFUtil.h +44 -1
  380. package/lib/Graphs/SVFG.cpp +12 -12
  381. package/lib/Graphs/SVFGOPT.cpp +6 -6
  382. package/lib/MSSA/MemPartition.cpp +31 -31
  383. package/lib/MSSA/MemRegion.cpp +59 -35
  384. package/lib/MSSA/MemSSA.cpp +5 -0
  385. package/lib/MemoryModel/LocationSet.cpp +2 -2
  386. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -4
  387. package/lib/Util/SVFUtil.cpp +3 -2
  388. package/package.json +1 -1
@@ -87,8 +87,8 @@ Public Types</h2></td></tr>
87
87
  </table><table class="memberdecls">
88
88
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
89
89
  Public Member Functions</h2></td></tr>
90
- <tr class="memitem:a63b6d7f44773394db09f75042db46f21"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a63b6d7f44773394db09f75042db46f21">PersistentPointsToCache</a> (const Data &amp;emptyData)</td></tr>
91
- <tr class="separator:a63b6d7f44773394db09f75042db46f21"><td class="memSeparator" colspan="2">&#160;</td></tr>
90
+ <tr class="memitem:acbfc07bb91fb08658a911abe0a8113c5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#acbfc07bb91fb08658a911abe0a8113c5">PersistentPointsToCache</a> (void)</td></tr>
91
+ <tr class="separator:acbfc07bb91fb08658a911abe0a8113c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
92
92
  <tr class="memitem:af7e82410738f2cbaf06ea5249932a142"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#af7e82410738f2cbaf06ea5249932a142">reset</a> (void)</td></tr>
93
93
  <tr class="memdesc:af7e82410738f2cbaf06ea5249932a142"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets the cache removing everything except the emptyData it was initialised with. <a href="#af7e82410738f2cbaf06ea5249932a142">More...</a><br /></td></tr>
94
94
  <tr class="separator:af7e82410738f2cbaf06ea5249932a142"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -109,6 +109,8 @@ Public Member Functions</h2></td></tr>
109
109
  <tr class="memitem:a7d101df4e73b8fbf9ec0df25190417b5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a7d101df4e73b8fbf9ec0df25190417b5">printStats</a> (const std::string subtitle) const</td></tr>
110
110
  <tr class="memdesc:a7d101df4e73b8fbf9ec0df25190417b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print statistics on operations and points-to set numbers. <a href="#a7d101df4e73b8fbf9ec0df25190417b5">More...</a><br /></td></tr>
111
111
  <tr class="separator:a7d101df4e73b8fbf9ec0df25190417b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
112
+ <tr class="memitem:ab84d0806e87c982bf81ae309f28751e3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt; Data, unsigned &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#ab84d0806e87c982bf81ae309f28751e3">getAllPts</a> (void)</td></tr>
113
+ <tr class="separator:ab84d0806e87c982bf81ae309f28751e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
112
114
  </table><table class="memberdecls">
113
115
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
114
116
  Static Public Member Functions</h2></td></tr>
@@ -127,8 +129,8 @@ Private Member Functions</h2></td></tr>
127
129
  </table><table class="memberdecls">
128
130
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
129
131
  Private Attributes</h2></td></tr>
130
- <tr class="memitem:ac15f8dc2bd850d275c692c3001751c9e"><td class="memItemLeft" align="right" valign="top">std::vector&lt; const Data * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">idToPts</a></td></tr>
131
- <tr class="separator:ac15f8dc2bd850d275c692c3001751c9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
132
+ <tr class="memitem:a390c08099f16afb4b80b6e094d1adf25"><td class="memItemLeft" align="right" valign="top">std::vector&lt; Data * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a></td></tr>
133
+ <tr class="separator:a390c08099f16afb4b80b6e094d1adf25"><td class="memSeparator" colspan="2">&#160;</td></tr>
132
134
  <tr class="memitem:a6a3b33721ae00efd2fdf2d71f3298e1c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a9a1b0d0d215c048c7200da0e8f816943">PTSToIDMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a></td></tr>
133
135
  <tr class="memdesc:a6a3b33721ae00efd2fdf2d71f3298e1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps points-to sets to their corresponding ID. <a href="#a6a3b33721ae00efd2fdf2d71f3298e1c">More...</a><br /></td></tr>
134
136
  <tr class="separator:a6a3b33721ae00efd2fdf2d71f3298e1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -232,8 +234,8 @@ template&lt;typename Data&gt; </div>
232
234
  </div>
233
235
  </div>
234
236
  <h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
235
- <a id="a63b6d7f44773394db09f75042db46f21"></a>
236
- <h2 class="memtitle"><span class="permalink"><a href="#a63b6d7f44773394db09f75042db46f21">&#9670;&nbsp;</a></span>PersistentPointsToCache()</h2>
237
+ <a id="acbfc07bb91fb08658a911abe0a8113c5"></a>
238
+ <h2 class="memtitle"><span class="permalink"><a href="#acbfc07bb91fb08658a911abe0a8113c5">&#9670;&nbsp;</a></span>PersistentPointsToCache()</h2>
237
239
 
238
240
  <div class="memitem">
239
241
  <div class="memproto">
@@ -246,8 +248,8 @@ template&lt;typename Data&gt; </div>
246
248
  <tr>
247
249
  <td class="memname"><a class="el" href="classSVF_1_1PersistentPointsToCache.html">SVF::PersistentPointsToCache</a>&lt; Data &gt;::<a class="el" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache</a> </td>
248
250
  <td>(</td>
249
- <td class="paramtype">const Data &amp;&#160;</td>
250
- <td class="paramname"><em>emptyData</em></td><td>)</td>
251
+ <td class="paramtype">void&#160;</td>
252
+ <td class="paramname"></td><td>)</td>
251
253
  <td></td>
252
254
  </tr>
253
255
  </table>
@@ -259,11 +261,11 @@ template&lt;typename Data&gt; </div>
259
261
  </div><div class="memdoc">
260
262
 
261
263
  <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00040">40</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
262
- <div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a>(1)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">idToPts</a>.push_back(<span class="keyword">new</span> Data(emptyData));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[emptyData] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">initStats</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00383">PersistentPointsToCache.h:383</a></div></div>
263
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad8d24772f7503e0e735f546506d2bcc5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">SVF::PersistentPointsToCache::idCounter</a></div><div class="ttdeci">PointsToID idCounter</div><div class="ttdoc">Used to generate new PointsToIDs. Any non-zero is valid. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00393">PersistentPointsToCache.h:393</a></div></div>
264
+ <div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a>(1)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>.push_back(<span class="keyword">new</span> Data());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[Data()] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">initStats</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00394">PersistentPointsToCache.h:394</a></div></div>
265
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad8d24772f7503e0e735f546506d2bcc5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">SVF::PersistentPointsToCache::idCounter</a></div><div class="ttdeci">PointsToID idCounter</div><div class="ttdoc">Used to generate new PointsToIDs. Any non-zero is valid. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00404">PersistentPointsToCache.h:404</a></div></div>
264
266
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00037">PersistentPointsToCache.h:37</a></div></div>
265
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab19e4e17b1896565e0bada1f161d1266"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">SVF::PersistentPointsToCache::initStats</a></div><div class="ttdeci">void initStats(void)</div><div class="ttdoc">Initialises statistics variables to 0. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00359">PersistentPointsToCache.h:359</a></div></div>
266
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac15f8dc2bd850d275c692c3001751c9e"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; const Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00381">PersistentPointsToCache.h:381</a></div></div>
267
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab19e4e17b1896565e0bada1f161d1266"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">SVF::PersistentPointsToCache::initStats</a></div><div class="ttdeci">void initStats(void)</div><div class="ttdoc">Initialises statistics variables to 0. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00369">PersistentPointsToCache.h:369</a></div></div>
268
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00392">PersistentPointsToCache.h:392</a></div></div>
267
269
  </div><!-- fragment -->
268
270
  </div>
269
271
  </div>
@@ -306,20 +308,20 @@ template&lt;typename Data&gt; </div>
306
308
 
307
309
  <p>Relatively complements lhs and rhs (lhs \ rhs) and returns it's ID. </p>
308
310
 
309
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00149">149</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
310
- <div class="fragment"><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">DataOp</a> complementOp = [](<span class="keyword">const</span> Data &amp;lhs, <span class="keyword">const</span> Data &amp;rhs) { <span class="keywordflow">return</span> lhs - rhs; };</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="comment">// x - x</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (lhs == rhs)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="comment">// x - EMPTY_SET</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (rhs == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="comment">// EMPTY_SET - x</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">opPts</a>(lhs, rhs, complementOp, <a class="code" href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">complementCache</a>, <span class="keyword">false</span>, opPerformed);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="comment">// We performed lhs - rhs = result, so...</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="comment">// result AND rhs = EMPTY_SET,</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, rhs)] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">// and result AND lhs = result,</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, lhs)] = <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">// and result - rhs = result.</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">complementCache</a>[std::make_pair(result, rhs)] = <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; } <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7961dd7af7db2774e852beabcba1e5a8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">SVF::PersistentPointsToCache::propertyComplements</a></div><div class="ttdeci">u64_t propertyComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00402">PersistentPointsToCache.h:402</a></div></div>
311
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac7865b3ea1d76d2c522b465cc8e86639"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">SVF::PersistentPointsToCache::opPts</a></div><div class="ttdeci">PointsToID opPts(PointsToID lhs, PointsToID rhs, const DataOp &amp;dataOp, OpCache &amp;opCache, bool commutative, bool &amp;opPerformed)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00321">PersistentPointsToCache.h:321</a></div></div>
312
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5c1afbaebce46eac6b1172aa5f2824ee"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">SVF::PersistentPointsToCache::uniqueComplements</a></div><div class="ttdeci">u64_t uniqueComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00401">PersistentPointsToCache.h:401</a></div></div>
313
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_adef498f8a0d4c75023382e6312a85a58"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">SVF::PersistentPointsToCache::complementCache</a></div><div class="ttdeci">OpCache complementCache</div><div class="ttdoc">Maps two IDs to their relative complement. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00388">PersistentPointsToCache.h:388</a></div></div>
311
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00148">148</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
312
+ <div class="fragment"><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">DataOp</a> complementOp = [](<span class="keyword">const</span> Data &amp;lhs, <span class="keyword">const</span> Data &amp;rhs) { <span class="keywordflow">return</span> lhs - rhs; };</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">// x - x</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (lhs == rhs)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="comment">// x - EMPTY_SET</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">if</span> (rhs == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="comment">// EMPTY_SET - x</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">opPts</a>(lhs, rhs, complementOp, <a class="code" href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">complementCache</a>, <span class="keyword">false</span>, opPerformed);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="comment">// We performed lhs - rhs = result, so...</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// result AND rhs = EMPTY_SET,</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, rhs)] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="comment">// and result AND lhs = result,</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, lhs)] = <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// and result - rhs = result.</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">complementCache</a>[std::make_pair(result, rhs)] = <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; } <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7961dd7af7db2774e852beabcba1e5a8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">SVF::PersistentPointsToCache::propertyComplements</a></div><div class="ttdeci">u64_t propertyComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00413">PersistentPointsToCache.h:413</a></div></div>
313
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac7865b3ea1d76d2c522b465cc8e86639"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">SVF::PersistentPointsToCache::opPts</a></div><div class="ttdeci">PointsToID opPts(PointsToID lhs, PointsToID rhs, const DataOp &amp;dataOp, OpCache &amp;opCache, bool commutative, bool &amp;opPerformed)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00331">PersistentPointsToCache.h:331</a></div></div>
314
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5c1afbaebce46eac6b1172aa5f2824ee"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">SVF::PersistentPointsToCache::uniqueComplements</a></div><div class="ttdeci">u64_t uniqueComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00412">PersistentPointsToCache.h:412</a></div></div>
315
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_adef498f8a0d4c75023382e6312a85a58"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">SVF::PersistentPointsToCache::complementCache</a></div><div class="ttdeci">OpCache complementCache</div><div class="ttdoc">Maps two IDs to their relative complement. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00399">PersistentPointsToCache.h:399</a></div></div>
314
316
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5a0f1b93f29ce62ad13042ab8435c62c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">SVF::PersistentPointsToCache::DataOp</a></div><div class="ttdeci">std::function&lt; Data(const Data &amp;, const Data &amp;)&gt; DataOp</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00033">PersistentPointsToCache.h:33</a></div></div>
315
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00404">PersistentPointsToCache.h:404</a></div></div>
317
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00415">PersistentPointsToCache.h:415</a></div></div>
316
318
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00037">PersistentPointsToCache.h:37</a></div></div>
317
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a525fbb49c91040c078fbcaaae2339ef2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">SVF::PersistentPointsToCache::intersectionCache</a></div><div class="ttdeci">OpCache intersectionCache</div><div class="ttdoc">Maps two IDs to their intersection. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00390">PersistentPointsToCache.h:390</a></div></div>
318
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6d52fb93d22b2ce3e4e4acbdd82b88b0"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">SVF::PersistentPointsToCache::totalComplements</a></div><div class="ttdeci">u64_t totalComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00400">PersistentPointsToCache.h:400</a></div></div>
319
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a525fbb49c91040c078fbcaaae2339ef2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">SVF::PersistentPointsToCache::intersectionCache</a></div><div class="ttdeci">OpCache intersectionCache</div><div class="ttdoc">Maps two IDs to their intersection. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00401">PersistentPointsToCache.h:401</a></div></div>
320
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6d52fb93d22b2ce3e4e4acbdd82b88b0"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">SVF::PersistentPointsToCache::totalComplements</a></div><div class="ttdeci">u64_t totalComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00411">PersistentPointsToCache.h:411</a></div></div>
319
321
  <div class="ttc" id="cuddInt_8c_html_a8b2e13c78efca330f06b6ddcd7464b41"><div class="ttname"><a href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a></div><div class="ttdeci">static int result</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l07466">cuddInt.c:7466</a></div></div>
320
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a47f4e8ef1461396afb2e1c3cbe055e95"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">SVF::PersistentPointsToCache::lookupComplements</a></div><div class="ttdeci">u64_t lookupComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00403">PersistentPointsToCache.h:403</a></div></div>
322
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a47f4e8ef1461396afb2e1c3cbe055e95"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">SVF::PersistentPointsToCache::lookupComplements</a></div><div class="ttdeci">u64_t lookupComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00414">PersistentPointsToCache.h:414</a></div></div>
321
323
  <div class="ttc" id="namespaceSVF_html_ae545a88267bd2246de827cf590675aca"><div class="ttname"><a href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">SVF::PointsToID</a></div><div class="ttdeci">unsigned PointsToID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00090">SVFBasicTypes.h:90</a></div></div>
322
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00406">PersistentPointsToCache.h:406</a></div></div>
324
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00417">PersistentPointsToCache.h:417</a></div></div>
323
325
  </div><!-- fragment -->
324
326
  </div>
325
327
  </div>
@@ -350,11 +352,11 @@ template&lt;typename Data&gt; </div>
350
352
  </div><div class="memdoc">
351
353
  <p>If pts is not in the <a class="el" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache</a>, inserts it, assigns an ID, and returns that ID. If it is, then the ID is returned. </p>
352
354
 
353
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00071">71</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
354
- <div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// Is it already in the cache?</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">typename</span> PTSToIDMap::const_iterator foundId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.find(pts);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (foundId != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.end()) <span class="keywordflow">return</span> foundId-&gt;second;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// Otherwise, insert it.</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">newPointsToId</a>();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">idToPts</a>.push_back(<span class="keyword">new</span> Data(pts));</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[pts] = id;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> id;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00383">PersistentPointsToCache.h:383</a></div></div>
355
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac15f8dc2bd850d275c692c3001751c9e"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; const Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00381">PersistentPointsToCache.h:381</a></div></div>
355
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00070">70</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
356
+ <div class="fragment"><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">// Is it already in the cache?</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">typename</span> PTSToIDMap::const_iterator foundId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.find(pts);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (foundId != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.end()) <span class="keywordflow">return</span> foundId-&gt;second;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">// Otherwise, insert it.</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">newPointsToId</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>.push_back(<span class="keyword">new</span> Data(pts));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[pts] = id;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> id;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00394">PersistentPointsToCache.h:394</a></div></div>
357
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00392">PersistentPointsToCache.h:392</a></div></div>
356
358
  <div class="ttc" id="namespaceSVF_html_ae545a88267bd2246de827cf590675aca"><div class="ttname"><a href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">SVF::PointsToID</a></div><div class="ttdeci">unsigned PointsToID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00090">SVFBasicTypes.h:90</a></div></div>
357
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a52ec4a787a199bb4d7553e8bafa9c127"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">SVF::PersistentPointsToCache::newPointsToId</a></div><div class="ttdeci">PointsToID newPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00311">PersistentPointsToCache.h:311</a></div></div>
359
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a52ec4a787a199bb4d7553e8bafa9c127"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">SVF::PersistentPointsToCache::newPointsToId</a></div><div class="ttdeci">PointsToID newPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00321">PersistentPointsToCache.h:321</a></div></div>
358
360
  </div><!-- fragment -->
359
361
  </div>
360
362
  </div>
@@ -416,9 +418,41 @@ template&lt;typename Data&gt; </div>
416
418
 
417
419
  <p>Returns the points-to set which id represents. id must be stored in the cache. </p>
418
420
 
419
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00086">86</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
420
- <div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="comment">// Check if the points-to set for ID has already been stored.</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">idToPts</a>.size() &gt; <span class="keywordtype">id</span> &amp;&amp; <span class="stringliteral">&quot;PPTC::getActualPts: points-to set not stored!&quot;</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span> *<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">idToPts</a>.at(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
421
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac15f8dc2bd850d275c692c3001751c9e"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; const Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00381">PersistentPointsToCache.h:381</a></div></div>
421
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00085">85</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
422
+ <div class="fragment"><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// Check if the points-to set for ID has already been stored.</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>.size() &gt; <span class="keywordtype">id</span> &amp;&amp; <span class="stringliteral">&quot;PPTC::getActualPts: points-to set not stored!&quot;</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> *<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>.at(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
423
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00392">PersistentPointsToCache.h:392</a></div></div>
424
+ </div><!-- fragment -->
425
+ </div>
426
+ </div>
427
+ <a id="ab84d0806e87c982bf81ae309f28751e3"></a>
428
+ <h2 class="memtitle"><span class="permalink"><a href="#ab84d0806e87c982bf81ae309f28751e3">&#9670;&nbsp;</a></span>getAllPts()</h2>
429
+
430
+ <div class="memitem">
431
+ <div class="memproto">
432
+ <div class="memtemplate">
433
+ template&lt;typename Data&gt; </div>
434
+ <table class="mlabels">
435
+ <tr>
436
+ <td class="mlabels-left">
437
+ <table class="memname">
438
+ <tr>
439
+ <td class="memname"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>&lt;Data, unsigned&gt; <a class="el" href="classSVF_1_1PersistentPointsToCache.html">SVF::PersistentPointsToCache</a>&lt; Data &gt;::getAllPts </td>
440
+ <td>(</td>
441
+ <td class="paramtype">void&#160;</td>
442
+ <td class="paramname"></td><td>)</td>
443
+ <td></td>
444
+ </tr>
445
+ </table>
446
+ </td>
447
+ <td class="mlabels-right">
448
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
449
+ </tr>
450
+ </table>
451
+ </div><div class="memdoc">
452
+ <p>Returns all points-to sets stored by this cache as keys to a map. Values are all 1. We use the map to be more compatible with getAllPts in the various PTDatas. Performance is a non-issue (for now) since this is just used for evaluation's sake. </p>
453
+
454
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00311">311</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
455
+ <div class="fragment"><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; Map&lt;Data, unsigned&gt; allPts;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Data *d : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>) allPts[*d] = 1;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00392">PersistentPointsToCache.h:392</a></div></div>
422
456
  </div><!-- fragment -->
423
457
  </div>
424
458
  </div>
@@ -450,19 +484,19 @@ template&lt;typename Data&gt; </div>
450
484
 
451
485
  <p>Initialises statistics variables to 0. </p>
452
486
 
453
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00359">359</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
454
- <div class="fragment"><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a> = 0;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a> = 0;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a> = 0;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a> = 0;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a> = 0;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a> = 0;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a> = 0;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a> = 0;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a> = 0;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a> = 0;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a> = 0;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a> = 0;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ace976f138cf1b8ab6bbf7a5c5d0b60b8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">SVF::PersistentPointsToCache::lookupUnions</a></div><div class="ttdeci">u64_t lookupUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00399">PersistentPointsToCache.h:399</a></div></div>
455
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7961dd7af7db2774e852beabcba1e5a8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">SVF::PersistentPointsToCache::propertyComplements</a></div><div class="ttdeci">u64_t propertyComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00402">PersistentPointsToCache.h:402</a></div></div>
456
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5c1afbaebce46eac6b1172aa5f2824ee"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">SVF::PersistentPointsToCache::uniqueComplements</a></div><div class="ttdeci">u64_t uniqueComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00401">PersistentPointsToCache.h:401</a></div></div>
457
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00396">PersistentPointsToCache.h:396</a></div></div>
458
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00398">PersistentPointsToCache.h:398</a></div></div>
459
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a15d3235017b35f4a5c668d0b6626faff"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">SVF::PersistentPointsToCache::lookupIntersections</a></div><div class="ttdeci">u64_t lookupIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00407">PersistentPointsToCache.h:407</a></div></div>
460
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a474023fe293b080fbda7da06ef380531"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">SVF::PersistentPointsToCache::uniqueIntersections</a></div><div class="ttdeci">u64_t uniqueIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00405">PersistentPointsToCache.h:405</a></div></div>
461
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00404">PersistentPointsToCache.h:404</a></div></div>
462
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6d52fb93d22b2ce3e4e4acbdd82b88b0"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">SVF::PersistentPointsToCache::totalComplements</a></div><div class="ttdeci">u64_t totalComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00400">PersistentPointsToCache.h:400</a></div></div>
463
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a47f4e8ef1461396afb2e1c3cbe055e95"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">SVF::PersistentPointsToCache::lookupComplements</a></div><div class="ttdeci">u64_t lookupComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00403">PersistentPointsToCache.h:403</a></div></div>
464
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00406">PersistentPointsToCache.h:406</a></div></div>
465
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_aacebdd87b1dd45250391d035b032f9d4"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">SVF::PersistentPointsToCache::uniqueUnions</a></div><div class="ttdeci">u64_t uniqueUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00397">PersistentPointsToCache.h:397</a></div></div>
487
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00369">369</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
488
+ <div class="fragment"><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a> = 0;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a> = 0;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a> = 0;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a> = 0;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a> = 0;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a> = 0;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a> = 0;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a> = 0;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a> = 0;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a> = 0;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a> = 0;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a> = 0;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ace976f138cf1b8ab6bbf7a5c5d0b60b8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">SVF::PersistentPointsToCache::lookupUnions</a></div><div class="ttdeci">u64_t lookupUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00410">PersistentPointsToCache.h:410</a></div></div>
489
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7961dd7af7db2774e852beabcba1e5a8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">SVF::PersistentPointsToCache::propertyComplements</a></div><div class="ttdeci">u64_t propertyComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00413">PersistentPointsToCache.h:413</a></div></div>
490
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5c1afbaebce46eac6b1172aa5f2824ee"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">SVF::PersistentPointsToCache::uniqueComplements</a></div><div class="ttdeci">u64_t uniqueComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00412">PersistentPointsToCache.h:412</a></div></div>
491
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00407">PersistentPointsToCache.h:407</a></div></div>
492
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00409">PersistentPointsToCache.h:409</a></div></div>
493
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a15d3235017b35f4a5c668d0b6626faff"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">SVF::PersistentPointsToCache::lookupIntersections</a></div><div class="ttdeci">u64_t lookupIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00418">PersistentPointsToCache.h:418</a></div></div>
494
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a474023fe293b080fbda7da06ef380531"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">SVF::PersistentPointsToCache::uniqueIntersections</a></div><div class="ttdeci">u64_t uniqueIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00416">PersistentPointsToCache.h:416</a></div></div>
495
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00415">PersistentPointsToCache.h:415</a></div></div>
496
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6d52fb93d22b2ce3e4e4acbdd82b88b0"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">SVF::PersistentPointsToCache::totalComplements</a></div><div class="ttdeci">u64_t totalComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00411">PersistentPointsToCache.h:411</a></div></div>
497
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a47f4e8ef1461396afb2e1c3cbe055e95"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">SVF::PersistentPointsToCache::lookupComplements</a></div><div class="ttdeci">u64_t lookupComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00414">PersistentPointsToCache.h:414</a></div></div>
498
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00417">PersistentPointsToCache.h:417</a></div></div>
499
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_aacebdd87b1dd45250391d035b032f9d4"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">SVF::PersistentPointsToCache::uniqueUnions</a></div><div class="ttdeci">u64_t uniqueUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00408">PersistentPointsToCache.h:408</a></div></div>
466
500
  </div><!-- fragment -->
467
501
  </div>
468
502
  </div>
@@ -504,20 +538,20 @@ template&lt;typename Data&gt; </div>
504
538
 
505
539
  <p>Intersects lhs and rhs (lhs AND rhs) and returns the intersection's ID. </p>
506
540
 
507
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00208">208</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
508
- <div class="fragment"><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">DataOp</a> intersectionOp = [](<span class="keyword">const</span> Data &amp;lhs, <span class="keyword">const</span> Data &amp;rhs) { <span class="keywordflow">return</span> lhs &amp; rhs; };</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// Order operands so we don&#39;t perform x U y and y U x separately.</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="comment">// EMPTY_SET &amp; x</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span> (operands.first == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="comment">// x &amp; x</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (operands.first == operands.second)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> operands.first;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">opPts</a>(lhs, rhs, intersectionOp, <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>, <span class="keyword">true</span>, opPerformed);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// When the result is empty, we won&#39;t be adding anything of substance.</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="comment">// We performed lhs AND rhs = result, so...</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="comment">// result AND rhs = result,</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span> (result != rhs)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, rhs)] = <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">// and result AND lhs = result,</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (result != lhs)</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, lhs)] = <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="comment">// Also (thanks reviewer #2)</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="comment">// result U lhs = result,</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>() &amp;&amp; result != lhs)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(lhs, result)] = lhs;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="comment">// And result U rhs = rhs.</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>() &amp;&amp; result != rhs)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(rhs, result)] = rhs;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; } <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac7865b3ea1d76d2c522b465cc8e86639"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">SVF::PersistentPointsToCache::opPts</a></div><div class="ttdeci">PointsToID opPts(PointsToID lhs, PointsToID rhs, const DataOp &amp;dataOp, OpCache &amp;opCache, bool commutative, bool &amp;opPerformed)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00321">PersistentPointsToCache.h:321</a></div></div>
509
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00396">PersistentPointsToCache.h:396</a></div></div>
510
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00398">PersistentPointsToCache.h:398</a></div></div>
541
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00207">207</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
542
+ <div class="fragment"><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">DataOp</a> intersectionOp = [](<span class="keyword">const</span> Data &amp;lhs, <span class="keyword">const</span> Data &amp;rhs) { <span class="keywordflow">return</span> lhs &amp; rhs; };</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// Order operands so we don&#39;t perform x U y and y U x separately.</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">// EMPTY_SET &amp; x</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">if</span> (operands.first == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">// x &amp; x</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span> (operands.first == operands.second)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> operands.first;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">opPts</a>(lhs, rhs, intersectionOp, <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>, <span class="keyword">true</span>, opPerformed);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// When the result is empty, we won&#39;t be adding anything of substance.</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// We performed lhs AND rhs = result, so...</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="comment">// result AND rhs = result,</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span> (result != rhs)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, rhs)] = <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">// and result AND lhs = result,</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">if</span> (result != lhs)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, lhs)] = <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="comment">// Also (thanks reviewer #2)</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="comment">// result U lhs = result,</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>() &amp;&amp; result != lhs)</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(lhs, result)] = lhs;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="comment">// And result U rhs = rhs.</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>() &amp;&amp; result != rhs)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(rhs, result)] = rhs;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; } <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac7865b3ea1d76d2c522b465cc8e86639"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">SVF::PersistentPointsToCache::opPts</a></div><div class="ttdeci">PointsToID opPts(PointsToID lhs, PointsToID rhs, const DataOp &amp;dataOp, OpCache &amp;opCache, bool commutative, bool &amp;opPerformed)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00331">PersistentPointsToCache.h:331</a></div></div>
543
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00407">PersistentPointsToCache.h:407</a></div></div>
544
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00409">PersistentPointsToCache.h:409</a></div></div>
511
545
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5a0f1b93f29ce62ad13042ab8435c62c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">SVF::PersistentPointsToCache::DataOp</a></div><div class="ttdeci">std::function&lt; Data(const Data &amp;, const Data &amp;)&gt; DataOp</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00033">PersistentPointsToCache.h:33</a></div></div>
512
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a15d3235017b35f4a5c668d0b6626faff"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">SVF::PersistentPointsToCache::lookupIntersections</a></div><div class="ttdeci">u64_t lookupIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00407">PersistentPointsToCache.h:407</a></div></div>
513
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a474023fe293b080fbda7da06ef380531"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">SVF::PersistentPointsToCache::uniqueIntersections</a></div><div class="ttdeci">u64_t uniqueIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00405">PersistentPointsToCache.h:405</a></div></div>
514
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6b601ce2055d83f2c1df0c7af039ce05"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">SVF::PersistentPointsToCache::unionCache</a></div><div class="ttdeci">OpCache unionCache</div><div class="ttdoc">Maps two IDs to their union. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00386">PersistentPointsToCache.h:386</a></div></div>
515
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00404">PersistentPointsToCache.h:404</a></div></div>
546
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a15d3235017b35f4a5c668d0b6626faff"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">SVF::PersistentPointsToCache::lookupIntersections</a></div><div class="ttdeci">u64_t lookupIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00418">PersistentPointsToCache.h:418</a></div></div>
547
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a474023fe293b080fbda7da06ef380531"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">SVF::PersistentPointsToCache::uniqueIntersections</a></div><div class="ttdeci">u64_t uniqueIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00416">PersistentPointsToCache.h:416</a></div></div>
548
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6b601ce2055d83f2c1df0c7af039ce05"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">SVF::PersistentPointsToCache::unionCache</a></div><div class="ttdeci">OpCache unionCache</div><div class="ttdoc">Maps two IDs to their union. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00397">PersistentPointsToCache.h:397</a></div></div>
549
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00415">PersistentPointsToCache.h:415</a></div></div>
516
550
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00037">PersistentPointsToCache.h:37</a></div></div>
517
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a525fbb49c91040c078fbcaaae2339ef2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">SVF::PersistentPointsToCache::intersectionCache</a></div><div class="ttdeci">OpCache intersectionCache</div><div class="ttdoc">Maps two IDs to their intersection. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00390">PersistentPointsToCache.h:390</a></div></div>
551
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a525fbb49c91040c078fbcaaae2339ef2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">SVF::PersistentPointsToCache::intersectionCache</a></div><div class="ttdeci">OpCache intersectionCache</div><div class="ttdoc">Maps two IDs to their intersection. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00401">PersistentPointsToCache.h:401</a></div></div>
518
552
  <div class="ttc" id="cuddInt_8c_html_a8b2e13c78efca330f06b6ddcd7464b41"><div class="ttname"><a href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a></div><div class="ttdeci">static int result</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l07466">cuddInt.c:7466</a></div></div>
519
553
  <div class="ttc" id="namespaceSVF_html_ae545a88267bd2246de827cf590675aca"><div class="ttname"><a href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">SVF::PointsToID</a></div><div class="ttdeci">unsigned PointsToID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00090">SVFBasicTypes.h:90</a></div></div>
520
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00406">PersistentPointsToCache.h:406</a></div></div>
554
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00417">PersistentPointsToCache.h:417</a></div></div>
521
555
  </div><!-- fragment -->
522
556
  </div>
523
557
  </div>
@@ -547,9 +581,9 @@ template&lt;typename Data&gt; </div>
547
581
  </table>
548
582
  </div><div class="memdoc">
549
583
 
550
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00311">311</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
551
- <div class="fragment"><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// Make sure we don&#39;t overflow.</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a> != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>() &amp;&amp; <span class="stringliteral">&quot;PPTC::newPointsToId: PointsToIDs exhausted! Try a larger type.&quot;</span>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a>++;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
552
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad8d24772f7503e0e735f546506d2bcc5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">SVF::PersistentPointsToCache::idCounter</a></div><div class="ttdeci">PointsToID idCounter</div><div class="ttdoc">Used to generate new PointsToIDs. Any non-zero is valid. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00393">PersistentPointsToCache.h:393</a></div></div>
584
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00321">321</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
585
+ <div class="fragment"><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="comment">// Make sure we don&#39;t overflow.</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a> != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>() &amp;&amp; <span class="stringliteral">&quot;PPTC::newPointsToId: PointsToIDs exhausted! Try a larger type.&quot;</span>);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a>++;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
586
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad8d24772f7503e0e735f546506d2bcc5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">SVF::PersistentPointsToCache::idCounter</a></div><div class="ttdeci">PointsToID idCounter</div><div class="ttdoc">Used to generate new PointsToIDs. Any non-zero is valid. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00404">PersistentPointsToCache.h:404</a></div></div>
553
587
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00037">PersistentPointsToCache.h:37</a></div></div>
554
588
  </div><!-- fragment -->
555
589
  </div>
@@ -615,13 +649,13 @@ template&lt;typename Data&gt; </div>
615
649
  </div><div class="memdoc">
616
650
  <p>Performs dataOp on lhs and rhs, checking the opCache first and updating it afterwards. commutative indicates whether the operation in question is commutative or not. opPerformed is set to true if the operation was <em>not</em> cached and thus performed, false otherwise. </p>
617
651
 
618
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00321">321</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
619
- <div class="fragment"><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="comment">// If we&#39;re commutative, we want to always perform the same operation: x op y.</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="comment">// Performing x op y sometimes and y op x other times is a waste of time.</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span> (commutative) operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">else</span> operands = std::make_pair(lhs, rhs);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="comment">// Check if we have performed this operation</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; OpCache::const_iterator foundResult = opCache.find(operands);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span> (foundResult != opCache.end()) <span class="keywordflow">return</span> foundResult-&gt;second;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; opPerformed = <span class="keyword">true</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keyword">const</span> Data &amp;lhsPts = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(lhs);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keyword">const</span> Data &amp;rhsPts = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(rhs);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; Data <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = dataOp(lhsPts, rhsPts);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> resultId;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="comment">// Intern points-to set: check if result already exists.</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">typename</span> PTSToIDMap::const_iterator foundId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.find(result);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> (foundId != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.end()) resultId = foundId-&gt;second;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; resultId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">newPointsToId</a>();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">idToPts</a>.push_back(<span class="keyword">new</span> Data(result));</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[<a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>] = resultId;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="comment">// Cache the result, for hash-consing.</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; opCache[operands] = resultId;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">return</span> resultId;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab2888b033a29de3af48d377dc2fe70aa"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">SVF::PersistentPointsToCache::getActualPts</a></div><div class="ttdeci">const Data &amp; getActualPts(PointsToID id) const</div><div class="ttdoc">Returns the points-to set which id represents. id must be stored in the cache. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00086">PersistentPointsToCache.h:86</a></div></div>
620
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00383">PersistentPointsToCache.h:383</a></div></div>
621
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac15f8dc2bd850d275c692c3001751c9e"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; const Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00381">PersistentPointsToCache.h:381</a></div></div>
652
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00331">331</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
653
+ <div class="fragment"><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="comment">// If we&#39;re commutative, we want to always perform the same operation: x op y.</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="comment">// Performing x op y sometimes and y op x other times is a waste of time.</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">if</span> (commutative) operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">else</span> operands = std::make_pair(lhs, rhs);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="comment">// Check if we have performed this operation</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; OpCache::const_iterator foundResult = opCache.find(operands);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (foundResult != opCache.end()) <span class="keywordflow">return</span> foundResult-&gt;second;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; opPerformed = <span class="keyword">true</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">const</span> Data &amp;lhsPts = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(lhs);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">const</span> Data &amp;rhsPts = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(rhs);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; Data <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = dataOp(lhsPts, rhsPts);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> resultId;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="comment">// Intern points-to set: check if result already exists.</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">typename</span> PTSToIDMap::const_iterator foundId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.find(result);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span> (foundId != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.end()) resultId = foundId-&gt;second;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; resultId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">newPointsToId</a>();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>.push_back(<span class="keyword">new</span> Data(result));</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[<a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>] = resultId;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="comment">// Cache the result, for hash-consing.</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; opCache[operands] = resultId;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> resultId;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab2888b033a29de3af48d377dc2fe70aa"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">SVF::PersistentPointsToCache::getActualPts</a></div><div class="ttdeci">const Data &amp; getActualPts(PointsToID id) const</div><div class="ttdoc">Returns the points-to set which id represents. id must be stored in the cache. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00085">PersistentPointsToCache.h:85</a></div></div>
654
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00394">PersistentPointsToCache.h:394</a></div></div>
655
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00392">PersistentPointsToCache.h:392</a></div></div>
622
656
  <div class="ttc" id="cuddInt_8c_html_a8b2e13c78efca330f06b6ddcd7464b41"><div class="ttname"><a href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a></div><div class="ttdeci">static int result</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l07466">cuddInt.c:7466</a></div></div>
623
657
  <div class="ttc" id="namespaceSVF_html_ae545a88267bd2246de827cf590675aca"><div class="ttname"><a href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">SVF::PointsToID</a></div><div class="ttdeci">unsigned PointsToID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00090">SVFBasicTypes.h:90</a></div></div>
624
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a52ec4a787a199bb4d7553e8bafa9c127"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">SVF::PersistentPointsToCache::newPointsToId</a></div><div class="ttdeci">PointsToID newPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00311">PersistentPointsToCache.h:311</a></div></div>
658
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a52ec4a787a199bb4d7553e8bafa9c127"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">SVF::PersistentPointsToCache::newPointsToId</a></div><div class="ttdeci">PointsToID newPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00321">PersistentPointsToCache.h:321</a></div></div>
625
659
  </div><!-- fragment -->
626
660
  </div>
627
661
  </div>
@@ -653,20 +687,20 @@ template&lt;typename Data&gt; </div>
653
687
 
654
688
  <p>Print statistics on operations and points-to set numbers. </p>
655
689
 
656
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00281">281</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
657
- <div class="fragment"><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> fieldWidth = 25;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; std::cout.flags(std::ios::left);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;****Persistent Points-To Cache Statistics: &quot;</span> &lt;&lt; subtitle &lt;&lt; <span class="stringliteral">&quot;****\n&quot;</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniquePointsToSets&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">idToPts</a>.size() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;TotalUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PropertyUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniqueUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;LookupUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;TotalComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PropertyComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniqueComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;LookupComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;TotalIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PropertyIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniqueIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;LookupIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; std::cout.flush();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ace976f138cf1b8ab6bbf7a5c5d0b60b8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">SVF::PersistentPointsToCache::lookupUnions</a></div><div class="ttdeci">u64_t lookupUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00399">PersistentPointsToCache.h:399</a></div></div>
658
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7961dd7af7db2774e852beabcba1e5a8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">SVF::PersistentPointsToCache::propertyComplements</a></div><div class="ttdeci">u64_t propertyComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00402">PersistentPointsToCache.h:402</a></div></div>
659
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5c1afbaebce46eac6b1172aa5f2824ee"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">SVF::PersistentPointsToCache::uniqueComplements</a></div><div class="ttdeci">u64_t uniqueComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00401">PersistentPointsToCache.h:401</a></div></div>
660
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00396">PersistentPointsToCache.h:396</a></div></div>
661
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00398">PersistentPointsToCache.h:398</a></div></div>
662
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a15d3235017b35f4a5c668d0b6626faff"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">SVF::PersistentPointsToCache::lookupIntersections</a></div><div class="ttdeci">u64_t lookupIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00407">PersistentPointsToCache.h:407</a></div></div>
663
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a474023fe293b080fbda7da06ef380531"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">SVF::PersistentPointsToCache::uniqueIntersections</a></div><div class="ttdeci">u64_t uniqueIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00405">PersistentPointsToCache.h:405</a></div></div>
664
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00404">PersistentPointsToCache.h:404</a></div></div>
665
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6d52fb93d22b2ce3e4e4acbdd82b88b0"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">SVF::PersistentPointsToCache::totalComplements</a></div><div class="ttdeci">u64_t totalComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00400">PersistentPointsToCache.h:400</a></div></div>
666
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac15f8dc2bd850d275c692c3001751c9e"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; const Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00381">PersistentPointsToCache.h:381</a></div></div>
667
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a47f4e8ef1461396afb2e1c3cbe055e95"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">SVF::PersistentPointsToCache::lookupComplements</a></div><div class="ttdeci">u64_t lookupComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00403">PersistentPointsToCache.h:403</a></div></div>
668
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00406">PersistentPointsToCache.h:406</a></div></div>
669
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_aacebdd87b1dd45250391d035b032f9d4"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">SVF::PersistentPointsToCache::uniqueUnions</a></div><div class="ttdeci">u64_t uniqueUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00397">PersistentPointsToCache.h:397</a></div></div>
690
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00280">280</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
691
+ <div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> fieldWidth = 25;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; std::cout.flags(std::ios::left);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;****Persistent Points-To Cache Statistics: &quot;</span> &lt;&lt; subtitle &lt;&lt; <span class="stringliteral">&quot;****\n&quot;</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniquePointsToSets&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>.size() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;TotalUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PropertyUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniqueUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;LookupUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;TotalComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PropertyComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniqueComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;LookupComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;TotalIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PropertyIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniqueIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;LookupIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; std::cout.flush();</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ace976f138cf1b8ab6bbf7a5c5d0b60b8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">SVF::PersistentPointsToCache::lookupUnions</a></div><div class="ttdeci">u64_t lookupUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00410">PersistentPointsToCache.h:410</a></div></div>
692
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7961dd7af7db2774e852beabcba1e5a8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">SVF::PersistentPointsToCache::propertyComplements</a></div><div class="ttdeci">u64_t propertyComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00413">PersistentPointsToCache.h:413</a></div></div>
693
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5c1afbaebce46eac6b1172aa5f2824ee"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">SVF::PersistentPointsToCache::uniqueComplements</a></div><div class="ttdeci">u64_t uniqueComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00412">PersistentPointsToCache.h:412</a></div></div>
694
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00407">PersistentPointsToCache.h:407</a></div></div>
695
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00409">PersistentPointsToCache.h:409</a></div></div>
696
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a15d3235017b35f4a5c668d0b6626faff"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">SVF::PersistentPointsToCache::lookupIntersections</a></div><div class="ttdeci">u64_t lookupIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00418">PersistentPointsToCache.h:418</a></div></div>
697
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a474023fe293b080fbda7da06ef380531"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">SVF::PersistentPointsToCache::uniqueIntersections</a></div><div class="ttdeci">u64_t uniqueIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00416">PersistentPointsToCache.h:416</a></div></div>
698
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00415">PersistentPointsToCache.h:415</a></div></div>
699
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00392">PersistentPointsToCache.h:392</a></div></div>
700
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6d52fb93d22b2ce3e4e4acbdd82b88b0"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">SVF::PersistentPointsToCache::totalComplements</a></div><div class="ttdeci">u64_t totalComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00411">PersistentPointsToCache.h:411</a></div></div>
701
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a47f4e8ef1461396afb2e1c3cbe055e95"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">SVF::PersistentPointsToCache::lookupComplements</a></div><div class="ttdeci">u64_t lookupComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00414">PersistentPointsToCache.h:414</a></div></div>
702
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00417">PersistentPointsToCache.h:417</a></div></div>
703
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_aacebdd87b1dd45250391d035b032f9d4"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">SVF::PersistentPointsToCache::uniqueUnions</a></div><div class="ttdeci">u64_t uniqueUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00408">PersistentPointsToCache.h:408</a></div></div>
670
704
  </div><!-- fragment -->
671
705
  </div>
672
706
  </div>
@@ -699,15 +733,14 @@ template&lt;typename Data&gt; </div>
699
733
  <p>Resets the cache removing everything except the emptyData it was initialised with. </p>
700
734
 
701
735
  <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00049">49</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
702
- <div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> Data *emptyData = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">idToPts</a>[<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>()];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Data *d : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">idToPts</a>) <a class="code" href="util_8h.html#a3110dcad20c2a6616d360901b94e06a1">free</a>(d);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; idToPts.clear();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.clear();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">// Put the empty data back in.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[*emptyData] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; idToPts.push_back(emptyData);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>.clear();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">complementCache</a>.clear();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>.clear();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a> = 1;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="comment">// Cache is empty...</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">initStats</a>();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_adef498f8a0d4c75023382e6312a85a58"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">SVF::PersistentPointsToCache::complementCache</a></div><div class="ttdeci">OpCache complementCache</div><div class="ttdoc">Maps two IDs to their relative complement. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00388">PersistentPointsToCache.h:388</a></div></div>
703
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00383">PersistentPointsToCache.h:383</a></div></div>
704
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6b601ce2055d83f2c1df0c7af039ce05"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">SVF::PersistentPointsToCache::unionCache</a></div><div class="ttdeci">OpCache unionCache</div><div class="ttdoc">Maps two IDs to their union. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00386">PersistentPointsToCache.h:386</a></div></div>
705
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad8d24772f7503e0e735f546506d2bcc5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">SVF::PersistentPointsToCache::idCounter</a></div><div class="ttdeci">PointsToID idCounter</div><div class="ttdoc">Used to generate new PointsToIDs. Any non-zero is valid. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00393">PersistentPointsToCache.h:393</a></div></div>
736
+ <div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Data *d : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>) <span class="keyword">delete</span> d;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; idToPts.clear();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.clear();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// Put the empty data back in.</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[Data()] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; idToPts.push_back(<span class="keyword">new</span> Data());</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>.clear();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">complementCache</a>.clear();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>.clear();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a> = 1;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// Cache is empty...</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">initStats</a>();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_adef498f8a0d4c75023382e6312a85a58"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">SVF::PersistentPointsToCache::complementCache</a></div><div class="ttdeci">OpCache complementCache</div><div class="ttdoc">Maps two IDs to their relative complement. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00399">PersistentPointsToCache.h:399</a></div></div>
737
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00394">PersistentPointsToCache.h:394</a></div></div>
738
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6b601ce2055d83f2c1df0c7af039ce05"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">SVF::PersistentPointsToCache::unionCache</a></div><div class="ttdeci">OpCache unionCache</div><div class="ttdoc">Maps two IDs to their union. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00397">PersistentPointsToCache.h:397</a></div></div>
739
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad8d24772f7503e0e735f546506d2bcc5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">SVF::PersistentPointsToCache::idCounter</a></div><div class="ttdeci">PointsToID idCounter</div><div class="ttdoc">Used to generate new PointsToIDs. Any non-zero is valid. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00404">PersistentPointsToCache.h:404</a></div></div>
706
740
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00037">PersistentPointsToCache.h:37</a></div></div>
707
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab19e4e17b1896565e0bada1f161d1266"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">SVF::PersistentPointsToCache::initStats</a></div><div class="ttdeci">void initStats(void)</div><div class="ttdoc">Initialises statistics variables to 0. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00359">PersistentPointsToCache.h:359</a></div></div>
708
- <div class="ttc" id="util_8h_html_a3110dcad20c2a6616d360901b94e06a1"><div class="ttname"><a href="util_8h.html#a3110dcad20c2a6616d360901b94e06a1">free</a></div><div class="ttdeci">VOID_OR_INT free(void *)</div></div>
709
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a525fbb49c91040c078fbcaaae2339ef2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">SVF::PersistentPointsToCache::intersectionCache</a></div><div class="ttdeci">OpCache intersectionCache</div><div class="ttdoc">Maps two IDs to their intersection. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00390">PersistentPointsToCache.h:390</a></div></div>
710
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac15f8dc2bd850d275c692c3001751c9e"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac15f8dc2bd850d275c692c3001751c9e">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; const Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00381">PersistentPointsToCache.h:381</a></div></div>
741
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab19e4e17b1896565e0bada1f161d1266"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">SVF::PersistentPointsToCache::initStats</a></div><div class="ttdeci">void initStats(void)</div><div class="ttdoc">Initialises statistics variables to 0. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00369">PersistentPointsToCache.h:369</a></div></div>
742
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00392">PersistentPointsToCache.h:392</a></div></div>
743
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a525fbb49c91040c078fbcaaae2339ef2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">SVF::PersistentPointsToCache::intersectionCache</a></div><div class="ttdeci">OpCache intersectionCache</div><div class="ttdoc">Maps two IDs to their intersection. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00401">PersistentPointsToCache.h:401</a></div></div>
711
744
  </div><!-- fragment -->
712
745
  </div>
713
746
  </div>
@@ -749,17 +782,17 @@ template&lt;typename Data&gt; </div>
749
782
 
750
783
  <p>Unions lhs and rhs and returns their union's ID. </p>
751
784
 
752
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00094">94</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
753
- <div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">DataOp</a> unionOp = [](<span class="keyword">const</span> Data &amp;lhs, <span class="keyword">const</span> Data &amp;rhs) { <span class="keywordflow">return</span> lhs | rhs; };</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">// Order operands so we don&#39;t perform x U y and y U x separately.</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="comment">// EMPTY_SET U x</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span> (operands.first == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> operands.second;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">// x U x</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">if</span> (operands.first == operands.second)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> operands.first;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">opPts</a>(lhs, rhs, unionOp, <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>, <span class="keyword">true</span>, opPerformed);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// We can use lhs/rhs here rather than our ordered operands,</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="comment">// because the operation was commutative.</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// if x U y = z, then x U z = z,</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (lhs != result)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(lhs, result)] = <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// and y U z = z.</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (rhs != result)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(rhs, result)] = <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; } <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ace976f138cf1b8ab6bbf7a5c5d0b60b8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">SVF::PersistentPointsToCache::lookupUnions</a></div><div class="ttdeci">u64_t lookupUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00399">PersistentPointsToCache.h:399</a></div></div>
754
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac7865b3ea1d76d2c522b465cc8e86639"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">SVF::PersistentPointsToCache::opPts</a></div><div class="ttdeci">PointsToID opPts(PointsToID lhs, PointsToID rhs, const DataOp &amp;dataOp, OpCache &amp;opCache, bool commutative, bool &amp;opPerformed)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00321">PersistentPointsToCache.h:321</a></div></div>
755
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00396">PersistentPointsToCache.h:396</a></div></div>
756
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00398">PersistentPointsToCache.h:398</a></div></div>
785
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00093">93</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
786
+ <div class="fragment"><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">DataOp</a> unionOp = [](<span class="keyword">const</span> Data &amp;lhs, <span class="keyword">const</span> Data &amp;rhs) { <span class="keywordflow">return</span> lhs | rhs; };</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// Order operands so we don&#39;t perform x U y and y U x separately.</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// EMPTY_SET U x</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (operands.first == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> operands.second;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="comment">// x U x</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span> (operands.first == operands.second)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> operands.first;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">opPts</a>(lhs, rhs, unionOp, <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>, <span class="keyword">true</span>, opPerformed);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="comment">// We can use lhs/rhs here rather than our ordered operands,</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// because the operation was commutative.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="comment">// if x U y = z, then x U z = z,</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (lhs != result)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(lhs, result)] = <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// and y U z = z.</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">if</span> (rhs != result)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(rhs, result)] = <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; } <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ace976f138cf1b8ab6bbf7a5c5d0b60b8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">SVF::PersistentPointsToCache::lookupUnions</a></div><div class="ttdeci">u64_t lookupUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00410">PersistentPointsToCache.h:410</a></div></div>
787
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac7865b3ea1d76d2c522b465cc8e86639"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">SVF::PersistentPointsToCache::opPts</a></div><div class="ttdeci">PointsToID opPts(PointsToID lhs, PointsToID rhs, const DataOp &amp;dataOp, OpCache &amp;opCache, bool commutative, bool &amp;opPerformed)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00331">PersistentPointsToCache.h:331</a></div></div>
788
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00407">PersistentPointsToCache.h:407</a></div></div>
789
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00409">PersistentPointsToCache.h:409</a></div></div>
757
790
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5a0f1b93f29ce62ad13042ab8435c62c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">SVF::PersistentPointsToCache::DataOp</a></div><div class="ttdeci">std::function&lt; Data(const Data &amp;, const Data &amp;)&gt; DataOp</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00033">PersistentPointsToCache.h:33</a></div></div>
758
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6b601ce2055d83f2c1df0c7af039ce05"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">SVF::PersistentPointsToCache::unionCache</a></div><div class="ttdeci">OpCache unionCache</div><div class="ttdoc">Maps two IDs to their union. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00386">PersistentPointsToCache.h:386</a></div></div>
791
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6b601ce2055d83f2c1df0c7af039ce05"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">SVF::PersistentPointsToCache::unionCache</a></div><div class="ttdeci">OpCache unionCache</div><div class="ttdoc">Maps two IDs to their union. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00397">PersistentPointsToCache.h:397</a></div></div>
759
792
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00037">PersistentPointsToCache.h:37</a></div></div>
760
793
  <div class="ttc" id="cuddInt_8c_html_a8b2e13c78efca330f06b6ddcd7464b41"><div class="ttname"><a href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a></div><div class="ttdeci">static int result</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l07466">cuddInt.c:7466</a></div></div>
761
794
  <div class="ttc" id="namespaceSVF_html_ae545a88267bd2246de827cf590675aca"><div class="ttname"><a href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">SVF::PointsToID</a></div><div class="ttdeci">unsigned PointsToID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00090">SVFBasicTypes.h:90</a></div></div>
762
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_aacebdd87b1dd45250391d035b032f9d4"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">SVF::PersistentPointsToCache::uniqueUnions</a></div><div class="ttdeci">u64_t uniqueUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00397">PersistentPointsToCache.h:397</a></div></div>
795
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_aacebdd87b1dd45250391d035b032f9d4"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">SVF::PersistentPointsToCache::uniqueUnions</a></div><div class="ttdeci">u64_t uniqueUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00408">PersistentPointsToCache.h:408</a></div></div>
763
796
  </div><!-- fragment -->
764
797
  </div>
765
798
  </div>
@@ -788,7 +821,7 @@ template&lt;typename Data&gt; </div>
788
821
 
789
822
  <p>Maps two IDs to their relative complement. </p>
790
823
 
791
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00388">388</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
824
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00399">399</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
792
825
 
793
826
  </div>
794
827
  </div>
@@ -816,12 +849,12 @@ template&lt;typename Data&gt; </div>
816
849
 
817
850
  <p>Used to generate new PointsToIDs. Any non-zero is valid. </p>
818
851
 
819
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00393">393</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
852
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00404">404</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
820
853
 
821
854
  </div>
822
855
  </div>
823
- <a id="ac15f8dc2bd850d275c692c3001751c9e"></a>
824
- <h2 class="memtitle"><span class="permalink"><a href="#ac15f8dc2bd850d275c692c3001751c9e">&#9670;&nbsp;</a></span>idToPts</h2>
856
+ <a id="a390c08099f16afb4b80b6e094d1adf25"></a>
857
+ <h2 class="memtitle"><span class="permalink"><a href="#a390c08099f16afb4b80b6e094d1adf25">&#9670;&nbsp;</a></span>idToPts</h2>
825
858
 
826
859
  <div class="memitem">
827
860
  <div class="memproto">
@@ -832,7 +865,7 @@ template&lt;typename Data&gt; </div>
832
865
  <td class="mlabels-left">
833
866
  <table class="memname">
834
867
  <tr>
835
- <td class="memname">std::vector&lt;const Data *&gt; <a class="el" href="classSVF_1_1PersistentPointsToCache.html">SVF::PersistentPointsToCache</a>&lt; Data &gt;::idToPts</td>
868
+ <td class="memname">std::vector&lt;Data *&gt; <a class="el" href="classSVF_1_1PersistentPointsToCache.html">SVF::PersistentPointsToCache</a>&lt; Data &gt;::idToPts</td>
836
869
  </tr>
837
870
  </table>
838
871
  </td>
@@ -841,9 +874,9 @@ template&lt;typename Data&gt; </div>
841
874
  </tr>
842
875
  </table>
843
876
  </div><div class="memdoc">
844
- <p>Maps points-to IDs (indices) to their corresponding points-to set. Reverse of idToPts. Elements are only added through push_back, so the number of elements stored is the size of the vector. </p>
877
+ <p>Maps points-to IDs (indices) to their corresponding points-to set. Reverse of idToPts. Elements are only added through push_back, so the number of elements stored is the size of the vector. Not const so we can remap. </p>
845
878
 
846
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00381">381</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
879
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00392">392</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
847
880
 
848
881
  </div>
849
882
  </div>
@@ -871,7 +904,7 @@ template&lt;typename Data&gt; </div>
871
904
 
872
905
  <p>Maps two IDs to their intersection. Keys must be sorted. </p>
873
906
 
874
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00390">390</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
907
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00401">401</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
875
908
 
876
909
  </div>
877
910
  </div>
@@ -897,7 +930,7 @@ template&lt;typename Data&gt; </div>
897
930
  </table>
898
931
  </div><div class="memdoc">
899
932
 
900
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00403">403</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
933
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00414">414</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
901
934
 
902
935
  </div>
903
936
  </div>
@@ -923,7 +956,7 @@ template&lt;typename Data&gt; </div>
923
956
  </table>
924
957
  </div><div class="memdoc">
925
958
 
926
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00407">407</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
959
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00418">418</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
927
960
 
928
961
  </div>
929
962
  </div>
@@ -949,7 +982,7 @@ template&lt;typename Data&gt; </div>
949
982
  </table>
950
983
  </div><div class="memdoc">
951
984
 
952
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00399">399</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
985
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00410">410</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
953
986
 
954
987
  </div>
955
988
  </div>
@@ -975,7 +1008,7 @@ template&lt;typename Data&gt; </div>
975
1008
  </table>
976
1009
  </div><div class="memdoc">
977
1010
 
978
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00402">402</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1011
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00413">413</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
979
1012
 
980
1013
  </div>
981
1014
  </div>
@@ -1001,7 +1034,7 @@ template&lt;typename Data&gt; </div>
1001
1034
  </table>
1002
1035
  </div><div class="memdoc">
1003
1036
 
1004
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00406">406</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1037
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00417">417</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1005
1038
 
1006
1039
  </div>
1007
1040
  </div>
@@ -1027,7 +1060,7 @@ template&lt;typename Data&gt; </div>
1027
1060
  </table>
1028
1061
  </div><div class="memdoc">
1029
1062
 
1030
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00398">398</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1063
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00409">409</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1031
1064
 
1032
1065
  </div>
1033
1066
  </div>
@@ -1055,7 +1088,7 @@ template&lt;typename Data&gt; </div>
1055
1088
 
1056
1089
  <p>Maps points-to sets to their corresponding ID. </p>
1057
1090
 
1058
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00383">383</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1091
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00394">394</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1059
1092
 
1060
1093
  </div>
1061
1094
  </div>
@@ -1081,7 +1114,7 @@ template&lt;typename Data&gt; </div>
1081
1114
  </table>
1082
1115
  </div><div class="memdoc">
1083
1116
 
1084
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00400">400</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1117
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00411">411</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1085
1118
 
1086
1119
  </div>
1087
1120
  </div>
@@ -1107,7 +1140,7 @@ template&lt;typename Data&gt; </div>
1107
1140
  </table>
1108
1141
  </div><div class="memdoc">
1109
1142
 
1110
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00404">404</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1143
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00415">415</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1111
1144
 
1112
1145
  </div>
1113
1146
  </div>
@@ -1133,7 +1166,7 @@ template&lt;typename Data&gt; </div>
1133
1166
  </table>
1134
1167
  </div><div class="memdoc">
1135
1168
 
1136
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00396">396</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1169
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00407">407</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1137
1170
 
1138
1171
  </div>
1139
1172
  </div>
@@ -1161,7 +1194,7 @@ template&lt;typename Data&gt; </div>
1161
1194
 
1162
1195
  <p>Maps two IDs to their union. Keys must be sorted. </p>
1163
1196
 
1164
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00386">386</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1197
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00397">397</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1165
1198
 
1166
1199
  </div>
1167
1200
  </div>
@@ -1187,7 +1220,7 @@ template&lt;typename Data&gt; </div>
1187
1220
  </table>
1188
1221
  </div><div class="memdoc">
1189
1222
 
1190
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00401">401</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1223
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00412">412</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1191
1224
 
1192
1225
  </div>
1193
1226
  </div>
@@ -1213,7 +1246,7 @@ template&lt;typename Data&gt; </div>
1213
1246
  </table>
1214
1247
  </div><div class="memdoc">
1215
1248
 
1216
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00405">405</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1249
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00416">416</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1217
1250
 
1218
1251
  </div>
1219
1252
  </div>
@@ -1239,7 +1272,7 @@ template&lt;typename Data&gt; </div>
1239
1272
  </table>
1240
1273
  </div><div class="memdoc">
1241
1274
 
1242
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00397">397</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1275
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00408">408</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1243
1276
 
1244
1277
  </div>
1245
1278
  </div>