svf-tools 1.0.306 → 1.0.310

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 (237) 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/AndersenStat_8cpp_source.html +3 -3
  4. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +9 -9
  6. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  7. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +8 -8
  8. package/SVF-doxygen/html/html/CHG_8cpp_source.html +5 -5
  9. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +9 -9
  11. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +6 -6
  12. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  13. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +5 -5
  14. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +4 -4
  15. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +3 -3
  18. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +5 -5
  19. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +4 -4
  20. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  21. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +3 -3
  22. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
  23. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
  24. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  25. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +5 -5
  28. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +2 -2
  29. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/MHP_8cpp_source.html +6 -6
  32. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
  33. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/html/MTA_8cpp_source.html +5 -5
  35. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +3 -3
  36. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +4 -4
  37. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +3 -3
  39. package/SVF-doxygen/html/html/PAG_8cpp_source.html +3 -3
  40. package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +8 -7
  43. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +3 -3
  44. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +25 -22
  45. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +18 -14
  47. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +68 -68
  48. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -2
  51. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +23 -23
  52. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +23 -23
  53. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -2
  54. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -2
  55. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +2 -2
  56. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
  57. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  58. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -7
  59. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +4 -4
  60. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  61. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  62. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +3 -3
  63. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
  64. package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
  65. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
  66. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  67. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
  68. package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -3
  69. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  70. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  71. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  72. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  73. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
  75. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +12 -12
  76. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +9 -9
  77. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +2 -2
  78. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +5 -5
  79. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +4 -4
  80. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +2 -2
  81. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +2 -2
  82. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +1 -1
  83. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +81 -78
  84. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
  85. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  86. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +11 -11
  87. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +2 -2
  88. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +115 -115
  92. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +20 -20
  93. package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
  94. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  95. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  96. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  97. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +6 -6
  98. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +24 -24
  99. package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +12 -12
  101. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +36 -36
  102. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
  103. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +13 -13
  104. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +4 -4
  105. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  107. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  108. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +1 -1
  110. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +1 -1
  111. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +1 -1
  112. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
  113. package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
  114. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  115. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +2 -2
  118. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  119. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  120. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
  121. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +2 -2
  122. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
  123. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +25 -25
  124. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  125. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +16 -16
  126. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +6 -6
  127. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  128. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +7 -7
  129. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  130. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +8 -8
  132. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
  133. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +15 -15
  134. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +2 -2
  135. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +7 -7
  136. package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1PAG.html +2 -2
  139. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +29 -29
  140. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
  141. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +18 -17
  145. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +4 -4
  146. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +1 -1
  148. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +19 -16
  149. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +188 -95
  150. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +3 -3
  151. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +2 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +2 -2
  156. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +8 -8
  157. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +4 -4
  158. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  159. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
  160. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +3 -3
  161. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +2 -2
  162. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +2 -2
  163. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
  164. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
  165. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  166. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +7 -7
  167. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
  168. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +13 -13
  169. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +9 -9
  170. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  171. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  172. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +2 -2
  173. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
  176. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +2 -2
  178. package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +1 -1
  180. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +7 -7
  181. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  182. package/SVF-doxygen/html/html/functions_c.html +10 -10
  183. package/SVF-doxygen/html/html/functions_f.html +1 -1
  184. package/SVF-doxygen/html/html/functions_func_f.html +1 -1
  185. package/SVF-doxygen/html/html/functions_i.html +5 -5
  186. package/SVF-doxygen/html/html/functions_o.html +3 -3
  187. package/SVF-doxygen/html/html/functions_p.html +23 -20
  188. package/SVF-doxygen/html/html/functions_r.html +6 -4
  189. package/SVF-doxygen/html/html/functions_s.html +8 -8
  190. package/SVF-doxygen/html/html/functions_t.html +6 -6
  191. package/SVF-doxygen/html/html/functions_u.html +3 -3
  192. package/SVF-doxygen/html/html/functions_v.html +3 -3
  193. package/SVF-doxygen/html/html/functions_vars_p.html +9 -0
  194. package/SVF-doxygen/html/html/globals_func_i.html +8 -8
  195. package/SVF-doxygen/html/html/globals_func_s.html +6 -6
  196. package/SVF-doxygen/html/html/globals_s.html +12 -14
  197. package/SVF-doxygen/html/html/namespaceSVF.html +2 -2
  198. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +10 -9
  199. package/SVF-doxygen/html/html/search/all_10.js +12 -9
  200. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  201. package/SVF-doxygen/html/html/search/all_13.js +7 -7
  202. package/SVF-doxygen/html/html/search/all_14.js +4 -4
  203. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  204. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  205. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  206. package/SVF-doxygen/html/html/search/all_6.js +1 -1
  207. package/SVF-doxygen/html/html/search/all_9.js +3 -3
  208. package/SVF-doxygen/html/html/search/all_e.js +4 -4
  209. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  210. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  211. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  212. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  213. package/SVF-doxygen/html/html/search/variables_10.js +3 -0
  214. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  215. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  216. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +1 -1
  217. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  218. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +1 -1
  219. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  220. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SmallVector_3_01T_00_01N_01_4_01_4.html +3 -3
  221. package/SVF-doxygen/html/html/structstd_1_1hash_3_01llvm_1_1SparseBitVector_3_01N_01_4_01_4.html +3 -3
  222. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  223. package/SVF-doxygen/html/html/tools_2DDA_2CMakeLists_8txt.html +1 -1
  224. package/SVF-doxygen/html/html/tools_2Example_2CMakeLists_8txt.html +1 -1
  225. package/SVF-doxygen/html/html/tools_2MTA_2CMakeLists_8txt.html +1 -1
  226. package/SVF-doxygen/html/html/tools_2SABER_2CMakeLists_8txt.html +1 -1
  227. package/SVF-doxygen/html/html/tools_2WPA_2CMakeLists_8txt.html +9 -9
  228. package/include/MemoryModel/PersistentPointsToCache.h +43 -34
  229. package/include/MemoryModel/PointerAnalysisImpl.h +1 -5
  230. package/include/Util/SVFBasicTypes.h +4 -2
  231. package/lib/MemoryModel/PointerAnalysisImpl.cpp +7 -0
  232. package/lib/MemoryModel/PointsTo.cpp +3 -3
  233. package/lib/Util/PTAStat.cpp +3 -4
  234. package/lib/Util/SVFUtil.cpp +1 -0
  235. package/lib/WPA/FlowSensitive.cpp +1 -1
  236. package/package.json +1 -1
  237. package/tools/WPA/CMakeLists.txt +3 -1
