svf-tools 1.0.310 → 1.0.311

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 (316) hide show
  1. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +6 -6
  5. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
  7. package/SVF-doxygen/html/html/Andersen_8h_source.html +8 -8
  8. package/SVF-doxygen/html/html/CHG_8cpp.html +1 -1
  9. package/SVF-doxygen/html/html/CHG_8cpp_source.html +9 -9
  10. package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
  11. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +5 -5
  12. package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  14. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +10 -10
  15. package/SVF-doxygen/html/html/ConsG_8h_source.html +5 -5
  16. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +5 -5
  17. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +4 -4
  18. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +11 -11
  19. package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
  20. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +2 -2
  21. package/SVF-doxygen/html/html/DDAClient_8h_source.html +2 -2
  22. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +5 -5
  23. package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
  25. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
  26. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/ExternalPAG_8cpp.html +1 -1
  28. package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +8 -8
  29. package/SVF-doxygen/html/html/ExternalPAG_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +8 -8
  31. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  32. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  33. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  35. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +6 -6
  36. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +9 -9
  37. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +4 -4
  39. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +82 -81
  40. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
  41. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +4 -4
  42. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  43. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
  44. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
  45. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +6 -6
  46. package/SVF-doxygen/html/html/ICFG_8h_source.html +6 -6
  47. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +4 -4
  48. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
  50. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  51. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +4 -4
  52. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  53. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +6 -6
  55. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  56. package/SVF-doxygen/html/html/MHP_8cpp_source.html +13 -13
  57. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
  58. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
  59. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  60. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
  61. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
  62. package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
  63. package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
  64. package/SVF-doxygen/html/html/MemModel_8cpp_source.html +1 -1
  65. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +11 -11
  66. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
  67. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  68. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  69. package/SVF-doxygen/html/html/Options_8cpp_source.html +1 -1
  70. package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +15 -15
  71. package/SVF-doxygen/html/html/PAGBuilder_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/PAGEdge_8h_source.html +2 -2
  73. package/SVF-doxygen/html/html/PAGNode_8h_source.html +6 -6
  74. package/SVF-doxygen/html/html/PAG_8cpp_source.html +27 -27
  75. package/SVF-doxygen/html/html/PAG_8h_source.html +17 -17
  76. package/SVF-doxygen/html/html/PCG_8cpp_source.html +8 -8
  77. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +8 -8
  79. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
  80. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +8 -8
  81. package/SVF-doxygen/html/html/PTAType_8h_source.html +4 -4
  82. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  83. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +1 -1
  84. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +34 -33
  85. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +7 -7
  86. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +11 -11
  87. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +66 -66
  88. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +8 -8
  89. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +2 -2
  90. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
  91. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
  92. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  93. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +10 -10
  94. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +8 -8
  95. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +5 -5
  96. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +9 -9
  97. package/SVF-doxygen/html/html/SVFG_8h_source.html +7 -7
  98. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  99. package/SVF-doxygen/html/html/SVFModule_8h.html +3 -0
  100. package/SVF-doxygen/html/html/SVFModule_8h_source.html +53 -46
  101. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  102. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +7 -7
  103. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +4 -4
  104. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  105. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  106. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  107. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +11 -11
  108. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +16 -16
  109. package/SVF-doxygen/html/html/TCT_8cpp_source.html +11 -11
  110. package/SVF-doxygen/html/html/TCT_8h_source.html +10 -10
  111. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
  112. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
  113. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
  114. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +4 -4
  115. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
  116. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  117. package/SVF-doxygen/html/html/VFG_8cpp_source.html +6 -6
  118. package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
  119. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  120. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +10 -10
  121. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
  122. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  123. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  125. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  126. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
  128. package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
  129. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  131. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +29 -29
  132. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
  133. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +2 -2
  134. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +4 -4
  135. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +15 -15
  137. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +2 -2
  139. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +69 -68
  141. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +25 -25
  144. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  146. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjPN.html +1 -1
  148. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjPN.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjPN.html +1 -1
  150. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +115 -115
  153. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +15 -15
  154. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +18 -18
  155. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +9 -9
  156. package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +20 -20
  159. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  160. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
  161. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +4 -4
  162. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1DummyObjPN.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1DummyValPN.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +8 -8
  166. package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +6 -6
  168. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +38 -38
  169. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +20 -20
  170. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +30 -30
  171. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +5 -5
  172. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  173. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  176. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +47 -47
  179. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +58 -57
  180. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +1 -1
  185. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +13 -13
  186. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
  187. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  188. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
  189. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
  190. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +3 -3
  191. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  192. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +1 -1
  194. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  196. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +17 -17
  197. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
  198. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  200. package/SVF-doxygen/html/html/classSVF_1_1LocObjTypeInfo.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1LocSymTableInfo.html +2 -2
  202. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +8 -8
  203. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  204. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +15 -15
  205. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +17 -17
  206. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  207. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  208. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +4 -4
  209. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +3 -3
  210. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +4 -4
  211. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +21 -21
  212. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
  213. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +3 -3
  214. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +3 -3
  215. package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +2 -2
  216. package/SVF-doxygen/html/html/classSVF_1_1PAG.html +33 -33
  217. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +21 -21
  218. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  219. package/SVF-doxygen/html/html/classSVF_1_1PAGEdge.html +5 -5
  220. package/SVF-doxygen/html/html/classSVF_1_1PAGNode.html +10 -10
  221. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +15 -15
  222. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  223. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +16 -16
  224. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +4 -4
  225. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
  226. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +6 -6
  227. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +5 -5
  228. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +10 -10
  229. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +39 -38
  230. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +153 -116
  231. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +11 -11
  232. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +3 -3
  233. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  234. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  236. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +2 -2
  237. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +8 -8
  238. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  239. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +35 -35
  240. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +7 -7
  241. package/SVF-doxygen/html/html/classSVF_1_1SVFModule-members.html +1 -0
  242. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +110 -77
  243. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +3 -3
  244. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +15 -15
  245. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +3 -3
  246. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +7 -7
  247. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +2 -2
  248. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
  249. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +66 -65
  251. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +28 -28
  252. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  253. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  254. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  255. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +4 -4
  256. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +4 -4
  257. package/SVF-doxygen/html/html/classSVF_1_1TypeSystem.html +1 -1
  258. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  260. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +14 -14
  261. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +2 -2
  263. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
  264. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +31 -31
  265. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +8 -8
  266. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +3 -3
  267. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +5 -5
  268. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  269. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  270. package/SVF-doxygen/html/html/functions_0x7e.html +3 -0
  271. package/SVF-doxygen/html/html/functions_c.html +27 -26
  272. package/SVF-doxygen/html/html/functions_func_0x7e.html +3 -0
  273. package/SVF-doxygen/html/html/functions_func_c.html +11 -10
  274. package/SVF-doxygen/html/html/functions_i.html +3 -3
  275. package/SVF-doxygen/html/html/functions_r.html +1 -1
  276. package/SVF-doxygen/html/html/functions_s.html +12 -12
  277. package/SVF-doxygen/html/html/functions_u.html +3 -3
  278. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  279. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  280. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  281. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  282. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  283. package/SVF-doxygen/html/html/search/all_10.js +5 -5
  284. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  285. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  286. package/SVF-doxygen/html/html/search/all_14.js +2 -2
  287. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  288. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  289. package/SVF-doxygen/html/html/search/all_1b.js +1 -0
  290. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  291. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  292. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  293. package/SVF-doxygen/html/html/search/functions_16.js +1 -0
  294. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  295. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  296. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  297. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  298. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  299. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html +17 -17
  300. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
  301. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +1 -1
  302. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html +14 -14
  303. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +20 -20
  304. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html +16 -16
  305. package/SVF-doxygen/html/html/svf-ex_8cpp.html +5 -5
  306. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
  307. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  308. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  309. package/include/Graphs/GenericGraph.h +5 -8
  310. package/include/MemoryModel/PersistentPointsToCache.h +13 -7
  311. package/include/MemoryModel/PointerAnalysisImpl.h +1 -0
  312. package/include/Util/SVFModule.h +16 -0
  313. package/lib/Graphs/PAG.cpp +3 -10
  314. package/lib/SVF-FE/SymbolTableInfo.cpp +3 -0
  315. package/lib/Util/Options.cpp +2 -2
  316. package/package.json +1 -1