@@ -157,6 +157,8 @@ Private Attributes</h2></td></tr>
157
157
  <tr class="separator:ad045302497c76b9dfa656882cc0192dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
158
158
  <tr class="memitem:ace976f138cf1b8ab6bbf7a5c5d0b60b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a></td></tr>
159
159
  <tr class="separator:ace976f138cf1b8ab6bbf7a5c5d0b60b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
160
+ <tr class="memitem:a98dad4f4d39904d90564f1a2279ac664"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a></td></tr>
161
+ <tr class="separator:a98dad4f4d39904d90564f1a2279ac664"><td class="memSeparator" colspan="2">&#160;</td></tr>
160
162
  <tr class="memitem:a6d52fb93d22b2ce3e4e4acbdd82b88b0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a></td></tr>
161
163
  <tr class="separator:a6d52fb93d22b2ce3e4e4acbdd82b88b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
162
164
  <tr class="memitem:a5c1afbaebce46eac6b1172aa5f2824ee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a></td></tr>
@@ -165,6 +167,8 @@ Private Attributes</h2></td></tr>
165
167
  <tr class="separator:a7961dd7af7db2774e852beabcba1e5a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
166
168
  <tr class="memitem:a47f4e8ef1461396afb2e1c3cbe055e95"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a></td></tr>
167
169
  <tr class="separator:a47f4e8ef1461396afb2e1c3cbe055e95"><td class="memSeparator" colspan="2">&#160;</td></tr>
170
+ <tr class="memitem:ad9a761bcece141764322247cc326bcbe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">preemptiveComplements</a></td></tr>
171
+ <tr class="separator:ad9a761bcece141764322247cc326bcbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
168
172
  <tr class="memitem:a099c2319277797ac96aeee859ded9b22"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a></td></tr>
169
173
  <tr class="separator:a099c2319277797ac96aeee859ded9b22"><td class="memSeparator" colspan="2">&#160;</td></tr>
170
174
  <tr class="memitem:a474023fe293b080fbda7da06ef380531"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a></td></tr>