@@ -89,6 +89,9 @@ Public Types</h2></td></tr>
89
89
  Public Member Functions</h2></td></tr>
90
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
91
  <tr class="separator:acbfc07bb91fb08658a911abe0a8113c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
92
+ <tr class="memitem:ae9017daca63227066bb1be6dedef8b0f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#ae9017daca63227066bb1be6dedef8b0f">clear</a> ()</td></tr>
93
+ <tr class="memdesc:ae9017daca63227066bb1be6dedef8b0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the cache. <a href="#ae9017daca63227066bb1be6dedef8b0f">More...</a><br /></td></tr>
94
+ <tr class="separator:ae9017daca63227066bb1be6dedef8b0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
92
95
  <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
96
  <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
97
  <tr class="separator:af7e82410738f2cbaf06ea5249932a142"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -270,15 +273,51 @@ template&lt;typename Data&gt; </div>
270
273
  </div><div class="memdoc">
271
274
 
272
275
  <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>
273
- <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#l00410">PersistentPointsToCache.h:410</a></div></div>
274
- <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#l00420">PersistentPointsToCache.h:420</a></div></div>
276
+ <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#l00416">PersistentPointsToCache.h:416</a></div></div>
277
+ <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#l00426">PersistentPointsToCache.h:426</a></div></div>
275
278
  <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>
276
- <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#l00382">PersistentPointsToCache.h:382</a></div></div>
277
- <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#l00408">PersistentPointsToCache.h:408</a></div></div>
279
+ <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#l00388">PersistentPointsToCache.h:388</a></div></div>
280
+ <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#l00414">PersistentPointsToCache.h:414</a></div></div>
278
281
  </div><!-- fragment -->
279
282
  </div>
280
283
  </div>
281
284
  <h2 class="groupheader">Member Function Documentation</h2>
285
+ <a id="ae9017daca63227066bb1be6dedef8b0f"></a>
286
+ <h2 class="memtitle"><span class="permalink"><a href="#ae9017daca63227066bb1be6dedef8b0f">&#9670;&nbsp;</a></span>clear()</h2>
287
+
288
+ <div class="memitem">
289
+ <div class="memproto">
290
+ <div class="memtemplate">
291
+ template&lt;typename Data&gt; </div>
292
+ <table class="mlabels">
293
+ <tr>
294
+ <td class="mlabels-left">
295
+ <table class="memname">
296
+ <tr>
297
+ <td class="memname">void <a class="el" href="classSVF_1_1PersistentPointsToCache.html">SVF::PersistentPointsToCache</a>&lt; Data &gt;::clear </td>
298
+ <td>(</td>
299
+ <td class="paramname"></td><td>)</td>
300
+ <td></td>
301
+ </tr>
302
+ </table>
303
+ </td>
304
+ <td class="mlabels-right">
305
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
306
+ </tr>
307
+ </table>
308
+ </div><div class="memdoc">
309
+
310
+ <p>Clear the cache. </p>
311
+
312
+ <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>
313
+ <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; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>.clear();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">complementCache</a>.clear();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>.clear();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</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#l00421">PersistentPointsToCache.h:421</a></div></div>
314
+ <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#l00416">PersistentPointsToCache.h:416</a></div></div>
315
+ <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#l00419">PersistentPointsToCache.h:419</a></div></div>
316
+ <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#l00414">PersistentPointsToCache.h:414</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#l00423">PersistentPointsToCache.h:423</a></div></div>
318
+ </div><!-- fragment -->
319
+ </div>
320
+ </div>
282
321
  <a id="a86bf6959fb5587e350015d58d529af14"></a>
283
322
  <h2 class="memtitle"><span class="permalink"><a href="#a86bf6959fb5587e350015d58d529af14">&#9670;&nbsp;</a></span>complementPts()</h2>