@@ -173,6 +177,8 @@ Private Attributes</h2></td></tr>
173
177
  <tr class="separator:a4c58a058c50703ba5f35e8bf052ee991"><td class="memSeparator" colspan="2">&#160;</td></tr>
174
178
  <tr class="memitem:a15d3235017b35f4a5c668d0b6626faff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a></td></tr>
175
179
  <tr class="separator:a15d3235017b35f4a5c668d0b6626faff"><td class="memSeparator" colspan="2">&#160;</td></tr>
180
+ <tr class="memitem:ae80c5037ff49f70d9a87a83a8fcb07c7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a></td></tr>
181
+ <tr class="separator:ae80c5037ff49f70d9a87a83a8fcb07c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
176
182
  </table>
177
183
  <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
178
184
  <div class="textblock"><h3>template&lt;typename Data&gt;<br />
@@ -264,11 +270,11 @@ template&lt;typename Data&gt; </div>
264
270
  </div><div class="memdoc">
265
271
 
266
272
  <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>
267
- <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#l00404">PersistentPointsToCache.h:404</a></div></div>
268
- <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#l00414">PersistentPointsToCache.h:414</a></div></div>
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>
269
275
  <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>
270
- <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#l00379">PersistentPointsToCache.h:379</a></div></div>
271
- <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#l00402">PersistentPointsToCache.h:402</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>
272
278
  </div><!-- fragment -->
273
279
  </div>
274
280
  </div>
@@ -312,19 +318,20 @@ template&lt;typename Data&gt; </div>
312
318
  <p>Relatively complements lhs and rhs (lhs \ rhs) and returns it's ID. </p>
313
319
 
314
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>
315
- <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#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</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#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</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#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</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#l00423">PersistentPointsToCache.h:423</a></div></div>
316
- <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#l00341">PersistentPointsToCache.h:341</a></div></div>
317
- <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#l00422">PersistentPointsToCache.h:422</a></div></div>
318
- <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#l00409">PersistentPointsToCache.h:409</a></div></div>
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>
319
326
  <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>
320
- <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#l00425">PersistentPointsToCache.h:425</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>
321
328
  <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>
322
- <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#l00411">PersistentPointsToCache.h:411</a></div></div>
323
- <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#l00421">PersistentPointsToCache.h:421</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>
324
332
  <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>
325
- <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#l00424">PersistentPointsToCache.h:424</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>
326
334
  <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>
327
- <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#l00427">PersistentPointsToCache.h:427</a></div></div>
328
335
  </div><!-- fragment -->
329
336
  </div>
330
337
  </div>
@@ -356,10 +363,10 @@ template&lt;typename Data&gt; </div>
356
363
  <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>
357
364
 
358
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>
359
- <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#l00404">PersistentPointsToCache.h:404</a></div></div>
360
- <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#l00402">PersistentPointsToCache.h:402</a></div></div>
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>
361
368
  <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>
362
- <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#l00331">PersistentPointsToCache.h:331</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>
363
370
  </div><!-- fragment -->
364
371
  </div>
365
372
  </div>
@@ -423,7 +430,7 @@ template&lt;typename Data&gt; </div>
423
430
 
424
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>
425
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>
426
- <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#l00402">PersistentPointsToCache.h:402</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>
427
434
  </div><!-- fragment -->
428
435
  </div>
429
436
  </div>
@@ -454,8 +461,8 @@ template&lt;typename Data&gt; </div>
454
461
  </div><div class="memdoc">
455
462
  <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>
456
463
 
457
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00321">321</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
458
- <div class="fragment"><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; Map&lt;Data, unsigned&gt; allPts;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</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="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</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#l00402">PersistentPointsToCache.h:402</a></div></div>
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>
459
466
  </div><!-- fragment -->
460
467
  </div>
461
468
  </div>
@@ -487,19 +494,22 @@ template&lt;typename Data&gt; </div>
487
494
 
488
495
  <p>Initialises statistics variables to 0. </p>
489
496
 
490
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00379">379</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
491
- <div class="fragment"><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;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a> = 0;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a> = 0;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a> = 0;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a> = 0;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a> = 0;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a> = 0;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a> = 0;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a> = 0;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a> = 0;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a> = 0;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a> = 0;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a> = 0;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</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#l00420">PersistentPointsToCache.h:420</a></div></div>
492
- <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#l00423">PersistentPointsToCache.h:423</a></div></div>
493
- <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#l00422">PersistentPointsToCache.h:422</a></div></div>
494
- <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#l00417">PersistentPointsToCache.h:417</a></div></div>
495
- <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#l00419">PersistentPointsToCache.h:419</a></div></div>
496
- <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#l00428">PersistentPointsToCache.h:428</a></div></div>
497
- <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#l00426">PersistentPointsToCache.h:426</a></div></div>
498
- <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#l00425">PersistentPointsToCache.h:425</a></div></div>
499
- <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#l00421">PersistentPointsToCache.h:421</a></div></div>
500
- <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#l00424">PersistentPointsToCache.h:424</a></div></div>
501
- <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#l00427">PersistentPointsToCache.h:427</a></div></div>
502
- <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#l00418">PersistentPointsToCache.h:418</a></div></div>
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>
503
513
  </div><!-- fragment -->
504
514
  </div>
505
515
  </div>
@@ -542,19 +552,20 @@ template&lt;typename Data&gt; </div>
542
552
  <p>Intersects lhs and rhs (lhs AND rhs) and returns the intersection's ID. </p>
543
553
 
544
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>
545
- <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#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</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#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</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#ad045302497c76b9dfa656882cc0192dd">propertyUnions</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#ad045302497c76b9dfa656882cc0192dd">propertyUnions</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#l00341">PersistentPointsToCache.h:341</a></div></div>
546
- <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#l00417">PersistentPointsToCache.h:417</a></div></div>
547
- <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#l00419">PersistentPointsToCache.h:419</a></div></div>
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>
548
558
  <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>
549
- <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#l00428">PersistentPointsToCache.h:428</a></div></div>
550
- <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#l00426">PersistentPointsToCache.h:426</a></div></div>
551
- <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#l00407">PersistentPointsToCache.h:407</a></div></div>
552
- <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#l00425">PersistentPointsToCache.h:425</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>
553
563
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00037">PersistentPointsToCache.h:37</a></div></div>
554
- <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#l00411">PersistentPointsToCache.h:411</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>
555
566
  <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>
556
567
  <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>
557
- <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#l00427">PersistentPointsToCache.h:427</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>
558
569
  </div><!-- fragment -->
559
570
  </div>
560
571
  </div>
@@ -584,9 +595,9 @@ template&lt;typename Data&gt; </div>
584
595
  </table>
585
596
  </div><div class="memdoc">
586
597
 
587
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00331">331</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
588
- <div class="fragment"><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">// Make sure we don&#39;t overflow.</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</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="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a>++;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</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>
589
- <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#l00414">PersistentPointsToCache.h:414</a></div></div>
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>
590
601
  <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>
591
602
  </div><!-- fragment -->
592
603
  </div>
@@ -652,13 +663,13 @@ template&lt;typename Data&gt; </div>
652
663
  </div><div class="memdoc">
653
664
  <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>
654
665
 
655
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00341">341</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
656
- <div class="fragment"><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</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="l00346"></a><span class="lineno"> 346</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="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">if</span> (commutative) operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">else</span> operands = std::make_pair(lhs, rhs);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="comment">// Check if we have performed this operation</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; OpCache::const_iterator foundResult = opCache.find(operands);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span> (foundResult != opCache.end()) <span class="keywordflow">return</span> foundResult-&gt;second;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; opPerformed = <span class="keyword">true</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</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="l00357"></a><span class="lineno"> 357</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="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; Data <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = dataOp(lhsPts, rhsPts);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> resultId;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="comment">// Intern points-to set: check if result already exists.</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</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="l00364"></a><span class="lineno"> 364</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="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; resultId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">newPointsToId</a>();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</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="l00369"></a><span class="lineno"> 369</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="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="comment">// Cache the result, for hash-consing.</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; opCache[operands] = resultId;</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="keywordflow">return</span> resultId;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</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>
657
- <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#l00404">PersistentPointsToCache.h:404</a></div></div>
658
- <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#l00402">PersistentPointsToCache.h:402</a></div></div>
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>
659
670
  <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>
660
671
  <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>
661
- <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#l00331">PersistentPointsToCache.h:331</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>
662
673
  </div><!-- fragment -->
663
674
  </div>