284
323
 
@@ -317,20 +356,20 @@ template&lt;typename Data&gt; </div>
317
356
 
318
357
  <p>Relatively complements lhs and rhs (lhs \ rhs) and returns it's ID. </p>
319
358
 
320
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00158">158</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
321
- <div class="fragment"><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</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="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">// x - x</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span> (lhs == rhs)</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; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</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; <span class="comment">// x - EMPTY_SET</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</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="l00174"></a><span class="lineno"> 174</span>&#160; {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</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="comment">// EMPTY_SET - x</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</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="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#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</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="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</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="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span> (opPerformed)</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; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">// We performed lhs - rhs = result, so...</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</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="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">// result AND rhs = EMPTY_SET,</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</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="l00198"></a><span class="lineno"> 198</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</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="comment">// and result AND lhs = result,</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</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="l00203"></a><span class="lineno"> 203</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// and result - rhs = result.</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</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="l00208"></a><span class="lineno"> 208</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">preemptiveComplements</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a>;</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; } <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</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="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</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#l00430">PersistentPointsToCache.h:430</a></div></div>
322
- <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#l00344">PersistentPointsToCache.h:344</a></div></div>
323
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00437">PersistentPointsToCache.h:437</a></div></div>
324
- <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#l00429">PersistentPointsToCache.h:429</a></div></div>
325
- <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#l00415">PersistentPointsToCache.h:415</a></div></div>
359
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00164">164</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
360
+ <div class="fragment"><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; <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="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a>;</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">// Property cases.</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="comment">// x - x</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (lhs == rhs)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</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;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// x - EMPTY_SET</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</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="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#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> lhs;</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;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// EMPTY_SET - x</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</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="l00187"></a><span class="lineno"> 187</span>&#160; {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</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;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</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="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (opPerformed)</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; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// We performed lhs - rhs = result, so...</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</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="l00201"></a><span class="lineno"> 201</span>&#160; {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="comment">// result AND rhs = EMPTY_SET,</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</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="l00204"></a><span class="lineno"> 204</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// and result AND lhs = result,</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</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="l00209"></a><span class="lineno"> 209</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</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; <span class="comment">// and result - rhs = result.</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</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="l00214"></a><span class="lineno"> 214</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">preemptiveComplements</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a>;</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="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</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#l00436">PersistentPointsToCache.h:436</a></div></div>
361
+ <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#l00350">PersistentPointsToCache.h:350</a></div></div>
362
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00443">PersistentPointsToCache.h:443</a></div></div>
363
+ <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#l00435">PersistentPointsToCache.h:435</a></div></div>
364
+ <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#l00421">PersistentPointsToCache.h:421</a></div></div>
326
365
  <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>
327
- <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#l00433">PersistentPointsToCache.h:433</a></div></div>
366
+ <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#l00439">PersistentPointsToCache.h:439</a></div></div>
328
367
  <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>
329
- <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#l00417">PersistentPointsToCache.h:417</a></div></div>
330
- <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#l00428">PersistentPointsToCache.h:428</a></div></div>
331
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad9a761bcece141764322247cc326bcbe"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">SVF::PersistentPointsToCache::preemptiveComplements</a></div><div class="ttdeci">u64_t preemptiveComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00432">PersistentPointsToCache.h:432</a></div></div>
368
+ <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#l00423">PersistentPointsToCache.h:423</a></div></div>
369
+ <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#l00434">PersistentPointsToCache.h:434</a></div></div>
370
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad9a761bcece141764322247cc326bcbe"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">SVF::PersistentPointsToCache::preemptiveComplements</a></div><div class="ttdeci">u64_t preemptiveComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00438">PersistentPointsToCache.h:438</a></div></div>
332
371
  <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>
333
- <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#l00431">PersistentPointsToCache.h:431</a></div></div>
372
+ <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#l00437">PersistentPointsToCache.h:437</a></div></div>
334
373
  <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#l00091">SVFBasicTypes.h:91</a></div></div>
335
374
  </div><!-- fragment -->
336
375
  </div>
@@ -362,11 +401,11 @@ template&lt;typename Data&gt; </div>
362
401
  </div><div class="memdoc">
363
402
  <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>
364
403
 
365
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00080">80</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
366
- <div class="fragment"><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="comment">// Is it already in the cache?</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</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="l00084"></a><span class="lineno"> 84</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="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// Otherwise, insert it.</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</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="l00088"></a><span class="lineno"> 88</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="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[pts] = id;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> id;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</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#l00410">PersistentPointsToCache.h:410</a></div></div>
367
- <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#l00408">PersistentPointsToCache.h:408</a></div></div>
404
+ <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>
405
+ <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">// Is it already in the cache?</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</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="l00090"></a><span class="lineno"> 90</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="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// Otherwise, insert it.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</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="l00094"></a><span class="lineno"> 94</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="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[pts] = id;</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; <span class="keywordflow">return</span> id;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</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#l00416">PersistentPointsToCache.h:416</a></div></div>
406
+ <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#l00414">PersistentPointsToCache.h:414</a></div></div>
368
407
  <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#l00091">SVFBasicTypes.h:91</a></div></div>
369
- <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#l00334">PersistentPointsToCache.h:334</a></div></div>
408
+ <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#l00340">PersistentPointsToCache.h:340</a></div></div>
370
409
  </div><!-- fragment -->
371
410
  </div>
372
411
  </div>
@@ -428,9 +467,9 @@ template&lt;typename Data&gt; </div>
428
467
 
429
468
  <p>Returns the points-to set which id represents. id must be stored in the cache. </p>
430
469
 
431
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00095">95</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
432
- <div class="fragment"><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; <span class="comment">// Check if the points-to set for ID has already been stored.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</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="l00099"></a><span class="lineno"> 99</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="l00100"></a><span class="lineno"> 100</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>
433
- <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#l00408">PersistentPointsToCache.h:408</a></div></div>
470
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00101">101</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
471
+ <div class="fragment"><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">// Check if the points-to set for ID has already been stored.</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</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="l00105"></a><span class="lineno"> 105</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="l00106"></a><span class="lineno"> 106</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>
472
+ <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#l00414">PersistentPointsToCache.h:414</a></div></div>
434
473
  </div><!-- fragment -->