664
675
  </div>
@@ -691,19 +702,22 @@ template&lt;typename Data&gt; </div>
691
702
  <p>Print statistics on operations and points-to set numbers. </p>
692
703
 
693
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>
694
- <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;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</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="l00305"></a><span class="lineno"> 305</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="l00306"></a><span class="lineno"> 306</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="l00307"></a><span class="lineno"> 307</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="l00308"></a><span class="lineno"> 308</span>&#160;</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;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="l00310"></a><span class="lineno"> 310</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="l00311"></a><span class="lineno"> 311</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="l00312"></a><span class="lineno"> 312</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="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; std::cout.flush();</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</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#l00420">PersistentPointsToCache.h:420</a></div></div>
695
- <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#l00423">PersistentPointsToCache.h:423</a></div></div>
696
- <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#l00422">PersistentPointsToCache.h:422</a></div></div>
697
- <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#l00417">PersistentPointsToCache.h:417</a></div></div>
698
- <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#l00419">PersistentPointsToCache.h:419</a></div></div>
699
- <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#l00428">PersistentPointsToCache.h:428</a></div></div>
700
- <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#l00426">PersistentPointsToCache.h:426</a></div></div>
701
- <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#l00425">PersistentPointsToCache.h:425</a></div></div>
702
- <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#l00402">PersistentPointsToCache.h:402</a></div></div>
703
- <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#l00421">PersistentPointsToCache.h:421</a></div></div>
704
- <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#l00424">PersistentPointsToCache.h:424</a></div></div>
705
- <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#l00427">PersistentPointsToCache.h:427</a></div></div>
706
- <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#l00418">PersistentPointsToCache.h:418</a></div></div>
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>
707
721
  </div><!-- fragment -->
708
722
  </div>
709
723
  </div>
@@ -736,8 +750,8 @@ template&lt;typename Data&gt; </div>
736
750
  <p>Remaps all points-to sets stored in the cache to the current mapping. </p>
737
751
 
738
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>
739
- <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#l00404">PersistentPointsToCache.h:404</a></div></div>
740
- <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#l00402">PersistentPointsToCache.h:402</a></div></div>
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>
741
755
  <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>
742
756
  </div><!-- fragment -->
743
757
  </div>
@@ -771,14 +785,14 @@ template&lt;typename Data&gt; </div>
771
785
  <p>Resets the cache removing everything except the emptyData it was initialised with. </p>
772
786
 
773
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>
774
- <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#l00409">PersistentPointsToCache.h:409</a></div></div>
775
- <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#l00404">PersistentPointsToCache.h:404</a></div></div>
776
- <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#l00407">PersistentPointsToCache.h:407</a></div></div>
777
- <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#l00414">PersistentPointsToCache.h:414</a></div></div>
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>
778
792
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00037">PersistentPointsToCache.h:37</a></div></div>
779
- <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#l00379">PersistentPointsToCache.h:379</a></div></div>
780
- <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#l00402">PersistentPointsToCache.h:402</a></div></div>
781
- <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#l00411">PersistentPointsToCache.h:411</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>
782
796
  </div><!-- fragment -->
783
797
  </div>
784
798
  </div>
@@ -821,16 +835,17 @@ template&lt;typename Data&gt; </div>
821
835
  <p>Unions lhs and rhs and returns their union's ID. </p>
822
836
 
823
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>
824
- <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#ad045302497c76b9dfa656882cc0192dd">propertyUnions</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#ad045302497c76b9dfa656882cc0192dd">propertyUnions</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#l00420">PersistentPointsToCache.h:420</a></div></div>
825
- <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#l00341">PersistentPointsToCache.h:341</a></div></div>
826
- <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#l00417">PersistentPointsToCache.h:417</a></div></div>
827
- <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#l00419">PersistentPointsToCache.h:419</a></div></div>
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>
828
842
  <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>
829
- <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#l00407">PersistentPointsToCache.h:407</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>
830
844
  <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>
831
846
  <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>
832
847
  <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>
833
- <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#l00418">PersistentPointsToCache.h:418</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>
834
849
  </div><!-- fragment -->
835
850
  </div>
836
851
  </div>
@@ -859,7 +874,7 @@ template&lt;typename Data&gt; </div>
859
874
 
860
875
  <p>Maps two IDs to their relative complement. </p>
861
876
 
862
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00409">409</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
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>
863
878
 
864
879
  </div>
865
880
  </div>
@@ -887,7 +902,7 @@ template&lt;typename Data&gt; </div>
887
902
 
888
903
  <p>Used to generate new PointsToIDs. Any non-zero is valid. </p>
889
904
 
890
- <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>
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>
891
906
 
892
907
  </div>
893
908
  </div>
@@ -914,7 +929,7 @@ template&lt;typename Data&gt; </div>
914
929
  </div><div class="memdoc">
915
930
  <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>
916
931
 
917
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00402">402</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
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>
918
933
 
919
934
  </div>
920
935
  </div>
@@ -942,7 +957,7 @@ template&lt;typename Data&gt; </div>
942
957
 
943
958
  <p>Maps two IDs to their intersection. Keys must be sorted. </p>
944
959
 
945
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00411">411</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
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>
946
961
 
947
962
  </div>
948
963
  </div>
@@ -968,7 +983,7 @@ template&lt;typename Data&gt; </div>
968
983
  </table>
969
984
  </div><div class="memdoc">
970
985
 
971
- <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>
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>
972
987
 
973
988
  </div>
974
989
  </div>
@@ -994,7 +1009,7 @@ template&lt;typename Data&gt; </div>
994
1009
  </table>
995
1010
  </div><div class="memdoc">
996
1011
 
997
- <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>
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>
998
1013
 
999
1014
  </div>
1000
1015
  </div>
@@ -1020,7 +1035,85 @@ template&lt;typename Data&gt; </div>
1020
1035
  </table>
1021
1036
  </div><div class="memdoc">
1022
1037
 
1023
- <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>
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>
1039
+
1040
+ </div>
1041
+ </div>
1042
+ <a id="ad9a761bcece141764322247cc326bcbe"></a>
1043
+ <h2 class="memtitle"><span class="permalink"><a href="#ad9a761bcece141764322247cc326bcbe">&#9670;&nbsp;</a></span>preemptiveComplements</h2>
1044
+
1045
+ <div class="memitem">
1046
+ <div class="memproto">
1047
+ <div class="memtemplate">
1048
+ template&lt;typename Data&gt; </div>
1049
+ <table class="mlabels">
1050
+ <tr>
1051
+ <td class="mlabels-left">
1052
+ <table class="memname">
1053
+ <tr>
1054
+ <td class="memname"><a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="el" href="classSVF_1_1PersistentPointsToCache.html">SVF::PersistentPointsToCache</a>&lt; Data &gt;::preemptiveComplements</td>
1055
+ </tr>
1056
+ </table>
1057
+ </td>
1058
+ <td class="mlabels-right">
1059
+ <span class="mlabels"><span class="mlabel">private</span></span> </td>
1060
+ </tr>
1061
+ </table>
1062
+ </div><div class="memdoc">
1063
+
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>
1065
+
1066
+ </div>
1067
+ </div>
1068
+ <a id="ae80c5037ff49f70d9a87a83a8fcb07c7"></a>
1069
+ <h2 class="memtitle"><span class="permalink"><a href="#ae80c5037ff49f70d9a87a83a8fcb07c7">&#9670;&nbsp;</a></span>preemptiveIntersections</h2>
1070
+
1071
+ <div class="memitem">
1072
+ <div class="memproto">
1073
+ <div class="memtemplate">
1074
+ template&lt;typename Data&gt; </div>
1075
+ <table class="mlabels">
1076
+ <tr>
1077
+ <td class="mlabels-left">
1078
+ <table class="memname">
1079
+ <tr>
1080
+ <td class="memname"><a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="el" href="classSVF_1_1PersistentPointsToCache.html">SVF::PersistentPointsToCache</a>&lt; Data &gt;::preemptiveIntersections</td>
1081
+ </tr>
1082
+ </table>
1083
+ </td>
1084
+ <td class="mlabels-right">
1085
+ <span class="mlabels"><span class="mlabel">private</span></span> </td>
1086
+ </tr>
1087
+ </table>
1088
+ </div><div class="memdoc">
1089
+
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>
1091
+
1092
+ </div>
1093
+ </div>
1094
+ <a id="a98dad4f4d39904d90564f1a2279ac664"></a>
1095
+ <h2 class="memtitle"><span class="permalink"><a href="#a98dad4f4d39904d90564f1a2279ac664">&#9670;&nbsp;</a></span>preemptiveUnions</h2>
1096
+
1097
+ <div class="memitem">
1098
+ <div class="memproto">
1099
+ <div class="memtemplate">
1100
+ template&lt;typename Data&gt; </div>
1101
+ <table class="mlabels">
1102
+ <tr>
1103
+ <td class="mlabels-left">
1104
+ <table class="memname">
1105
+ <tr>
1106
+ <td class="memname"><a class="el" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="el" href="classSVF_1_1PersistentPointsToCache.html">SVF::PersistentPointsToCache</a>&lt; Data &gt;::preemptiveUnions</td>
1107
+ </tr>
1108
+ </table>
1109
+ </td>
1110
+ <td class="mlabels-right">
1111
+ <span class="mlabels"><span class="mlabel">private</span></span> </td>
1112
+ </tr>
1113
+ </table>
1114
+ </div><div class="memdoc">
1115
+
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>
1024
1117
 