435
474
  </div>
436
475
  </div>
@@ -461,8 +500,8 @@ template&lt;typename Data&gt; </div>
461
500
  </div><div class="memdoc">
462
501
  <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>
463
502
 
464
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00324">324</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
465
- <div class="fragment"><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; Map&lt;Data, unsigned&gt; allPts;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</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="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</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#l00408">PersistentPointsToCache.h:408</a></div></div>
503
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00330">330</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
504
+ <div class="fragment"><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; Map&lt;Data, unsigned&gt; allPts;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</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="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</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#l00414">PersistentPointsToCache.h:414</a></div></div>
466
505
  </div><!-- fragment -->
467
506
  </div>
468
507
  </div>
@@ -494,22 +533,22 @@ template&lt;typename Data&gt; </div>
494
533
 
495
534
  <p>Initialises statistics variables to 0. </p>
496
535
 
497
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00382">382</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
498
- <div class="fragment"><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a> = 0;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a> = 0;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a> = 0;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a> = 0;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a> = 0;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a> = 0;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a> = 0;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a> = 0;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a> = 0;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">preemptiveComplements</a> = 0;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a> = 0;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a> = 0;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a> = 0;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a> = 0;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a> = 0;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</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#l00426">PersistentPointsToCache.h:426</a></div></div>
499
- <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#l00430">PersistentPointsToCache.h:430</a></div></div>
500
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00437">PersistentPointsToCache.h:437</a></div></div>
501
- <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#l00429">PersistentPointsToCache.h:429</a></div></div>
502
- <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#l00423">PersistentPointsToCache.h:423</a></div></div>
503
- <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#l00425">PersistentPointsToCache.h:425</a></div></div>
504
- <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#l00436">PersistentPointsToCache.h:436</a></div></div>
505
- <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#l00434">PersistentPointsToCache.h:434</a></div></div>
506
- <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#l00433">PersistentPointsToCache.h:433</a></div></div>
507
- <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#l00428">PersistentPointsToCache.h:428</a></div></div>
508
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00427">PersistentPointsToCache.h:427</a></div></div>
509
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad9a761bcece141764322247cc326bcbe"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">SVF::PersistentPointsToCache::preemptiveComplements</a></div><div class="ttdeci">u64_t preemptiveComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00432">PersistentPointsToCache.h:432</a></div></div>
510
- <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#l00431">PersistentPointsToCache.h:431</a></div></div>
511
- <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#l00435">PersistentPointsToCache.h:435</a></div></div>
512
- <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#l00424">PersistentPointsToCache.h:424</a></div></div>
536
+ <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>
537
+ <div class="fragment"><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a> = 0;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a> = 0;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a> = 0;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a> = 0;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a> = 0;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a> = 0;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a> = 0;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a> = 0;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a> = 0;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">preemptiveComplements</a> = 0;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a> = 0;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a> = 0;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a> = 0;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a> = 0;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a> = 0;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</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#l00432">PersistentPointsToCache.h:432</a></div></div>
538
+ <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#l00436">PersistentPointsToCache.h:436</a></div></div>
539
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00443">PersistentPointsToCache.h:443</a></div></div>
540
+ <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#l00435">PersistentPointsToCache.h:435</a></div></div>
541
+ <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#l00429">PersistentPointsToCache.h:429</a></div></div>
542
+ <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#l00431">PersistentPointsToCache.h:431</a></div></div>
543
+ <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#l00442">PersistentPointsToCache.h:442</a></div></div>
544
+ <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#l00440">PersistentPointsToCache.h:440</a></div></div>
545
+ <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#l00439">PersistentPointsToCache.h:439</a></div></div>
546
+ <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#l00434">PersistentPointsToCache.h:434</a></div></div>
547
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00433">PersistentPointsToCache.h:433</a></div></div>
548
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad9a761bcece141764322247cc326bcbe"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">SVF::PersistentPointsToCache::preemptiveComplements</a></div><div class="ttdeci">u64_t preemptiveComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00438">PersistentPointsToCache.h:438</a></div></div>
549
+ <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#l00437">PersistentPointsToCache.h:437</a></div></div>
550
+ <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#l00441">PersistentPointsToCache.h:441</a></div></div>
551
+ <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#l00430">PersistentPointsToCache.h:430</a></div></div>
513
552
  </div><!-- fragment -->
514
553
  </div>
515
554
  </div>
@@ -551,21 +590,21 @@ template&lt;typename Data&gt; </div>
551
590
 
552
591
  <p>Intersects lhs and rhs (lhs AND rhs) and returns the intersection's ID. </p>
553
592
 
554
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00217">217</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
555
- <div class="fragment"><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</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="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#a099c2319277797ac96aeee859ded9b22">totalIntersections</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; <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="l00224"></a><span class="lineno"> 224</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="comment">// EMPTY_SET &amp; x</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</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="l00229"></a><span class="lineno"> 229</span>&#160; {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// x &amp; x</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (operands.first == operands.second)</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; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> operands.first;</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;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</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="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span> (opPerformed)</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#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</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="l00248"></a><span class="lineno"> 248</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="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">// We performed lhs AND rhs = result, so...</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="comment">// result AND rhs = result,</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">if</span> (result != rhs)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</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="l00255"></a><span class="lineno"> 255</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</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;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="comment">// and result AND lhs = result,</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span> (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#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, lhs)] = <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</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">// Also (thanks reviewer #2)</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="comment">// result U lhs = result,</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</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="l00270"></a><span class="lineno"> 270</span>&#160; {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(lhs, result)] = lhs;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</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;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="comment">// And result U rhs = rhs.</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</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="l00278"></a><span class="lineno"> 278</span>&#160; {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(rhs, result)] = rhs;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><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; }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; } <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a>;</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; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</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#l00344">PersistentPointsToCache.h:344</a></div></div>
556
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00437">PersistentPointsToCache.h:437</a></div></div>
557
- <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#l00423">PersistentPointsToCache.h:423</a></div></div>
593
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00223">223</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
594
+ <div class="fragment"><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="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="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#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</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="l00230"></a><span class="lineno"> 230</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands = std::minmax(lhs, rhs);</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="comment">// Property cases.</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// EMPTY_SET &amp; x</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</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="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#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</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">// x &amp; x</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span> (operands.first == operands.second)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> operands.first;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</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="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a>;</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; <span class="comment">// When the result is empty, we won&#39;t be adding anything of substance.</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</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="l00255"></a><span class="lineno"> 255</span>&#160; {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// We performed lhs AND rhs = result, so...</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="comment">// result AND rhs = result,</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (result != rhs)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</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="l00261"></a><span class="lineno"> 261</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</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; <span class="comment">// and result AND lhs = result,</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (result != lhs)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</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="l00269"></a><span class="lineno"> 269</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</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; <span class="comment">// Also (thanks reviewer #2)</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="comment">// result U lhs = result,</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</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="l00276"></a><span class="lineno"> 276</span>&#160; {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(lhs, result)] = lhs;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><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="comment">// And result U rhs = rhs.</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</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="l00284"></a><span class="lineno"> 284</span>&#160; {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(rhs, result)] = rhs;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</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; }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; } <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</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#l00350">PersistentPointsToCache.h:350</a></div></div>
595
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00443">PersistentPointsToCache.h:443</a></div></div>
596
+ <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#l00429">PersistentPointsToCache.h:429</a></div></div>
558
597
  <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>
559
- <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#l00436">PersistentPointsToCache.h:436</a></div></div>
560
- <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#l00434">PersistentPointsToCache.h:434</a></div></div>
561
- <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#l00413">PersistentPointsToCache.h:413</a></div></div>
562
- <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#l00433">PersistentPointsToCache.h:433</a></div></div>
598
+ <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#l00442">PersistentPointsToCache.h:442</a></div></div>
599
+ <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#l00440">PersistentPointsToCache.h:440</a></div></div>
600
+ <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#l00419">PersistentPointsToCache.h:419</a></div></div>
601
+ <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#l00439">PersistentPointsToCache.h:439</a></div></div>
563
602
  <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>
564
- <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#l00417">PersistentPointsToCache.h:417</a></div></div>
565
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00427">PersistentPointsToCache.h:427</a></div></div>
603
+ <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#l00423">PersistentPointsToCache.h:423</a></div></div>
604
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00433">PersistentPointsToCache.h:433</a></div></div>
566
605
  <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>
567
606
  <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#l00091">SVFBasicTypes.h:91</a></div></div>
568
- <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#l00435">PersistentPointsToCache.h:435</a></div></div>
607
+ <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#l00441">PersistentPointsToCache.h:441</a></div></div>
569
608
  </div><!-- fragment -->
570
609
  </div>
571
610
  </div>
@@ -595,9 +634,9 @@ template&lt;typename Data&gt; </div>
595
634
  </table>
596
635
  </div><div class="memdoc">
597
636
 
598
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00334">334</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
599
- <div class="fragment"><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="comment">// Make sure we don&#39;t overflow.</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</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="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a>++;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</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>
600
- <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#l00420">PersistentPointsToCache.h:420</a></div></div>
637
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00340">340</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
638
+ <div class="fragment"><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="comment">// Make sure we don&#39;t overflow.</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</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="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a>++;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</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>
639
+ <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#l00426">PersistentPointsToCache.h:426</a></div></div>
601
640
  <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>
602
641
  </div><!-- fragment -->
603
642
  </div>
@@ -663,13 +702,13 @@ template&lt;typename Data&gt; </div>
663
702
  </div><div class="memdoc">
664
703
  <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>
665
704
 
666
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00344">344</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
667
- <div class="fragment"><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; std::pair&lt;PointsToID, PointsToID&gt; operands;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</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="l00349"></a><span class="lineno"> 349</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="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span> (commutative) operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">else</span> operands = std::make_pair(lhs, rhs);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="comment">// Check if we have performed this operation</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; OpCache::const_iterator foundResult = opCache.find(operands);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span> (foundResult != opCache.end()) <span class="keywordflow">return</span> foundResult-&gt;second;</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; opPerformed = <span class="keyword">true</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</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="l00360"></a><span class="lineno"> 360</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="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; Data <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = dataOp(lhsPts, rhsPts);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> resultId;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="comment">// Intern points-to set: check if result already exists.</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</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="l00367"></a><span class="lineno"> 367</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="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; resultId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">newPointsToId</a>();</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</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="l00372"></a><span class="lineno"> 372</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="l00373"></a><span class="lineno"> 373</span>&#160; }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="comment">// Cache the result, for hash-consing.</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; opCache[operands] = resultId;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">return</span> resultId;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</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#l00095">PersistentPointsToCache.h:95</a></div></div>
668
- <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#l00410">PersistentPointsToCache.h:410</a></div></div>
669
- <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#l00408">PersistentPointsToCache.h:408</a></div></div>
705
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00350">350</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
706
+ <div class="fragment"><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</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="l00355"></a><span class="lineno"> 355</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="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span> (commutative) operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">else</span> operands = std::make_pair(lhs, rhs);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="comment">// Check if we have performed this operation</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; OpCache::const_iterator foundResult = opCache.find(operands);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span> (foundResult != opCache.end()) <span class="keywordflow">return</span> foundResult-&gt;second;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; opPerformed = <span class="keyword">true</span>;</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="keyword">const</span> Data &amp;lhsPts = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(lhs);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</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="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; Data <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = dataOp(lhsPts, rhsPts);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> resultId;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="comment">// Intern points-to set: check if result already exists.</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</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="l00373"></a><span class="lineno"> 373</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="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; resultId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">newPointsToId</a>();</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</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="l00378"></a><span class="lineno"> 378</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="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="comment">// Cache the result, for hash-consing.</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; opCache[operands] = resultId;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">return</span> resultId;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</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#l00101">PersistentPointsToCache.h:101</a></div></div>
707
+ <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#l00416">PersistentPointsToCache.h:416</a></div></div>
708
+ <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#l00414">PersistentPointsToCache.h:414</a></div></div>
670
709
  <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>