1025
1118
  </div>
1026
1119
  </div>
@@ -1046,7 +1139,7 @@ template&lt;typename Data&gt; </div>
1046
1139
  </table>
1047
1140
  </div><div class="memdoc">
1048
1141
 
1049
- <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>
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>
1050
1143
 
1051
1144
  </div>
1052
1145
  </div>
@@ -1072,7 +1165,7 @@ template&lt;typename Data&gt; </div>
1072
1165
  </table>
1073
1166
  </div><div class="memdoc">
1074
1167
 
1075
- <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>
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>
1076
1169
 
1077
1170
  </div>
1078
1171
  </div>
@@ -1098,7 +1191,7 @@ template&lt;typename Data&gt; </div>
1098
1191
  </table>
1099
1192
  </div><div class="memdoc">
1100
1193
 
1101
- <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>
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>
1102
1195
 
1103
1196
  </div>
1104
1197
  </div>
@@ -1126,7 +1219,7 @@ template&lt;typename Data&gt; </div>
1126
1219
 
1127
1220
  <p>Maps points-to sets to their corresponding ID. </p>
1128
1221
 
1129
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00404">404</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
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>
1130
1223
 
1131
1224
  </div>
1132
1225
  </div>
@@ -1152,7 +1245,7 @@ template&lt;typename Data&gt; </div>
1152
1245
  </table>
1153
1246
  </div><div class="memdoc">
1154
1247
 
1155
- <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>
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>
1156
1249
 
1157
1250
  </div>
1158
1251
  </div>
@@ -1178,7 +1271,7 @@ template&lt;typename Data&gt; </div>
1178
1271
  </table>
1179
1272
  </div><div class="memdoc">
1180
1273
 
1181
- <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>
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>
1182
1275
 
1183
1276
  </div>
1184
1277
  </div>
@@ -1204,7 +1297,7 @@ template&lt;typename Data&gt; </div>
1204
1297
  </table>
1205
1298
  </div><div class="memdoc">
1206
1299
 
1207
- <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>
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>
1208
1301
 
1209
1302
  </div>
1210
1303
  </div>
@@ -1232,7 +1325,7 @@ template&lt;typename Data&gt; </div>
1232
1325
 
1233
1326
  <p>Maps two IDs to their union. Keys must be sorted. </p>
1234
1327
 
1235
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00407">407</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
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>
1236
1329
 
1237
1330
  </div>
1238
1331
  </div>
@@ -1258,7 +1351,7 @@ template&lt;typename Data&gt; </div>
1258
1351
  </table>
1259
1352
  </div><div class="memdoc">
1260
1353
 
1261
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00422">422</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
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>
1262
1355
 
1263
1356
  </div>
1264
1357
  </div>
@@ -1284,7 +1377,7 @@ template&lt;typename Data&gt; </div>
1284
1377
  </table>
1285
1378
  </div><div class="memdoc">
1286
1379
 
1287
- <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>
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>
1288
1381
 
1289
1382
  </div>
1290
1383
  </div>
@@ -1310,7 +1403,7 @@ template&lt;typename Data&gt; </div>
1310
1403
  </table>
1311
1404
  </div><div class="memdoc">
1312
1405
 
1313
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00418">418</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
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>
1314
1407
 
1315
1408
  </div>
1316
1409
  </div>