671
710
  <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#l00091">SVFBasicTypes.h:91</a></div></div>
672
- <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#l00334">PersistentPointsToCache.h:334</a></div></div>
711
+ <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#l00340">PersistentPointsToCache.h:340</a></div></div>
673
712
  </div><!-- fragment -->
674
713
  </div>
675
714
  </div>
@@ -701,23 +740,23 @@ template&lt;typename Data&gt; </div>
701
740
 
702
741
  <p>Print statistics on operations and points-to set numbers. </p>
703
742
 
704
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00290">290</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
705
- <div class="fragment"><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</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="l00293"></a><span class="lineno"> 293</span>&#160; std::cout.flags(std::ios::left);</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; <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="l00296"></a><span class="lineno"> 296</span>&#160;</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;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="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;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="l00300"></a><span class="lineno"> 300</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="l00301"></a><span class="lineno"> 301</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="l00302"></a><span class="lineno"> 302</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="l00303"></a><span class="lineno"> 303</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PreemptiveUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</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 &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="l00306"></a><span class="lineno"> 306</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="l00307"></a><span class="lineno"> 307</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="l00308"></a><span class="lineno"> 308</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="l00309"></a><span class="lineno"> 309</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PreemptiveComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">preemptiveComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</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="l00312"></a><span class="lineno"> 312</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="l00313"></a><span class="lineno"> 313</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="l00314"></a><span class="lineno"> 314</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="l00315"></a><span class="lineno"> 315</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PreemptiveIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; std::cout.flush();</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</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#l00426">PersistentPointsToCache.h:426</a></div></div>
706
- <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#l00430">PersistentPointsToCache.h:430</a></div></div>
707
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00437">PersistentPointsToCache.h:437</a></div></div>
708
- <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#l00429">PersistentPointsToCache.h:429</a></div></div>
709
- <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#l00423">PersistentPointsToCache.h:423</a></div></div>
710
- <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#l00425">PersistentPointsToCache.h:425</a></div></div>
711
- <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#l00436">PersistentPointsToCache.h:436</a></div></div>
712
- <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#l00434">PersistentPointsToCache.h:434</a></div></div>
713
- <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#l00433">PersistentPointsToCache.h:433</a></div></div>
714
- <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#l00408">PersistentPointsToCache.h:408</a></div></div>
715
- <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#l00428">PersistentPointsToCache.h:428</a></div></div>
716
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00427">PersistentPointsToCache.h:427</a></div></div>
717
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad9a761bcece141764322247cc326bcbe"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">SVF::PersistentPointsToCache::preemptiveComplements</a></div><div class="ttdeci">u64_t preemptiveComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00432">PersistentPointsToCache.h:432</a></div></div>
718
- <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#l00431">PersistentPointsToCache.h:431</a></div></div>
719
- <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#l00435">PersistentPointsToCache.h:435</a></div></div>
720
- <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#l00424">PersistentPointsToCache.h:424</a></div></div>
743
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00296">296</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
744
+ <div class="fragment"><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</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="l00299"></a><span class="lineno"> 299</span>&#160; std::cout.flags(std::ios::left);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</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="l00302"></a><span class="lineno"> 302</span>&#160;</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;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="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</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="l00306"></a><span class="lineno"> 306</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="l00307"></a><span class="lineno"> 307</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="l00308"></a><span class="lineno"> 308</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="l00309"></a><span class="lineno"> 309</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PreemptiveUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</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="l00312"></a><span class="lineno"> 312</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="l00313"></a><span class="lineno"> 313</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="l00314"></a><span class="lineno"> 314</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="l00315"></a><span class="lineno"> 315</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PreemptiveComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">preemptiveComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</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="l00318"></a><span class="lineno"> 318</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="l00319"></a><span class="lineno"> 319</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="l00320"></a><span class="lineno"> 320</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="l00321"></a><span class="lineno"> 321</span>&#160; std::cout &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PreemptiveIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><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; std::cout.flush();</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</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#l00432">PersistentPointsToCache.h:432</a></div></div>
745
+ <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#l00436">PersistentPointsToCache.h:436</a></div></div>
746
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00443">PersistentPointsToCache.h:443</a></div></div>
747
+ <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#l00435">PersistentPointsToCache.h:435</a></div></div>
748
+ <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#l00429">PersistentPointsToCache.h:429</a></div></div>
749
+ <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#l00431">PersistentPointsToCache.h:431</a></div></div>
750
+ <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#l00442">PersistentPointsToCache.h:442</a></div></div>
751
+ <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#l00440">PersistentPointsToCache.h:440</a></div></div>
752
+ <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#l00439">PersistentPointsToCache.h:439</a></div></div>
753
+ <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#l00414">PersistentPointsToCache.h:414</a></div></div>
754
+ <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#l00434">PersistentPointsToCache.h:434</a></div></div>
755
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00433">PersistentPointsToCache.h:433</a></div></div>
756
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad9a761bcece141764322247cc326bcbe"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">SVF::PersistentPointsToCache::preemptiveComplements</a></div><div class="ttdeci">u64_t preemptiveComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00438">PersistentPointsToCache.h:438</a></div></div>
757
+ <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#l00437">PersistentPointsToCache.h:437</a></div></div>
758
+ <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#l00441">PersistentPointsToCache.h:441</a></div></div>
759
+ <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#l00430">PersistentPointsToCache.h:430</a></div></div>
721
760
  </div><!-- fragment -->
722
761
  </div>
723
762
  </div>
@@ -749,9 +788,9 @@ template&lt;typename Data&gt; </div>
749
788
 
750
789
  <p>Remaps all points-to sets stored in the cache to the current mapping. </p>
751
790
 
752
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00069">69</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
753
- <div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span> (Data *d : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>) d-&gt;checkAndRemap();</div><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">// Rebuild ptsToId from idToPts.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.clear();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> i = 0; i &lt; idToPts.size(); ++i) <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[*idToPts[i]] = i;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</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#l00410">PersistentPointsToCache.h:410</a></div></div>
754
- <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#l00408">PersistentPointsToCache.h:408</a></div></div>
791
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00075">75</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
792
+ <div class="fragment"><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="keywordflow">for</span> (Data *d : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>) d-&gt;checkAndRemap();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// Rebuild ptsToId from idToPts.</span></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>.clear();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> i = 0; i &lt; idToPts.size(); ++i) <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[*idToPts[i]] = i;</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#l00416">PersistentPointsToCache.h:416</a></div></div>
793
+ <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#l00414">PersistentPointsToCache.h:414</a></div></div>
755
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#l00091">SVFBasicTypes.h:91</a></div></div>
756
795
  </div><!-- fragment -->
757
796
  </div>
@@ -784,15 +823,13 @@ template&lt;typename Data&gt; </div>
784
823
 
785
824
  <p>Resets the cache removing everything except the emptyData it was initialised with. </p>
786
825
 
787
- <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>
788
- <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#l00415">PersistentPointsToCache.h:415</a></div></div>
789
- <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#l00410">PersistentPointsToCache.h:410</a></div></div>
790
- <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#l00413">PersistentPointsToCache.h:413</a></div></div>
791
- <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#l00420">PersistentPointsToCache.h:420</a></div></div>
826
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00061">61</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
827
+ <div class="fragment"><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#ae9017daca63227066bb1be6dedef8b0f">clear</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="comment">// Put the empty data back in.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</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="l00067"></a><span class="lineno"> 67</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="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a> = 1;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// Cache is empty...</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">initStats</a>();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae9017daca63227066bb1be6dedef8b0f"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae9017daca63227066bb1be6dedef8b0f">SVF::PersistentPointsToCache::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clear the cache. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00049">PersistentPointsToCache.h:49</a></div></div>
828
+ <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#l00416">PersistentPointsToCache.h:416</a></div></div>
829
+ <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#l00426">PersistentPointsToCache.h:426</a></div></div>
792
830
  <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>
793
- <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#l00382">PersistentPointsToCache.h:382</a></div></div>
794
- <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#l00408">PersistentPointsToCache.h:408</a></div></div>
795
- <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#l00417">PersistentPointsToCache.h:417</a></div></div>
831
+ <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#l00388">PersistentPointsToCache.h:388</a></div></div>
832
+ <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#l00414">PersistentPointsToCache.h:414</a></div></div>
796
833
  </div><!-- fragment -->
797
834
  </div>
798
835
  </div>
@@ -834,18 +871,18 @@ template&lt;typename Data&gt; </div>
834
871
 
835
872
  <p>Unions lhs and rhs and returns their union's ID. </p>
836
873
 
837
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00103">103</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
838
- <div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</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="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#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</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; <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="l00110"></a><span class="lineno"> 110</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// EMPTY_SET U x</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</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="l00115"></a><span class="lineno"> 115</span>&#160; {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> operands.second;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</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="comment">// x U x</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (operands.first == operands.second)</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#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> operands.first;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</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="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</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="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</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; <span class="comment">// We can use lhs/rhs here rather than our ordered operands,</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// because the operation was commutative.</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// if x U y = z, then x U z = z,</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span> (lhs != result)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</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="l00141"></a><span class="lineno"> 141</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</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;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// and y U z = z.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">if</span> (rhs != result)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</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="l00149"></a><span class="lineno"> 149</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</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; } <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</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="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</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#l00426">PersistentPointsToCache.h:426</a></div></div>
839
- <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#l00344">PersistentPointsToCache.h:344</a></div></div>
840
- <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#l00423">PersistentPointsToCache.h:423</a></div></div>
841
- <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#l00425">PersistentPointsToCache.h:425</a></div></div>
874
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00109">109</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
875
+ <div class="fragment"><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="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="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#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</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="l00116"></a><span class="lineno"> 116</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands = std::minmax(lhs, rhs);</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="comment">// Property cases.</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">// EMPTY_SET U x</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</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="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#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> operands.second;</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;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="comment">// x U x</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (operands.first == operands.second)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> operands.first;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</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="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">if</span> (opPerformed)</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#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// We can use lhs/rhs here rather than our ordered operands,</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// because the operation was commutative.</span></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="comment">// if x U y = z, then x U z = z,</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span> (lhs != result)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</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="l00147"></a><span class="lineno"> 147</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><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;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// and y U z = z.</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> (rhs != result)</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; <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="l00155"></a><span class="lineno"> 155</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</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; } <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</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#l00432">PersistentPointsToCache.h:432</a></div></div>
876
+ <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#l00350">PersistentPointsToCache.h:350</a></div></div>
877
+ <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#l00429">PersistentPointsToCache.h:429</a></div></div>
878
+ <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#l00431">PersistentPointsToCache.h:431</a></div></div>
842
879
  <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>
843
- <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#l00413">PersistentPointsToCache.h:413</a></div></div>
880
+ <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#l00419">PersistentPointsToCache.h:419</a></div></div>
844
881
  <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>
845
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00427">PersistentPointsToCache.h:427</a></div></div>
882
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00433">PersistentPointsToCache.h:433</a></div></div>
846
883
  <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>
847
884
  <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#l00091">SVFBasicTypes.h:91</a></div></div>
848
- <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#l00424">PersistentPointsToCache.h:424</a></div></div>
885
+ <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#l00430">PersistentPointsToCache.h:430</a></div></div>
849
886
  </div><!-- fragment -->
850
887
  </div>
851
888
  </div>
@@ -874,7 +911,7 @@ template&lt;typename Data&gt; </div>
874
911
 
875
912
  <p>Maps two IDs to their relative complement. </p>
876
913
 
877
- <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>
914
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00421">421</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
878
915
 
879
916
  </div>
880
917
  </div>
@@ -902,7 +939,7 @@ template&lt;typename Data&gt; </div>
902
939
 
903
940
  <p>Used to generate new PointsToIDs. Any non-zero is valid. </p>
904
941
 
905
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00420">420</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
942
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00426">426</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
906
943
 
907
944
  </div>
908
945
  </div>
@@ -929,7 +966,7 @@ template&lt;typename Data&gt; </div>
929
966
  </div><div class="memdoc">
930
967
  <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>
931
968
 
932
- <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>
969
+ <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>
933
970
 
934
971
  </div>
935
972
  </div>
@@ -957,7 +994,7 @@ template&lt;typename Data&gt; </div>
957
994
 
958
995
  <p>Maps two IDs to their intersection. Keys must be sorted. </p>
959
996
 
960
- <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>
997
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00423">423</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
961
998
 
962
999
  </div>
963
1000
  </div>
@@ -983,7 +1020,7 @@ template&lt;typename Data&gt; </div>
983
1020
  </table>
984
1021
  </div><div class="memdoc">
985
1022
 
986
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00431">431</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1023
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00437">437</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
987
1024
 
988
1025
  </div>
989
1026
  </div>
@@ -1009,7 +1046,7 @@ template&lt;typename Data&gt; </div>
1009
1046
  </table>
1010
1047
  </div><div class="memdoc">
1011
1048
 
1012
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00436">436</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1049
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00442">442</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1013
1050
 
1014
1051
  </div>
1015
1052
  </div>
@@ -1035,7 +1072,7 @@ template&lt;typename Data&gt; </div>
1035
1072
  </table>
1036
1073
  </div><div class="memdoc">
1037
1074
 
1038
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00426">426</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1075
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00432">432</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1039
1076
 
1040
1077
  </div>
1041
1078
  </div>
@@ -1061,7 +1098,7 @@ template&lt;typename Data&gt; </div>
1061
1098
  </table>
1062
1099
  </div><div class="memdoc">
1063
1100
 
1064
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00432">432</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1101
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00438">438</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1065
1102
 
1066
1103
  </div>
1067
1104
  </div>
@@ -1087,7 +1124,7 @@ template&lt;typename Data&gt; </div>
1087
1124
  </table>
1088
1125
  </div><div class="memdoc">
1089
1126
 
1090
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00437">437</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1127
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00443">443</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1091
1128
 
1092
1129
  </div>
1093
1130
  </div>
@@ -1113,7 +1150,7 @@ template&lt;typename Data&gt; </div>
1113
1150
  </table>
1114
1151
  </div><div class="memdoc">
1115
1152
 
1116
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00427">427</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1153
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00433">433</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1117
1154
 
1118
1155
  </div>
1119
1156
  </div>
@@ -1139,7 +1176,7 @@ template&lt;typename Data&gt; </div>
1139
1176
  </table>
1140
1177
  </div><div class="memdoc">
1141
1178
 
1142
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00430">430</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1179
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00436">436</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1143
1180
 
1144
1181
  </div>
1145
1182
  </div>
@@ -1165,7 +1202,7 @@ template&lt;typename Data&gt; </div>
1165
1202
  </table>
1166
1203
  </div><div class="memdoc">
1167
1204
 
1168
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00435">435</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1205
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00441">441</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1169
1206
 
1170
1207
  </div>
1171
1208
  </div>
@@ -1191,7 +1228,7 @@ template&lt;typename Data&gt; </div>
1191
1228
  </table>
1192
1229
  </div><div class="memdoc">
1193
1230
 
1194
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00425">425</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1231
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00431">431</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1195
1232
 
1196
1233
  </div>
1197
1234
  </div>
@@ -1219,7 +1256,7 @@ template&lt;typename Data&gt; </div>
1219
1256
 
1220
1257
  <p>Maps points-to sets to their corresponding ID. </p>
1221
1258
 
1222
- <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>
1259
+ <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>
1223
1260
 
1224
1261
  </div>
1225
1262
  </div>
@@ -1245,7 +1282,7 @@ template&lt;typename Data&gt; </div>
1245
1282
  </table>
1246
1283
  </div><div class="memdoc">
1247
1284
 
1248
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00428">428</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1285
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00434">434</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1249
1286
 
1250
1287
  </div>
1251
1288
  </div>
@@ -1271,7 +1308,7 @@ template&lt;typename Data&gt; </div>
1271
1308
  </table>
1272
1309
  </div><div class="memdoc">
1273
1310
 
1274
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00433">433</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1311
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00439">439</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1275
1312
 
1276
1313
  </div>
1277
1314
  </div>
@@ -1297,7 +1334,7 @@ template&lt;typename Data&gt; </div>
1297
1334
  </table>
1298
1335
  </div><div class="memdoc">
1299
1336
 
1300
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00423">423</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1337
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00429">429</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1301
1338
 
1302
1339
  </div>
1303
1340
  </div>
@@ -1325,7 +1362,7 @@ template&lt;typename Data&gt; </div>
1325
1362
 
1326
1363
  <p>Maps two IDs to their union. Keys must be sorted. </p>
1327
1364
 
1328
- <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>
1365
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00419">419</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1329
1366
 
1330
1367
  </div>
1331
1368
  </div>
@@ -1351,7 +1388,7 @@ template&lt;typename Data&gt; </div>
1351
1388
  </table>
1352
1389
  </div><div class="memdoc">
1353
1390
 
1354
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00429">429</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1391
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00435">435</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1355
1392
 
1356
1393
  </div>
1357
1394
  </div>
@@ -1377,7 +1414,7 @@ template&lt;typename Data&gt; </div>
1377
1414
  </table>
1378
1415
  </div><div class="memdoc">
1379
1416
 
1380
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00434">434</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1417
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00440">440</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1381
1418
 
1382
1419
  </div>
1383
1420
  </div>
@@ -1403,7 +1440,7 @@ template&lt;typename Data&gt; </div>
1403
1440
  </table>
1404
1441
  </div><div class="memdoc">
1405
1442
 
1406
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00424">424</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1443
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00430">430</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1407
1444
 
1408
1445
  </div>
1409
1446
  </div>