svf-tools 1.0.558 → 1.0.561

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 (327) hide show
  1. package/README.md +1 -1
  2. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +43 -43
  3. package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +2 -2
  4. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +16 -16
  6. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +18 -18
  8. package/SVF-doxygen/html/html/Andersen_8h_source.html +56 -56
  9. package/SVF-doxygen/html/html/CFLGrammar_8txt.html +8 -8
  10. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +10 -1
  11. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +3 -1
  12. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +44 -44
  14. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +43 -43
  15. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +12 -12
  16. package/SVF-doxygen/html/html/DDAClient_8h_source.html +36 -36
  17. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +19 -19
  18. package/SVF-doxygen/html/html/DDAPass_8h_source.html +21 -21
  19. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +51 -51
  20. package/SVF-doxygen/html/html/DDAStat_8h_source.html +51 -51
  21. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +111 -111
  22. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  23. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +2 -2
  24. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +5 -2
  25. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -2
  26. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +40 -40
  27. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +52 -52
  28. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +2 -2
  29. package/SVF-doxygen/html/html/FileChecker_8h_source.html +2 -2
  30. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  31. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +42 -42
  32. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +3 -3
  33. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +6 -6
  34. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +4 -4
  35. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
  36. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +34 -34
  39. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +114 -114
  40. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +7 -7
  42. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
  43. package/SVF-doxygen/html/html/MHP_8cpp_source.html +94 -94
  44. package/SVF-doxygen/html/html/MHP_8h_source.html +135 -135
  45. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +6 -6
  46. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
  47. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -2
  48. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +10 -10
  49. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +6 -6
  50. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +33 -33
  51. package/SVF-doxygen/html/html/MTAStat_8h_source.html +14 -14
  52. package/SVF-doxygen/html/html/MTA_8cpp_source.html +28 -28
  53. package/SVF-doxygen/html/html/MTA_8h_source.html +24 -24
  54. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +6 -6
  55. package/SVF-doxygen/html/html/MemPartition_8h_source.html +4 -4
  56. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +50 -50
  57. package/SVF-doxygen/html/html/MemRegion_8h_source.html +93 -93
  58. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +59 -59
  59. package/SVF-doxygen/html/html/MemSSA_8h_source.html +103 -103
  60. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +185 -185
  61. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
  63. package/SVF-doxygen/html/html/PCG_8cpp_source.html +14 -14
  64. package/SVF-doxygen/html/html/PCG_8h_source.html +52 -52
  65. package/SVF-doxygen/html/html/PEGGrammar_8txt.html +14 -32
  66. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +40 -40
  67. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +181 -181
  68. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +15 -15
  69. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +30 -30
  70. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  71. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -2
  73. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +60 -60
  74. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -2
  75. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  76. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  77. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +2 -2
  79. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +19 -19
  80. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
  81. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +12 -12
  82. package/SVF-doxygen/html/html/SVFG_8h_source.html +5 -5
  83. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
  84. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +3 -3
  86. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +2 -2
  87. package/SVF-doxygen/html/html/SaberCheckerAPI_8cpp_source.html +1 -1
  88. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  89. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +1 -1
  90. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +1 -1
  91. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
  92. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
  93. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
  94. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +66 -66
  95. package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +1 -1
  96. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +4 -4
  97. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +6 -6
  98. package/SVF-doxygen/html/html/TCT_8cpp_source.html +44 -44
  99. package/SVF-doxygen/html/html/TCT_8h_source.html +93 -93
  100. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  101. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +2 -2
  102. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +2 -2
  103. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +25 -25
  104. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +38 -38
  105. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
  106. package/SVF-doxygen/html/html/WPAStat_8h_source.html +2 -2
  107. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  108. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  109. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +13 -10
  110. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +190 -2
  111. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +22 -22
  112. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +102 -102
  113. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +43 -43
  114. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +20 -20
  115. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +6 -6
  116. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +16 -16
  117. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +19 -19
  118. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +39 -39
  119. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +1 -1
  120. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +2 -2
  121. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +2 -2
  122. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  123. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +100 -100
  124. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +51 -51
  125. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +58 -58
  126. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +165 -165
  127. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +286 -286
  128. package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +26 -26
  129. package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +11 -11
  130. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +4 -4
  131. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +4 -4
  132. package/SVF-doxygen/html/html/classSVF_1_1EntryCHI.html +2 -2
  133. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +5 -4
  134. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +40 -5
  135. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +30 -30
  136. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +3 -3
  137. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +71 -71
  138. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +7 -7
  139. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +218 -218
  141. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  142. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  143. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +19 -19
  144. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +7 -7
  146. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +17 -17
  147. package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +2 -2
  148. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +334 -334
  149. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +9 -9
  150. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +246 -246
  151. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +7 -7
  152. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +200 -200
  153. package/SVF-doxygen/html/html/classSVF_1_1MSSACHI.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1MSSADEF.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1MSSAMU.html +2 -2
  156. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHI.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  158. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +53 -53
  159. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  160. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +22 -22
  161. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +181 -181
  162. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +44 -44
  163. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +23 -23
  164. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +267 -267
  165. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +18 -18
  166. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +128 -128
  167. package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +55 -55
  168. package/SVF-doxygen/html/html/classSVF_1_1MutableIncDFPTData.html +88 -88
  169. package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +78 -78
  170. package/SVF-doxygen/html/html/classSVF_1_1MutableVersionedPTData.html +77 -77
  171. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +131 -131
  172. package/SVF-doxygen/html/html/classSVF_1_1PTData.html +32 -32
  173. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +107 -107
  174. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +66 -66
  175. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +84 -84
  176. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +77 -77
  177. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +134 -134
  178. package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +77 -77
  179. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +3 -3
  180. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +161 -161
  181. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +7 -7
  182. package/SVF-doxygen/html/html/classSVF_1_1RetMU.html +2 -2
  183. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +22 -22
  184. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  185. package/SVF-doxygen/html/html/classSVF_1_1SVFGNodeLockSpan.html +23 -23
  186. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +5 -5
  187. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  188. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +157 -157
  189. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +15 -15
  190. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +2 -2
  191. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +264 -264
  192. package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +13 -13
  193. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +20 -20
  194. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +100 -100
  196. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +8 -8
  197. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +11 -11
  199. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +6 -6
  200. package/SVF-doxygen/html/html/dda_8cpp.html +2 -2
  201. package/SVF-doxygen/html/html/dda_8cpp_source.html +2 -2
  202. package/SVF-doxygen/html/html/functions_a.html +11 -5
  203. package/SVF-doxygen/html/html/functions_c.html +21 -18
  204. package/SVF-doxygen/html/html/functions_f.html +6 -6
  205. package/SVF-doxygen/html/html/functions_func.html +16 -10
  206. package/SVF-doxygen/html/html/functions_func_c.html +19 -16
  207. package/SVF-doxygen/html/html/functions_func_i.html +11 -8
  208. package/SVF-doxygen/html/html/functions_i.html +11 -8
  209. package/SVF-doxygen/html/html/functions_l.html +5 -5
  210. package/SVF-doxygen/html/html/functions_p.html +6 -6
  211. package/SVF-doxygen/html/html/functions_r.html +3 -7
  212. package/SVF-doxygen/html/html/functions_s.html +16 -14
  213. package/SVF-doxygen/html/html/functions_v.html +6 -6
  214. package/SVF-doxygen/html/html/functions_w.html +11 -11
  215. package/SVF-doxygen/html/html/globals_g.html +3 -3
  216. package/SVF-doxygen/html/html/globals_v.html +1 -2
  217. package/SVF-doxygen/html/html/globals_vars.html +3 -4
  218. package/SVF-doxygen/html/html/mta_8cpp.html +2 -2
  219. package/SVF-doxygen/html/html/mta_8cpp_source.html +2 -2
  220. package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
  221. package/SVF-doxygen/html/html/search/all_1.js +2 -0
  222. package/SVF-doxygen/html/html/search/all_10.js +5 -5
  223. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  224. package/SVF-doxygen/html/html/search/all_12.js +8 -8
  225. package/SVF-doxygen/html/html/search/all_13.js +2 -2
  226. package/SVF-doxygen/html/html/search/all_14.js +1 -1
  227. package/SVF-doxygen/html/html/search/all_15.js +4 -4
  228. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  229. package/SVF-doxygen/html/html/search/all_3.js +1 -0
  230. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  231. package/SVF-doxygen/html/html/search/all_7.js +2 -2
  232. package/SVF-doxygen/html/html/search/all_9.js +2 -1
  233. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  234. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  235. package/SVF-doxygen/html/html/search/functions_0.js +2 -0
  236. package/SVF-doxygen/html/html/search/functions_2.js +1 -0
  237. package/SVF-doxygen/html/html/search/functions_8.js +1 -0
  238. package/SVF-doxygen/html/html/search/variables_13.js +1 -1
  239. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  240. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  241. package/SVF-doxygen/html/html/search/variables_7.js +2 -2
  242. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  243. package/SVF-doxygen/html/html/structSVF_1_1MemRegion_1_1equalMemRegion.html +3 -3
  244. package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html +4 -4
  245. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +15 -15
  246. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.html +1 -1
  247. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.html +1 -1
  248. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCT_01_5_01_4.html +2 -2
  249. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SVFGNodeLockSpan_01_4.html +3 -3
  250. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  251. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  252. package/include/CFL/CFLGraphBuilder.h +9 -0
  253. package/include/CFL/PEGGrammar.txt +4 -8
  254. package/include/DDA/ContextDDA.h +29 -0
  255. package/include/DDA/DDAClient.h +23 -0
  256. package/include/DDA/DDAPass.h +22 -0
  257. package/include/DDA/DDAStat.h +22 -0
  258. package/include/DDA/DDAVFSolver.h +22 -0
  259. package/include/DDA/FlowDDA.h +29 -0
  260. package/include/MSSA/MSSAMuChi.h +1 -1
  261. package/include/MSSA/MemPartition.h +1 -1
  262. package/include/MSSA/MemRegion.h +5 -1
  263. package/include/MSSA/MemSSA.h +7 -1
  264. package/include/MSSA/SVFGBuilder.h +1 -1
  265. package/include/MTA/FSMPTA.h +26 -0
  266. package/include/MTA/LockAnalysis.h +22 -0
  267. package/include/MTA/MHP.h +22 -0
  268. package/include/MTA/MTA.h +27 -1
  269. package/include/MTA/MTAStat.h +22 -0
  270. package/include/MTA/PCG.h +22 -0
  271. package/include/MTA/TCT.h +22 -0
  272. package/include/MemoryModel/AbstractPointsToDS.h +34 -0
  273. package/include/MemoryModel/ConditionalPT.h +1 -1
  274. package/include/MemoryModel/LocationSet.h +1 -1
  275. package/include/MemoryModel/MutablePointsToDS.h +32 -0
  276. package/include/MemoryModel/PAGBuilderFromFile.h +2 -2
  277. package/include/MemoryModel/PersistentPointsToCache.h +3 -1
  278. package/include/MemoryModel/PersistentPointsToDS.h +10 -0
  279. package/include/MemoryModel/PointerAnalysis.h +1 -1
  280. package/include/MemoryModel/PointerAnalysisImpl.h +1 -1
  281. package/include/MemoryModel/SVFStatements.h +1 -1
  282. package/include/SABER/DoubleFreeChecker.h +1 -1
  283. package/include/SABER/FileChecker.h +1 -1
  284. package/include/SABER/LeakChecker.h +1 -1
  285. package/include/SABER/ProgSlice.h +8 -1
  286. package/include/SABER/SaberAnnotator.h +1 -1
  287. package/include/SABER/SaberCheckerAPI.h +1 -1
  288. package/include/SABER/SaberCondAllocator.h +1 -1
  289. package/include/SABER/SaberSVFGBuilder.h +1 -1
  290. package/include/SABER/SrcSnkDDA.h +8 -1
  291. package/include/SABER/SrcSnkSolver.h +1 -1
  292. package/include/Util/ExtAPI.h +3 -0
  293. package/include/Util/ExtAPI.json +1456 -44
  294. package/include/WPA/Andersen.h +5 -0
  295. package/include/WPA/TypeAnalysis.h +1 -1
  296. package/include/WPA/VersionedFlowSensitive.h +4 -0
  297. package/lib/CFL/CFLGraphBuilder.cpp +44 -0
  298. package/lib/DDA/ContextDDA.cpp +22 -0
  299. package/lib/DDA/DDAClient.cpp +22 -0
  300. package/lib/DDA/DDAPass.cpp +23 -0
  301. package/lib/DDA/DDAStat.cpp +22 -0
  302. package/lib/DDA/FlowDDA.cpp +22 -0
  303. package/lib/MTA/FSMPTA.cpp +22 -0
  304. package/lib/MTA/LockAnalysis.cpp +22 -0
  305. package/lib/MTA/MHP.cpp +23 -1
  306. package/lib/MTA/MTA.cpp +23 -0
  307. package/lib/MTA/MTAStat.cpp +22 -0
  308. package/lib/MTA/PCG.cpp +22 -0
  309. package/lib/MTA/TCT.cpp +23 -0
  310. package/lib/MemoryModel/LocationSet.cpp +1 -1
  311. package/lib/MemoryModel/PAGBuilderFromFile.cpp +1 -1
  312. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  313. package/lib/MemoryModel/PointerAnalysisImpl.cpp +23 -0
  314. package/lib/SABER/DoubleFreeChecker.cpp +1 -1
  315. package/lib/SABER/FileChecker.cpp +1 -1
  316. package/lib/SABER/LeakChecker.cpp +1 -1
  317. package/lib/SABER/ProgSlice.cpp +1 -1
  318. package/lib/SABER/SaberAnnotator.cpp +1 -1
  319. package/lib/SABER/SaberCheckerAPI.cpp +1 -1
  320. package/lib/SABER/SaberCondAllocator.cpp +1 -1
  321. package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
  322. package/lib/SABER/SrcSnkDDA.cpp +1 -1
  323. package/lib/Util/ExtAPI.cpp +42 -4
  324. package/lib/WPA/Steensgaard.cpp +22 -0
  325. package/lib/WPA/TypeAnalysis.cpp +1 -1
  326. package/lib/WPA/WPAPass.cpp +1 -1
  327. package/package.json +1 -1
@@ -66,151 +66,151 @@ $(function() {
66
66
  <div class="title">LockAnalysis.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="LockAnalysis_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * LockAnalysis.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: 26 Aug 2015</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: pengd</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef INCLUDE_MTA_LockAnalysis_H_</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#define INCLUDE_MTA_LockAnalysis_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="TCT_8h.html">MTA/TCT.h</a>&quot;</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="DataFlowUtil_8h.html">SVF-FE/DataFlowUtil.h</a>&quot;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html"> 23</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791"> 28</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791">ValDomain</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791ae16d4995f32298086fd37b4759ec069c"> 30</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791ae16d4995f32298086fd37b4759ec069c">Empty</a>, <span class="comment">// initial(dummy) state</span></div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791a2709e7eb7ea9829c7e649e6dd86d6a48"> 31</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791a2709e7eb7ea9829c7e649e6dd86d6a48">TDLocked</a>, <span class="comment">// stmt is locked</span></div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791ac531588e8556653306e03ccaacb83dac"> 32</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791ac531588e8556653306e03ccaacb83dac">TDUnlocked</a>, <span class="comment">// stmt is unlocked</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; };</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ab468a6a0f1705c000dc4260097222b06"> 35</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> <a class="code" href="classSVF_1_1LockAnalysis.html#ab468a6a0f1705c000dc4260097222b06">CxtLock</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82"> 36</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CxtProc.html">CxtProc</a> <a class="code" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">CxtLockProc</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a4bde0f39a6b5cf83e0011d7ef272c685"> 38</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a4bde0f39a6b5cf83e0011d7ef272c685">LockSet</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb"> 39</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1TCT.html#a13d01a1747d8ee1521596aeb36bdb655">TCT::InstVec</a> <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811"> 40</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Instruction*&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">InstSet</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ae675d0ebf4eac597487ce83e667a8229"> 41</a></span>&#160; <span class="keyword">typedef</span> InstSet <a class="code" href="classSVF_1_1LockAnalysis.html#ae675d0ebf4eac597487ce83e667a8229">CISpan</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#acdcc3fc4b90e7f67cfb9601ddc31d5f8"> 42</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Instruction*, CISpan&gt;</a><a class="code" href="classSVF_1_1LockAnalysis.html#acdcc3fc4b90e7f67cfb9601ddc31d5f8">CILockToSpan</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a561bb2fbfbeee9117efad7c7c70871d8"> 43</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a561bb2fbfbeee9117efad7c7c70871d8">FunSet</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a281e41a6a1cdc21c214aafa6ea23b343"> 44</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Instruction*, InstSet&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a281e41a6a1cdc21c214aafa6ea23b343">InstToInstSetMap</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a451d9b41fd048e11615ea47872f614c9"> 45</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;CxtStmt, ValDomain&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a451d9b41fd048e11615ea47872f614c9">CxtStmtToLockFlagMap</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ae2218961699a4b4385f47fb039005dbe"> 46</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;CxtStmt&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#ae2218961699a4b4385f47fb039005dbe">CxtStmtWorkList</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a07b7d49e1fbe3e5dc694b6aadbee05b8"> 47</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;CxtStmt&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a07b7d49e1fbe3e5dc694b6aadbee05b8">LockSpan</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a42ed881d4cd79eae099266a9e171aeb2"> 48</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;CxtStmt&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a42ed881d4cd79eae099266a9e171aeb2">CxtStmtSet</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83"> 49</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;CxtLock&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">CxtLockSet</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a7335d5b13a6cb1dcde9706f30b8a4826"> 51</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;CxtLock, LockSpan&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a7335d5b13a6cb1dcde9706f30b8a4826">CxtLockToSpan</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ab782401c6521a2810e28ac602710ac22"> 52</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;CxtLock, NodeBS&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#ab782401c6521a2810e28ac602710ac22">CxtLockToLockSet</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a1f9ae41c4ed7450d0d8b29cd20a6ef25"> 53</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Instruction*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a1f9ae41c4ed7450d0d8b29cd20a6ef25">LockSiteToLockSet</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a32543eb205653a65bb71de55d0471a1d"> 54</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Instruction*, LockSpan&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a32543eb205653a65bb71de55d0471a1d">InstToCxtStmtSet</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;CxtStmt, CxtLockSet&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">CxtStmtToCxtLockSet</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a058f3518f0b861c46c99095922e373f0"> 56</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;CxtLockProc&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a058f3518f0b861c46c99095922e373f0">CxtLockProcVec</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a75c8b645bdca401896d731a1af8dc464"> 57</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;CxtLockProc&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a75c8b645bdca401896d731a1af8dc464">CxtLockProcSet</a>;</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"><a class="line" href="classSVF_1_1LockAnalysis.html#af940303bf8ebb679aa6e50475873eaa1"> 59</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Instruction*, CxtStmtSet&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#af940303bf8ebb679aa6e50475873eaa1">InstToCxtStmt</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#af8aff31058caba691c127b8aef297b43"> 61</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#af8aff31058caba691c127b8aef297b43">LockAnalysis</a>(<a class="code" href="classSVF_1_1TCT.html">TCT</a>* t) : <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>(t), <a class="code" href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2">lockTime</a>(0),<a class="code" href="classSVF_1_1LockAnalysis.html#ad648ad9cda4070f9aec1addef0067627">numOfTotalQueries</a>(0), <a class="code" href="classSVF_1_1LockAnalysis.html#a80c56ebc6b9b594e97b56767f451ff8b">numOfLockedQueries</a>(0), <a class="code" href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d">lockQueriesTime</a>(0)</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; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ad1516b6cb1dbd06b8dff04ae3c944621">analyze</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a8a34f7544f22a87e1caf010c34abda75">analyzeIntraProcedualLock</a>();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a6febb0bb12f4983cd54b3bd310ce65d2">intraForwardTraverse</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* lock, InstSet&amp; unlockset, InstSet&amp; forwardInsts);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a5f693c893f3701e1e025881f91193d53">intraBackwardTraverse</a>(<span class="keyword">const</span> InstSet&amp; unlockset, InstSet&amp; backwardInsts);</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="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ae03db88ef0ad0da2c31cf1623b32165f">collectCxtLock</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a00ccd89eff3fe8fec397df101f927cbe">analyzeLockSpanCxtStmt</a>();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aa8683de99ad02fb75b175b0bb54e5f7d">collectLockUnlocksites</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a271506d5032033efae684b0d729f5b3e">buildCandidateFuncSetforLock</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aa91522e95e8a9450032bfeaf7a3e491c">isIntraLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* lock)<span class="keyword"> const</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; assert(<a class="code" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">locksites</a>.find(lock)!=<a class="code" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">locksites</a>.end() &amp;&amp; <span class="stringliteral">&quot;not a lock site?&quot;</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#afc4212873c3e05ac9506aac0a25f515a">ciLocktoSpan</a>.find(lock)!=<a class="code" href="classSVF_1_1LockAnalysis.html#afc4212873c3e05ac9506aac0a25f515a">ciLocktoSpan</a>.end();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ab28428444170091d2c65572263b9f40b"> 89</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ab28428444170091d2c65572263b9f40b">addIntraLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* lockSite, <span class="keyword">const</span> InstSet&amp; stmts)</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">for</span>(InstSet::const_iterator it = stmts.begin(), eit = stmts.end(); it!=eit; ++it)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">instCILocksMap</a>[*it].insert(lockSite);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#afc4212873c3e05ac9506aac0a25f515a">ciLocktoSpan</a>[lockSite].insert(*it);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a0cc6e4b4ab78f3c54b68fe35adb02957"> 99</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a0cc6e4b4ab78f3c54b68fe35adb02957">addCondIntraLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* lockSite, <span class="keyword">const</span> InstSet&amp; stmts)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span>(InstSet::const_iterator it = stmts.begin(), eit = stmts.end(); it!=eit; ++it)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a5a4167dd5dbd0017a4725c8774a5b522">instTocondCILocksMap</a>[*it].insert(lockSite);</div><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; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ac33c03c9d4a978891009ae919559d567"> 108</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ac33c03c9d4a978891009ae919559d567">isInsideIntraLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* stmt)<span class="keyword"> const</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">instCILocksMap</a>.find(stmt)!=<a class="code" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">instCILocksMap</a>.end() || <a class="code" href="classSVF_1_1LockAnalysis.html#af3b0c1b628bac48d07c24008fd9edc4f">isInsideCondIntraLock</a>(stmt);</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;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#af3b0c1b628bac48d07c24008fd9edc4f"> 114</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#af3b0c1b628bac48d07c24008fd9edc4f">isInsideCondIntraLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* stmt)<span class="keyword"> const</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a5a4167dd5dbd0017a4725c8774a5b522">instTocondCILocksMap</a>.find(stmt)!=<a class="code" href="classSVF_1_1LockAnalysis.html#a5a4167dd5dbd0017a4725c8774a5b522">instTocondCILocksMap</a>.end();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ad8e7c32cb1163f4917124fed5cf6c3ab"> 119</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> InstSet&amp; <a class="code" href="classSVF_1_1LockAnalysis.html#ad8e7c32cb1163f4917124fed5cf6c3ab">getIntraLockSet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* stmt)<span class="keyword"> const</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; InstToInstSetMap::const_iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">instCILocksMap</a>.find(stmt);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; assert(it!=<a class="code" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">instCILocksMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;intralock not found!&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a177b10a617c275a9c2c2ed5e9b10d78a">addCxtLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; cxt,<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</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; CxtLock cxtlock(cxt,inst);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">cxtLockset</a>.insert(cxtlock);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;LockAnalysis Process new lock &quot;</span>; cxtlock.<a class="code" href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">dump</a>());</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a6c918786d065309e8a7b13759f410a09"> 138</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a6c918786d065309e8a7b13759f410a09">hasCxtLock</a>(<span class="keyword">const</span> CxtLock&amp; cxtLock)<span class="keyword"> const</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">cxtLockset</a>.find(cxtLock)!=<a class="code" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">cxtLockset</a>.end();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#af45f3c22edce16913ccbdd7015a06076"> 144</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#af45f3c22edce16913ccbdd7015a06076">intersects</a>(<span class="keyword">const</span> CxtLockSet&amp; lockset1,<span class="keyword">const</span> CxtLockSet&amp; lockset2)<span class="keyword"> const</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">for</span>(CxtLockSet::const_iterator it = lockset1.begin(), eit = lockset1.end(); it!=eit; ++it)</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; <span class="keyword">const</span> CxtLock&amp; lock = *it;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">for</span>(CxtLockSet::const_iterator lit = lockset2.begin(), elit = lockset2.end(); lit!=elit; ++lit)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span>(lock==*lit)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a4424f27444c12dce8071c56a95c664bf"> 158</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a4424f27444c12dce8071c56a95c664bf">alias</a>(<span class="keyword">const</span> CxtLockSet&amp; lockset1,<span class="keyword">const</span> CxtLockSet&amp; lockset2)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span>(CxtLockSet::const_iterator it = lockset1.begin(), eit = lockset1.end(); it!=eit; ++it)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">const</span> CxtLock&amp; lock = *it;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">for</span>(CxtLockSet::const_iterator lit = lockset2.begin(), elit = lockset2.end(); lit!=elit; ++lit)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(lock,*lit))</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164"> 174</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">isLockCandidateFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a484eb7b6f49f47a3e71054c3b798a47a">lockcandidateFuncSet</a>.find(fun)!=<a class="code" href="classSVF_1_1LockAnalysis.html#a484eb7b6f49f47a3e71054c3b798a47a">lockcandidateFuncSet</a>.end();</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="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a0af0f5bf91f4ae175b89ef24c27c987a">hasCxtStmtfromInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; InstToCxtStmtSet::const_iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">instToCxtStmtSet</a>.find(inst);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> (it != <a class="code" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">instToCxtStmtSet</a>.end());</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d"> 187</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CxtStmtSet&amp; <a class="code" href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d">getCxtStmtfromInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; InstToCxtStmtSet::const_iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">instToCxtStmtSet</a>.find(inst);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; assert(it != <a class="code" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">instToCxtStmtSet</a>.end());</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</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"><a class="line" href="classSVF_1_1LockAnalysis.html#a395df7174e06cad1971e6a81587ca043"> 193</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a395df7174e06cad1971e6a81587ca043">hasCxtLockfromCxtStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts)<span class="keyword"> const</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; CxtStmtToCxtLockSet::const_iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>.find(cts);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> (it != <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>.end());</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96"> 198</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CxtLockSet&amp; <a class="code" href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96">getCxtLockfromCxtStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts)<span class="keyword"> const</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; CxtStmtToCxtLockSet::const_iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>.find(cts);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; assert(it != <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>.end());</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a0809f300ab80173523b34226bb832bd2"> 204</a></span>&#160; <span class="keyword">inline</span> CxtLockSet&amp; <a class="code" href="classSVF_1_1LockAnalysis.html#a0809f300ab80173523b34226bb832bd2">getCxtLockfromCxtStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts)</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; CxtStmtToCxtLockSet::iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>.find(cts);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; assert(it != <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>.end());</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a718d6f2f55c1e2e7eb619c3e056ab458"> 211</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a718d6f2f55c1e2e7eb619c3e056ab458">addCxtStmtToSpan</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts, <span class="keyword">const</span> CxtLock&amp; cl)</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; <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>[cl].insert(cts);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>[cts].insert(cl).second;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a0b21446e6d5dfc1b5d0ebd75895225dd"> 217</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a0b21446e6d5dfc1b5d0ebd75895225dd">removeCxtStmtToSpan</a>(<a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts, <span class="keyword">const</span> CxtLock&amp; cl)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordtype">bool</span> find = <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>[cts].find(cl)!=<a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>[cts].end();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span>(find)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>[cts].erase(cl);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>[cl].erase(cts);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">return</span> find;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a7faecaee57dbef533dc46b2708305ab2"> 228</a></span>&#160; CxtStmtToCxtLockSet <a class="code" href="classSVF_1_1LockAnalysis.html#a7faecaee57dbef533dc46b2708305ab2">getCSTCLS</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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#aaa0f33f19d9f80eee98289119ba907d2"> 233</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aaa0f33f19d9f80eee98289119ba907d2">touchCxtStmt</a>(<a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>[cts];</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"><a class="line" href="classSVF_1_1LockAnalysis.html#af8ada4a73bf132e1adeef7aa0522f596"> 237</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#af8ada4a73bf132e1adeef7aa0522f596">hasSpanfromCxtLock</a>(<span class="keyword">const</span> CxtLock&amp; cl)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>.find(cl) != <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>.end();</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"><a class="line" href="classSVF_1_1LockAnalysis.html#ae7942c801e05357bb63f08c24489daf6"> 241</a></span>&#160; <span class="keyword">inline</span> LockSpan&amp; <a class="code" href="classSVF_1_1LockAnalysis.html#ae7942c801e05357bb63f08c24489daf6">getSpanfromCxtLock</a>(<span class="keyword">const</span> CxtLock&amp; cl)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; assert(<a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>.find(cl) != <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>.end());</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>[cl];</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a86f06a790cf90ec897b896a79956e5b4"> 251</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a86f06a790cf90ec897b896a79956e5b4">hasOneCxtInLockSpan</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I, LockSpan lspan)<span class="keyword"> const</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1LockAnalysis.html#a0af0f5bf91f4ae175b89ef24c27c987a">hasCxtStmtfromInst</a>(I))</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">const</span> LockSpan ctsset = <a class="code" href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d">getCxtStmtfromInst</a>(I);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (LockSpan::const_iterator cts = ctsset.begin(), ects = ctsset.end(); cts != ects; cts++)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span>(lspan.find(*cts) != lspan.end())</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a33740d6dc51d24af2d0c8cb2fbf27db6"> 266</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a33740d6dc51d24af2d0c8cb2fbf27db6">hasAllCxtInLockSpan</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I, LockSpan lspan)<span class="keyword"> const</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1LockAnalysis.html#a0af0f5bf91f4ae175b89ef24c27c987a">hasCxtStmtfromInst</a>(I))</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">const</span> LockSpan ctsset = <a class="code" href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d">getCxtStmtfromInst</a>(I);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">for</span> (LockSpan::const_iterator cts = ctsset.begin(), ects = ctsset.end(); cts != ects; cts++)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span> (lspan.find(*cts) == lspan.end())</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a4d4501d62bf51475662b6ba66e6380aa">isProtectedByCommonLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i2);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a56405fa1fec68717958ed1c05dd34287">isProtectedByCommonCxtLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i2);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a56405fa1fec68717958ed1c05dd34287">isProtectedByCommonCxtLock</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cxtStmt1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cxtStmt2);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a842ddef4d1cb9c45555d949375627a48">isProtectedByCommonCILock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i2);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#af30d0dad3d17188de8c2cea9b004f3d3">isInSameSpan</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a4245d946dd694b59b5c8ef30b08cb1dd">isInSameCSSpan</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i2) <span class="keyword">const</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a4245d946dd694b59b5c8ef30b08cb1dd">isInSameCSSpan</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cxtStmt1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cxtStmt2) <span class="keyword">const</span>;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a65aca2bc12fc34203b16549653943eae">isInSameCISpan</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i2) <span class="keyword">const</span>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a3df63f936d488166109d73bdcf0437d5"> 295</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a3df63f936d488166109d73bdcf0437d5">getNumOfCxtLocks</a>()</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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">cxtLockset</a>.size();</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ac1b42b0a53feae04f848e5b0828ff01a">printLocks</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d"> 303</a></span>&#160; <a class="code" href="classSVF_1_1TCT.html">TCT</a>* <a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()</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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a52e79d50288bfa2d146072be53ed058b">handleFork</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a97b186f9417144557bb17c41d515a9f4">handleCall</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#acc3d402c68b9c22ab6d576b38c994fc6">handleRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ab99ef73905f35d4c20ca408586fc8680">handleCallRelation</a>(CxtLockProc&amp; clp, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* cgEdge, <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> call);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4"> 324</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(<span class="keyword">const</span> CxtLock&amp; cl1, <span class="keyword">const</span> CxtLock&amp; cl2)</div><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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(cl1.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>(), cl2.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ab5a541fb1585d475a89590cce66ba3b4"> 328</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ab5a541fb1585d475a89590cce66ba3b4">isAliasedLocks</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* i2)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a5b087b42340d1a1b2ee37339637709d3">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a6c01f259ad2379a422d7106ce0255eb8">alias</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#a785616f9c744d7249fd1080e5ed04d29">getLockVal</a>(i1), <a class="code" href="classSVF_1_1LockAnalysis.html#a785616f9c744d7249fd1080e5ed04d29">getLockVal</a>(i2));</div><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;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; tgr, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; src)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">const</span> CxtLockSet&amp; srclockset = <a class="code" href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96">getCxtLockfromCxtStmt</a>(src);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#a395df7174e06cad1971e6a81587ca043">hasCxtLockfromCxtStmt</a>(tgr)== <span class="keyword">false</span>)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">for</span>(CxtLockSet::const_iterator it = srclockset.begin(), eit = srclockset.end(); it!=eit; ++it)</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a718d6f2f55c1e2e7eb619c3e056ab458">addCxtStmtToSpan</a>(tgr,*it);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">else</span></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="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#aeb479eeac0fdde1486c78da68fc82383">intersect</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96">getCxtLockfromCxtStmt</a>(tgr),srclockset))</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736">pushToCTSWorkList</a>(tgr);</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; }</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#aeb479eeac0fdde1486c78da68fc82383"> 354</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aeb479eeac0fdde1486c78da68fc82383">intersect</a>(CxtLockSet&amp; tgrlockset, <span class="keyword">const</span> CxtLockSet&amp; srclockset)</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; CxtLockSet toBeDeleted;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">for</span>(CxtLockSet::const_iterator it = tgrlockset.begin(), eit = tgrlockset.end(); it!=eit; ++it)</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="keywordflow">if</span>(srclockset.find(*it)==srclockset.end())</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; toBeDeleted.insert(*it);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">for</span>(CxtLockSet::const_iterator it = toBeDeleted.begin(), eit = toBeDeleted.end(); it!=eit; ++it)</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; tgrlockset.erase(*it);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">if</span>(!toBeDeleted.empty())</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</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;</div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#adffd808458057544e3492c7afffeeebe"> 372</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#adffd808458057544e3492c7afffeeebe">clearFlagMap</a>()</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; <a class="code" href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a29d9fec1ea7b8e5456342522eea403ad">clear</a>();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a8a6559c998c0b6f8e851d10ae2ab4171"> 380</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a8a6559c998c0b6f8e851d10ae2ab4171">pushToCTPWorkList</a>(<span class="keyword">const</span> CxtLockProc&amp; clp)</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; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#ad459afc7dd1e6620739eeee2bc4c570e">isVisitedCTPs</a>(clp) == <span class="keyword">false</span>)</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#aa9f27774c021f4d65fb6a97627355bd7">visitedCTPs</a>.insert(clp);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e">clpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(clp);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ac3de5acfb887c17ebf1213a1c2c38b58"> 389</a></span>&#160; <span class="keyword">inline</span> CxtLockProc <a class="code" href="classSVF_1_1LockAnalysis.html#ac3de5acfb887c17ebf1213a1c2c38b58">popFromCTPWorkList</a>()</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; CxtLockProc clp = <a class="code" href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e">clpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span> clp;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ad459afc7dd1e6620739eeee2bc4c570e"> 394</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ad459afc7dd1e6620739eeee2bc4c570e">isVisitedCTPs</a>(<span class="keyword">const</span> CxtLockProc&amp; clp)<span class="keyword"> const</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aa9f27774c021f4d65fb6a97627355bd7">visitedCTPs</a>.find(clp) != <a class="code" href="classSVF_1_1LockAnalysis.html#aa9f27774c021f4d65fb6a97627355bd7">visitedCTPs</a>.end();</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736"> 402</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736">pushToCTSWorkList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cs)</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cs);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div><div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a469bf90e852061a7cd8551066d6be0d1"> 406</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a469bf90e852061a7cd8551066d6be0d1">popFromCTSWorkList</a>()</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> clp = <a class="code" href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> clp;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">pushCxt</a>(<a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; cxt, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a3299f1fe234e1d6b4341498575bddcbb">matchCxt</a>(<a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; cxt, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a935128c9952714fcc98febed491ee85d">validateResults</a>();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a6e34f3138e8ee558bb00d9d808afba16"> 421</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a6e34f3138e8ee558bb00d9d808afba16">isTDFork</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">isTDFork</a>(call);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div><div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772"> 426</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">isTDAcquire</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call)</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a9db4df7968ec179e5012794c58fdee70">isTDAcquire</a>(call);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ae312fa9ddb320674f7bc31e29aa474ed"> 431</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ae312fa9ddb320674f7bc31e29aa474ed">isTDRelease</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call)</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a38adae633d5aceddcca3b3a23ad66db9">isTDRelease</a>(call);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a785616f9c744d7249fd1080e5ed04d29"> 436</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1LockAnalysis.html#a785616f9c744d7249fd1080e5ed04d29">getLockVal</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a8f1c869eb42f7c89697cf2c7452ba9e9">getLockVal</a>(call);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div><div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938"> 441</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>();</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d"> 447</a></span>&#160; <a class="code" href="classSVF_1_1TCT.html">TCT</a>* <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d"> 450</a></span>&#160; CxtStmtWorkList <a class="code" href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">cxtStmtList</a>;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296"> 453</a></span>&#160; InstToCxtStmtSet <a class="code" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">instToCxtStmtSet</a>;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d"> 457</a></span>&#160; CxtLockSet <a class="code" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">cxtLockset</a>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0"> 462</a></span>&#160; CxtLockToSpan <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>;</div><div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc"> 463</a></span>&#160; CxtStmtToCxtLockSet <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;</div><div class="line"><a name="l00468"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e"> 468</a></span>&#160; CxtLockProcVec <a class="code" href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e">clpList</a>; </div><div class="line"><a name="l00469"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#aa9f27774c021f4d65fb6a97627355bd7"> 469</a></span>&#160; CxtLockProcSet <a class="code" href="classSVF_1_1LockAnalysis.html#aa9f27774c021f4d65fb6a97627355bd7">visitedCTPs</a>; </div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e"> 474</a></span>&#160; InstSet <a class="code" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">locksites</a>;</div><div class="line"><a name="l00475"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#aec459af1d1624df55ffc95cd75655780"> 475</a></span>&#160; InstSet <a class="code" href="classSVF_1_1LockAnalysis.html#aec459af1d1624df55ffc95cd75655780">unlocksites</a>;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a484eb7b6f49f47a3e71054c3b798a47a"> 480</a></span>&#160; FunSet <a class="code" href="classSVF_1_1LockAnalysis.html#a484eb7b6f49f47a3e71054c3b798a47a">lockcandidateFuncSet</a>;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#afc4212873c3e05ac9506aac0a25f515a"> 485</a></span>&#160; CILockToSpan <a class="code" href="classSVF_1_1LockAnalysis.html#afc4212873c3e05ac9506aac0a25f515a">ciLocktoSpan</a>;</div><div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef"> 486</a></span>&#160; InstToInstSetMap <a class="code" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">instCILocksMap</a>;</div><div class="line"><a name="l00487"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a5a4167dd5dbd0017a4725c8774a5b522"> 487</a></span>&#160; InstToInstSetMap <a class="code" href="classSVF_1_1LockAnalysis.html#a5a4167dd5dbd0017a4725c8774a5b522">instTocondCILocksMap</a>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00492"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2"> 492</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2">lockTime</a>;</div><div class="line"><a name="l00493"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ad648ad9cda4070f9aec1addef0067627"> 493</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1LockAnalysis.html#ad648ad9cda4070f9aec1addef0067627">numOfTotalQueries</a>;</div><div class="line"><a name="l00494"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a80c56ebc6b9b594e97b56767f451ff8b"> 494</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a80c56ebc6b9b594e97b56767f451ff8b">numOfLockedQueries</a>;</div><div class="line"><a name="l00495"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d"> 495</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d">lockQueriesTime</a>;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;};</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_MTA_LockAnalysis_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LockAnalysis_html_a5a4167dd5dbd0017a4725c8774a5b522"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a5a4167dd5dbd0017a4725c8774a5b522">SVF::LockAnalysis::instTocondCILocksMap</a></div><div class="ttdeci">InstToInstSetMap instTocondCILocksMap</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00487">LockAnalysis.h:487</a></div></div>
70
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a87c412a54f48e5314454cd1d44ef9b0e"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">SVF::LockAnalysis::locksites</a></div><div class="ttdeci">InstSet locksites</div><div class="ttdoc">Record all visited clps. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00474">LockAnalysis.h:474</a></div></div>
71
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac2fbbabca4506e28f706cf54b1614791ac531588e8556653306e03ccaacb83dac"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791ac531588e8556653306e03ccaacb83dac">SVF::LockAnalysis::TDUnlocked</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00032">LockAnalysis.h:32</a></div></div>
72
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_aaa0f33f19d9f80eee98289119ba907d2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aaa0f33f19d9f80eee98289119ba907d2">SVF::LockAnalysis::touchCxtStmt</a></div><div class="ttdeci">void touchCxtStmt(CxtStmt &amp;cts)</div><div class="ttdoc">Touch this context statement. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00233">LockAnalysis.h:233</a></div></div>
73
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a0b21446e6d5dfc1b5d0ebd75895225dd"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0b21446e6d5dfc1b5d0ebd75895225dd">SVF::LockAnalysis::removeCxtStmtToSpan</a></div><div class="ttdeci">bool removeCxtStmtToSpan(CxtStmt &amp;cts, const CxtLock &amp;cl)</div><div class="ttdoc">Add context-sensitive statement. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00217">LockAnalysis.h:217</a></div></div>
69
+ <a href="LockAnalysis_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- LockAnalysis.h -- Analysis of locksets-------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * LockAnalysis.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: 26 Aug 2015</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: pengd</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef INCLUDE_MTA_LockAnalysis_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define INCLUDE_MTA_LockAnalysis_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="TCT_8h.html">MTA/TCT.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="DataFlowUtil_8h.html">SVF-FE/DataFlowUtil.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html"> 45</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791"> 50</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791">ValDomain</a></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791ae16d4995f32298086fd37b4759ec069c"> 52</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791ae16d4995f32298086fd37b4759ec069c">Empty</a>, <span class="comment">// initial(dummy) state</span></div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791a2709e7eb7ea9829c7e649e6dd86d6a48"> 53</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791a2709e7eb7ea9829c7e649e6dd86d6a48">TDLocked</a>, <span class="comment">// stmt is locked</span></div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791ac531588e8556653306e03ccaacb83dac"> 54</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791ac531588e8556653306e03ccaacb83dac">TDUnlocked</a>, <span class="comment">// stmt is unlocked</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ab468a6a0f1705c000dc4260097222b06"> 57</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> <a class="code" href="classSVF_1_1LockAnalysis.html#ab468a6a0f1705c000dc4260097222b06">CxtLock</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82"> 58</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CxtProc.html">CxtProc</a> <a class="code" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">CxtLockProc</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a4bde0f39a6b5cf83e0011d7ef272c685"> 60</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a4bde0f39a6b5cf83e0011d7ef272c685">LockSet</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb"> 61</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1TCT.html#a13d01a1747d8ee1521596aeb36bdb655">TCT::InstVec</a> <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811"> 62</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Instruction*&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">InstSet</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ae675d0ebf4eac597487ce83e667a8229"> 63</a></span>&#160; <span class="keyword">typedef</span> InstSet <a class="code" href="classSVF_1_1LockAnalysis.html#ae675d0ebf4eac597487ce83e667a8229">CISpan</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#acdcc3fc4b90e7f67cfb9601ddc31d5f8"> 64</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Instruction*, CISpan&gt;</a><a class="code" href="classSVF_1_1LockAnalysis.html#acdcc3fc4b90e7f67cfb9601ddc31d5f8">CILockToSpan</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a561bb2fbfbeee9117efad7c7c70871d8"> 65</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const Function*&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a561bb2fbfbeee9117efad7c7c70871d8">FunSet</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a281e41a6a1cdc21c214aafa6ea23b343"> 66</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Instruction*, InstSet&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a281e41a6a1cdc21c214aafa6ea23b343">InstToInstSetMap</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a451d9b41fd048e11615ea47872f614c9"> 67</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;CxtStmt, ValDomain&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a451d9b41fd048e11615ea47872f614c9">CxtStmtToLockFlagMap</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ae2218961699a4b4385f47fb039005dbe"> 68</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;CxtStmt&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#ae2218961699a4b4385f47fb039005dbe">CxtStmtWorkList</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a07b7d49e1fbe3e5dc694b6aadbee05b8"> 69</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;CxtStmt&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a07b7d49e1fbe3e5dc694b6aadbee05b8">LockSpan</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a42ed881d4cd79eae099266a9e171aeb2"> 70</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;CxtStmt&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a42ed881d4cd79eae099266a9e171aeb2">CxtStmtSet</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83"> 71</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;CxtLock&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">CxtLockSet</a>;</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"><a class="line" href="classSVF_1_1LockAnalysis.html#a7335d5b13a6cb1dcde9706f30b8a4826"> 73</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;CxtLock, LockSpan&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a7335d5b13a6cb1dcde9706f30b8a4826">CxtLockToSpan</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ab782401c6521a2810e28ac602710ac22"> 74</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;CxtLock, NodeBS&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#ab782401c6521a2810e28ac602710ac22">CxtLockToLockSet</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a1f9ae41c4ed7450d0d8b29cd20a6ef25"> 75</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Instruction*, NodeBS&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a1f9ae41c4ed7450d0d8b29cd20a6ef25">LockSiteToLockSet</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a32543eb205653a65bb71de55d0471a1d"> 76</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Instruction*, LockSpan&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a32543eb205653a65bb71de55d0471a1d">InstToCxtStmtSet</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7"> 77</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;CxtStmt, CxtLockSet&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">CxtStmtToCxtLockSet</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a058f3518f0b861c46c99095922e373f0"> 78</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;CxtLockProc&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a058f3518f0b861c46c99095922e373f0">CxtLockProcVec</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a75c8b645bdca401896d731a1af8dc464"> 79</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;CxtLockProc&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a75c8b645bdca401896d731a1af8dc464">CxtLockProcSet</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#af940303bf8ebb679aa6e50475873eaa1"> 81</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const Instruction*, CxtStmtSet&gt;</a> <a class="code" href="classSVF_1_1LockAnalysis.html#af940303bf8ebb679aa6e50475873eaa1">InstToCxtStmt</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#af8aff31058caba691c127b8aef297b43"> 83</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#af8aff31058caba691c127b8aef297b43">LockAnalysis</a>(<a class="code" href="classSVF_1_1TCT.html">TCT</a>* t) : <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>(t), <a class="code" href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2">lockTime</a>(0),<a class="code" href="classSVF_1_1LockAnalysis.html#ad648ad9cda4070f9aec1addef0067627">numOfTotalQueries</a>(0), <a class="code" href="classSVF_1_1LockAnalysis.html#a80c56ebc6b9b594e97b56767f451ff8b">numOfLockedQueries</a>(0), <a class="code" href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d">lockQueriesTime</a>(0)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</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;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ad1516b6cb1dbd06b8dff04ae3c944621">analyze</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a8a34f7544f22a87e1caf010c34abda75">analyzeIntraProcedualLock</a>();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a6febb0bb12f4983cd54b3bd310ce65d2">intraForwardTraverse</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* lock, InstSet&amp; unlockset, InstSet&amp; forwardInsts);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a5f693c893f3701e1e025881f91193d53">intraBackwardTraverse</a>(<span class="keyword">const</span> InstSet&amp; unlockset, InstSet&amp; backwardInsts);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ae03db88ef0ad0da2c31cf1623b32165f">collectCxtLock</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a00ccd89eff3fe8fec397df101f927cbe">analyzeLockSpanCxtStmt</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aa8683de99ad02fb75b175b0bb54e5f7d">collectLockUnlocksites</a>();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a271506d5032033efae684b0d729f5b3e">buildCandidateFuncSetforLock</a>();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aa91522e95e8a9450032bfeaf7a3e491c">isIntraLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* lock)<span class="keyword"> const</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; assert(<a class="code" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">locksites</a>.find(lock)!=<a class="code" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">locksites</a>.end() &amp;&amp; <span class="stringliteral">&quot;not a lock site?&quot;</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#afc4212873c3e05ac9506aac0a25f515a">ciLocktoSpan</a>.find(lock)!=<a class="code" href="classSVF_1_1LockAnalysis.html#afc4212873c3e05ac9506aac0a25f515a">ciLocktoSpan</a>.end();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ab28428444170091d2c65572263b9f40b"> 111</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ab28428444170091d2c65572263b9f40b">addIntraLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* lockSite, <span class="keyword">const</span> InstSet&amp; stmts)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">for</span>(InstSet::const_iterator it = stmts.begin(), eit = stmts.end(); it!=eit; ++it)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">instCILocksMap</a>[*it].insert(lockSite);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#afc4212873c3e05ac9506aac0a25f515a">ciLocktoSpan</a>[lockSite].insert(*it);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a0cc6e4b4ab78f3c54b68fe35adb02957"> 121</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a0cc6e4b4ab78f3c54b68fe35adb02957">addCondIntraLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* lockSite, <span class="keyword">const</span> InstSet&amp; stmts)</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; <span class="keywordflow">for</span>(InstSet::const_iterator it = stmts.begin(), eit = stmts.end(); it!=eit; ++it)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a5a4167dd5dbd0017a4725c8774a5b522">instTocondCILocksMap</a>[*it].insert(lockSite);</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; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ac33c03c9d4a978891009ae919559d567"> 130</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ac33c03c9d4a978891009ae919559d567">isInsideIntraLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* stmt)<span class="keyword"> const</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">instCILocksMap</a>.find(stmt)!=<a class="code" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">instCILocksMap</a>.end() || <a class="code" href="classSVF_1_1LockAnalysis.html#af3b0c1b628bac48d07c24008fd9edc4f">isInsideCondIntraLock</a>(stmt);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#af3b0c1b628bac48d07c24008fd9edc4f"> 136</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#af3b0c1b628bac48d07c24008fd9edc4f">isInsideCondIntraLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* stmt)<span class="keyword"> const</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a5a4167dd5dbd0017a4725c8774a5b522">instTocondCILocksMap</a>.find(stmt)!=<a class="code" href="classSVF_1_1LockAnalysis.html#a5a4167dd5dbd0017a4725c8774a5b522">instTocondCILocksMap</a>.end();</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;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ad8e7c32cb1163f4917124fed5cf6c3ab"> 141</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> InstSet&amp; <a class="code" href="classSVF_1_1LockAnalysis.html#ad8e7c32cb1163f4917124fed5cf6c3ab">getIntraLockSet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* stmt)<span class="keyword"> const</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; InstToInstSetMap::const_iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">instCILocksMap</a>.find(stmt);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; assert(it!=<a class="code" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">instCILocksMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;intralock not found!&quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a177b10a617c275a9c2c2ed5e9b10d78a">addCxtLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; cxt,<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</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; CxtLock cxtlock(cxt,inst);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">cxtLockset</a>.insert(cxtlock);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;LockAnalysis Process new lock &quot;</span>; cxtlock.<a class="code" href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">dump</a>());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a6c918786d065309e8a7b13759f410a09"> 160</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a6c918786d065309e8a7b13759f410a09">hasCxtLock</a>(<span class="keyword">const</span> CxtLock&amp; cxtLock)<span class="keyword"> const</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">cxtLockset</a>.find(cxtLock)!=<a class="code" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">cxtLockset</a>.end();</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;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#af45f3c22edce16913ccbdd7015a06076"> 166</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#af45f3c22edce16913ccbdd7015a06076">intersects</a>(<span class="keyword">const</span> CxtLockSet&amp; lockset1,<span class="keyword">const</span> CxtLockSet&amp; lockset2)<span class="keyword"> const</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">for</span>(CxtLockSet::const_iterator it = lockset1.begin(), eit = lockset1.end(); it!=eit; ++it)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">const</span> CxtLock&amp; lock = *it;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">for</span>(CxtLockSet::const_iterator lit = lockset2.begin(), elit = lockset2.end(); lit!=elit; ++lit)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span>(lock==*lit)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a4424f27444c12dce8071c56a95c664bf"> 180</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a4424f27444c12dce8071c56a95c664bf">alias</a>(<span class="keyword">const</span> CxtLockSet&amp; lockset1,<span class="keyword">const</span> CxtLockSet&amp; lockset2)</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; <span class="keywordflow">for</span>(CxtLockSet::const_iterator it = lockset1.begin(), eit = lockset1.end(); it!=eit; ++it)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">const</span> CxtLock&amp; lock = *it;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span>(CxtLockSet::const_iterator lit = lockset2.begin(), elit = lockset2.end(); lit!=elit; ++lit)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(lock,*lit))</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164"> 196</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">isLockCandidateFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)<span class="keyword"> const</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a484eb7b6f49f47a3e71054c3b798a47a">lockcandidateFuncSet</a>.find(fun)!=<a class="code" href="classSVF_1_1LockAnalysis.html#a484eb7b6f49f47a3e71054c3b798a47a">lockcandidateFuncSet</a>.end();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a0af0f5bf91f4ae175b89ef24c27c987a">hasCxtStmtfromInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; InstToCxtStmtSet::const_iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">instToCxtStmtSet</a>.find(inst);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">return</span> (it != <a class="code" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">instToCxtStmtSet</a>.end());</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d"> 209</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CxtStmtSet&amp; <a class="code" href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d">getCxtStmtfromInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)<span class="keyword"> const</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; InstToCxtStmtSet::const_iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">instToCxtStmtSet</a>.find(inst);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; assert(it != <a class="code" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">instToCxtStmtSet</a>.end());</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a395df7174e06cad1971e6a81587ca043"> 215</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a395df7174e06cad1971e6a81587ca043">hasCxtLockfromCxtStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts)<span class="keyword"> const</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; CxtStmtToCxtLockSet::const_iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>.find(cts);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> (it != <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>.end());</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96"> 220</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> CxtLockSet&amp; <a class="code" href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96">getCxtLockfromCxtStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts)<span class="keyword"> const</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; CxtStmtToCxtLockSet::const_iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>.find(cts);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; assert(it != <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>.end());</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</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"><a class="line" href="classSVF_1_1LockAnalysis.html#a0809f300ab80173523b34226bb832bd2"> 226</a></span>&#160; <span class="keyword">inline</span> CxtLockSet&amp; <a class="code" href="classSVF_1_1LockAnalysis.html#a0809f300ab80173523b34226bb832bd2">getCxtLockfromCxtStmt</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; CxtStmtToCxtLockSet::iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>.find(cts);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; assert(it != <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>.end());</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a718d6f2f55c1e2e7eb619c3e056ab458"> 233</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a718d6f2f55c1e2e7eb619c3e056ab458">addCxtStmtToSpan</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts, <span class="keyword">const</span> CxtLock&amp; cl)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>[cl].insert(cts);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>[cts].insert(cl).second;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a0b21446e6d5dfc1b5d0ebd75895225dd"> 239</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a0b21446e6d5dfc1b5d0ebd75895225dd">removeCxtStmtToSpan</a>(<a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts, <span class="keyword">const</span> CxtLock&amp; cl)</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> find = <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>[cts].find(cl)!=<a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>[cts].end();</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span>(find)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>[cts].erase(cl);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>[cl].erase(cts);</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="keywordflow">return</span> find;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a7faecaee57dbef533dc46b2708305ab2"> 250</a></span>&#160; CxtStmtToCxtLockSet <a class="code" href="classSVF_1_1LockAnalysis.html#a7faecaee57dbef533dc46b2708305ab2">getCSTCLS</a>()</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#aaa0f33f19d9f80eee98289119ba907d2"> 255</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aaa0f33f19d9f80eee98289119ba907d2">touchCxtStmt</a>(<a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>[cts];</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"><a class="line" href="classSVF_1_1LockAnalysis.html#af8ada4a73bf132e1adeef7aa0522f596"> 259</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#af8ada4a73bf132e1adeef7aa0522f596">hasSpanfromCxtLock</a>(<span class="keyword">const</span> CxtLock&amp; cl)</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>.find(cl) != <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>.end();</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ae7942c801e05357bb63f08c24489daf6"> 263</a></span>&#160; <span class="keyword">inline</span> LockSpan&amp; <a class="code" href="classSVF_1_1LockAnalysis.html#ae7942c801e05357bb63f08c24489daf6">getSpanfromCxtLock</a>(<span class="keyword">const</span> CxtLock&amp; cl)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; assert(<a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>.find(cl) != <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>.end());</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>[cl];</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a86f06a790cf90ec897b896a79956e5b4"> 273</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a86f06a790cf90ec897b896a79956e5b4">hasOneCxtInLockSpan</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I, LockSpan lspan)<span class="keyword"> const</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1LockAnalysis.html#a0af0f5bf91f4ae175b89ef24c27c987a">hasCxtStmtfromInst</a>(I))</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keyword">const</span> LockSpan ctsset = <a class="code" href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d">getCxtStmtfromInst</a>(I);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">for</span> (LockSpan::const_iterator cts = ctsset.begin(), ects = ctsset.end(); cts != ects; cts++)</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span>(lspan.find(*cts) != lspan.end())</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a33740d6dc51d24af2d0c8cb2fbf27db6"> 288</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a33740d6dc51d24af2d0c8cb2fbf27db6">hasAllCxtInLockSpan</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I, LockSpan lspan)<span class="keyword"> const</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1LockAnalysis.html#a0af0f5bf91f4ae175b89ef24c27c987a">hasCxtStmtfromInst</a>(I))</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">const</span> LockSpan ctsset = <a class="code" href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d">getCxtStmtfromInst</a>(I);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">for</span> (LockSpan::const_iterator cts = ctsset.begin(), ects = ctsset.end(); cts != ects; cts++)</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; <span class="keywordflow">if</span> (lspan.find(*cts) == lspan.end())</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; <span class="keywordflow">return</span> <span class="keyword">false</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; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a4d4501d62bf51475662b6ba66e6380aa">isProtectedByCommonLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i2);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a56405fa1fec68717958ed1c05dd34287">isProtectedByCommonCxtLock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i2);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a56405fa1fec68717958ed1c05dd34287">isProtectedByCommonCxtLock</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cxtStmt1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cxtStmt2);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a842ddef4d1cb9c45555d949375627a48">isProtectedByCommonCILock</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i2);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#af30d0dad3d17188de8c2cea9b004f3d3">isInSameSpan</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I2);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a4245d946dd694b59b5c8ef30b08cb1dd">isInSameCSSpan</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i2) <span class="keyword">const</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a4245d946dd694b59b5c8ef30b08cb1dd">isInSameCSSpan</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cxtStmt1, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cxtStmt2) <span class="keyword">const</span>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a65aca2bc12fc34203b16549653943eae">isInSameCISpan</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *i2) <span class="keyword">const</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"><a class="line" href="classSVF_1_1LockAnalysis.html#a3df63f936d488166109d73bdcf0437d5"> 317</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a3df63f936d488166109d73bdcf0437d5">getNumOfCxtLocks</a>()</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">cxtLockset</a>.size();</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ac1b42b0a53feae04f848e5b0828ff01a">printLocks</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d"> 325</a></span>&#160; <a class="code" href="classSVF_1_1TCT.html">TCT</a>* <a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a52e79d50288bfa2d146072be53ed058b">handleFork</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a97b186f9417144557bb17c41d515a9f4">handleCall</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#acc3d402c68b9c22ab6d576b38c994fc6">handleRet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cts);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ab99ef73905f35d4c20ca408586fc8680">handleCallRelation</a>(CxtLockProc&amp; clp, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* cgEdge, <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> call);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4"> 346</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(<span class="keyword">const</span> CxtLock&amp; cl1, <span class="keyword">const</span> CxtLock&amp; cl2)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(cl1.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>(), cl2.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</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"><a class="line" href="classSVF_1_1LockAnalysis.html#ab5a541fb1585d475a89590cce66ba3b4"> 350</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ab5a541fb1585d475a89590cce66ba3b4">isAliasedLocks</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* i2)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a5b087b42340d1a1b2ee37339637709d3">getPTA</a>()-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a6c01f259ad2379a422d7106ce0255eb8">alias</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#a785616f9c744d7249fd1080e5ed04d29">getLockVal</a>(i1), <a class="code" href="classSVF_1_1LockAnalysis.html#a785616f9c744d7249fd1080e5ed04d29">getLockVal</a>(i2));</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; tgr, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; src)</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; <span class="keyword">const</span> CxtLockSet&amp; srclockset = <a class="code" href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96">getCxtLockfromCxtStmt</a>(src);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#a395df7174e06cad1971e6a81587ca043">hasCxtLockfromCxtStmt</a>(tgr)== <span class="keyword">false</span>)</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; <span class="keywordflow">for</span>(CxtLockSet::const_iterator it = srclockset.begin(), eit = srclockset.end(); it!=eit; ++it)</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a718d6f2f55c1e2e7eb619c3e056ab458">addCxtStmtToSpan</a>(tgr,*it);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736">pushToCTSWorkList</a>(tgr);</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; <span class="keywordflow">else</span></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="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#aeb479eeac0fdde1486c78da68fc82383">intersect</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96">getCxtLockfromCxtStmt</a>(tgr),srclockset))</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736">pushToCTSWorkList</a>(tgr);</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; }</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#aeb479eeac0fdde1486c78da68fc82383"> 376</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aeb479eeac0fdde1486c78da68fc82383">intersect</a>(CxtLockSet&amp; tgrlockset, <span class="keyword">const</span> CxtLockSet&amp; srclockset)</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; CxtLockSet toBeDeleted;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">for</span>(CxtLockSet::const_iterator it = tgrlockset.begin(), eit = tgrlockset.end(); it!=eit; ++it)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">if</span>(srclockset.find(*it)==srclockset.end())</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; toBeDeleted.insert(*it);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">for</span>(CxtLockSet::const_iterator it = toBeDeleted.begin(), eit = toBeDeleted.end(); it!=eit; ++it)</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; tgrlockset.erase(*it);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span>(!toBeDeleted.empty())</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#adffd808458057544e3492c7afffeeebe"> 394</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#adffd808458057544e3492c7afffeeebe">clearFlagMap</a>()</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a29d9fec1ea7b8e5456342522eea403ad">clear</a>();</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a8a6559c998c0b6f8e851d10ae2ab4171"> 402</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a8a6559c998c0b6f8e851d10ae2ab4171">pushToCTPWorkList</a>(<span class="keyword">const</span> CxtLockProc&amp; clp)</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#ad459afc7dd1e6620739eeee2bc4c570e">isVisitedCTPs</a>(clp) == <span class="keyword">false</span>)</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#aa9f27774c021f4d65fb6a97627355bd7">visitedCTPs</a>.insert(clp);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e">clpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(clp);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ac3de5acfb887c17ebf1213a1c2c38b58"> 411</a></span>&#160; <span class="keyword">inline</span> CxtLockProc <a class="code" href="classSVF_1_1LockAnalysis.html#ac3de5acfb887c17ebf1213a1c2c38b58">popFromCTPWorkList</a>()</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; CxtLockProc clp = <a class="code" href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e">clpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> clp;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ad459afc7dd1e6620739eeee2bc4c570e"> 416</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ad459afc7dd1e6620739eeee2bc4c570e">isVisitedCTPs</a>(<span class="keyword">const</span> CxtLockProc&amp; clp)<span class="keyword"> const</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aa9f27774c021f4d65fb6a97627355bd7">visitedCTPs</a>.find(clp) != <a class="code" href="classSVF_1_1LockAnalysis.html#aa9f27774c021f4d65fb6a97627355bd7">visitedCTPs</a>.end();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736"> 424</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736">pushToCTSWorkList</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>&amp; cs)</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cs);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a469bf90e852061a7cd8551066d6be0d1"> 428</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a469bf90e852061a7cd8551066d6be0d1">popFromCTSWorkList</a>()</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> clp = <a class="code" href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span> clp;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">pushCxt</a>(<a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; cxt, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a3299f1fe234e1d6b4341498575bddcbb">matchCxt</a>(<a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>&amp; cxt, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a935128c9952714fcc98febed491ee85d">validateResults</a>();</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a6e34f3138e8ee558bb00d9d808afba16"> 443</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a6e34f3138e8ee558bb00d9d808afba16">isTDFork</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call)</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">isTDFork</a>(call);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772"> 448</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">isTDAcquire</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call)</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a9db4df7968ec179e5012794c58fdee70">isTDAcquire</a>(call);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div><div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ae312fa9ddb320674f7bc31e29aa474ed"> 453</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ae312fa9ddb320674f7bc31e29aa474ed">isTDRelease</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call)</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a38adae633d5aceddcca3b3a23ad66db9">isTDRelease</a>(call);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a785616f9c744d7249fd1080e5ed04d29"> 458</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="classSVF_1_1LockAnalysis.html#a785616f9c744d7249fd1080e5ed04d29">getLockVal</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* call)</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-&gt;<a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-&gt;<a class="code" href="classSVF_1_1ThreadAPI.html#a8f1c869eb42f7c89697cf2c7452ba9e9">getLockVal</a>(call);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div><div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938"> 463</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>();</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d"> 469</a></span>&#160; <a class="code" href="classSVF_1_1TCT.html">TCT</a>* <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00472"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d"> 472</a></span>&#160; CxtStmtWorkList <a class="code" href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">cxtStmtList</a>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296"> 475</a></span>&#160; InstToCxtStmtSet <a class="code" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">instToCxtStmtSet</a>;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d"> 479</a></span>&#160; CxtLockSet <a class="code" href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">cxtLockset</a>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0"> 484</a></span>&#160; CxtLockToSpan <a class="code" href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">cxtLocktoSpan</a>;</div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc"> 485</a></span>&#160; CxtStmtToCxtLockSet <a class="code" href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">cxtStmtToCxtLockSet</a>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e"> 490</a></span>&#160; CxtLockProcVec <a class="code" href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e">clpList</a>; </div><div class="line"><a name="l00491"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#aa9f27774c021f4d65fb6a97627355bd7"> 491</a></span>&#160; CxtLockProcSet <a class="code" href="classSVF_1_1LockAnalysis.html#aa9f27774c021f4d65fb6a97627355bd7">visitedCTPs</a>; </div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e"> 496</a></span>&#160; InstSet <a class="code" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">locksites</a>;</div><div class="line"><a name="l00497"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#aec459af1d1624df55ffc95cd75655780"> 497</a></span>&#160; InstSet <a class="code" href="classSVF_1_1LockAnalysis.html#aec459af1d1624df55ffc95cd75655780">unlocksites</a>;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a484eb7b6f49f47a3e71054c3b798a47a"> 502</a></span>&#160; FunSet <a class="code" href="classSVF_1_1LockAnalysis.html#a484eb7b6f49f47a3e71054c3b798a47a">lockcandidateFuncSet</a>;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;</div><div class="line"><a name="l00507"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#afc4212873c3e05ac9506aac0a25f515a"> 507</a></span>&#160; CILockToSpan <a class="code" href="classSVF_1_1LockAnalysis.html#afc4212873c3e05ac9506aac0a25f515a">ciLocktoSpan</a>;</div><div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef"> 508</a></span>&#160; InstToInstSetMap <a class="code" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">instCILocksMap</a>;</div><div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a5a4167dd5dbd0017a4725c8774a5b522"> 509</a></span>&#160; InstToInstSetMap <a class="code" href="classSVF_1_1LockAnalysis.html#a5a4167dd5dbd0017a4725c8774a5b522">instTocondCILocksMap</a>;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2"> 514</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2">lockTime</a>;</div><div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#ad648ad9cda4070f9aec1addef0067627"> 515</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1LockAnalysis.html#ad648ad9cda4070f9aec1addef0067627">numOfTotalQueries</a>;</div><div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a80c56ebc6b9b594e97b56767f451ff8b"> 516</a></span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1LockAnalysis.html#a80c56ebc6b9b594e97b56767f451ff8b">numOfLockedQueries</a>;</div><div class="line"><a name="l00517"></a><span class="lineno"><a class="line" href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d"> 517</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d">lockQueriesTime</a>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;};</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_MTA_LockAnalysis_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LockAnalysis_html_a5a4167dd5dbd0017a4725c8774a5b522"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a5a4167dd5dbd0017a4725c8774a5b522">SVF::LockAnalysis::instTocondCILocksMap</a></div><div class="ttdeci">InstToInstSetMap instTocondCILocksMap</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00509">LockAnalysis.h:509</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a87c412a54f48e5314454cd1d44ef9b0e"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">SVF::LockAnalysis::locksites</a></div><div class="ttdeci">InstSet locksites</div><div class="ttdoc">Record all visited clps. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00496">LockAnalysis.h:496</a></div></div>
71
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac2fbbabca4506e28f706cf54b1614791ac531588e8556653306e03ccaacb83dac"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791ac531588e8556653306e03ccaacb83dac">SVF::LockAnalysis::TDUnlocked</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00054">LockAnalysis.h:54</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_aaa0f33f19d9f80eee98289119ba907d2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aaa0f33f19d9f80eee98289119ba907d2">SVF::LockAnalysis::touchCxtStmt</a></div><div class="ttdeci">void touchCxtStmt(CxtStmt &amp;cts)</div><div class="ttdoc">Touch this context statement. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00255">LockAnalysis.h:255</a></div></div>
73
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a0b21446e6d5dfc1b5d0ebd75895225dd"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0b21446e6d5dfc1b5d0ebd75895225dd">SVF::LockAnalysis::removeCxtStmtToSpan</a></div><div class="ttdeci">bool removeCxtStmtToSpan(CxtStmt &amp;cts, const CxtLock &amp;cl)</div><div class="ttdoc">Add context-sensitive statement. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00239">LockAnalysis.h:239</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a9da276dca5092d18f4f22d32e5ab6cdf"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">SVF::ThreadAPI::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *inst) const</div><div class="ttdoc">Return true if this call create a new thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00129">ThreadAPI.h:129</a></div></div>
75
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a75c8b645bdca401896d731a1af8dc464"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a75c8b645bdca401896d731a1af8dc464">SVF::LockAnalysis::CxtLockProcSet</a></div><div class="ttdeci">Set&lt; CxtLockProc &gt; CxtLockProcSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00057">LockAnalysis.h:57</a></div></div>
76
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_af3b0c1b628bac48d07c24008fd9edc4f"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#af3b0c1b628bac48d07c24008fd9edc4f">SVF::LockAnalysis::isInsideCondIntraLock</a></div><div class="ttdeci">bool isInsideCondIntraLock(const Instruction *stmt) const</div><div class="ttdoc">Return true if a statement is inside a partial lock/unlock pair (conditional lock with unconditional ...</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00114">LockAnalysis.h:114</a></div></div>
77
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a4c76b3fb18248081dc1affbc33940164"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">SVF::LockAnalysis::isLockCandidateFun</a></div><div class="ttdeci">bool isLockCandidateFun(const Function *fun) const</div><div class="ttdoc">Return true if it is a candidate function. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00174">LockAnalysis.h:174</a></div></div>
78
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac3de5acfb887c17ebf1213a1c2c38b58"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac3de5acfb887c17ebf1213a1c2c38b58">SVF::LockAnalysis::popFromCTPWorkList</a></div><div class="ttdeci">CxtLockProc popFromCTPWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00389">LockAnalysis.h:389</a></div></div>
79
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_aec459af1d1624df55ffc95cd75655780"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aec459af1d1624df55ffc95cd75655780">SVF::LockAnalysis::unlocksites</a></div><div class="ttdeci">InstSet unlocksites</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00475">LockAnalysis.h:475</a></div></div>
75
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a75c8b645bdca401896d731a1af8dc464"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a75c8b645bdca401896d731a1af8dc464">SVF::LockAnalysis::CxtLockProcSet</a></div><div class="ttdeci">Set&lt; CxtLockProc &gt; CxtLockProcSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00079">LockAnalysis.h:79</a></div></div>
76
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_af3b0c1b628bac48d07c24008fd9edc4f"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#af3b0c1b628bac48d07c24008fd9edc4f">SVF::LockAnalysis::isInsideCondIntraLock</a></div><div class="ttdeci">bool isInsideCondIntraLock(const Instruction *stmt) const</div><div class="ttdoc">Return true if a statement is inside a partial lock/unlock pair (conditional lock with unconditional ...</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00136">LockAnalysis.h:136</a></div></div>
77
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a4c76b3fb18248081dc1affbc33940164"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">SVF::LockAnalysis::isLockCandidateFun</a></div><div class="ttdeci">bool isLockCandidateFun(const Function *fun) const</div><div class="ttdoc">Return true if it is a candidate function. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00196">LockAnalysis.h:196</a></div></div>
78
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac3de5acfb887c17ebf1213a1c2c38b58"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac3de5acfb887c17ebf1213a1c2c38b58">SVF::LockAnalysis::popFromCTPWorkList</a></div><div class="ttdeci">CxtLockProc popFromCTPWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00411">LockAnalysis.h:411</a></div></div>
79
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_aec459af1d1624df55ffc95cd75655780"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aec459af1d1624df55ffc95cd75655780">SVF::LockAnalysis::unlocksites</a></div><div class="ttdeci">InstSet unlocksites</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00497">LockAnalysis.h:497</a></div></div>
80
80
  <div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00175">SVFBasicTypes.h:175</a></div></div>
81
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_adffd808458057544e3492c7afffeeebe"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#adffd808458057544e3492c7afffeeebe">SVF::LockAnalysis::clearFlagMap</a></div><div class="ttdeci">void clearFlagMap()</div><div class="ttdoc">Clear flags. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00372">LockAnalysis.h:372</a></div></div>
82
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a1f9ae41c4ed7450d0d8b29cd20a6ef25"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a1f9ae41c4ed7450d0d8b29cd20a6ef25">SVF::LockAnalysis::LockSiteToLockSet</a></div><div class="ttdeci">Map&lt; const Instruction *, NodeBS &gt; LockSiteToLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00053">LockAnalysis.h:53</a></div></div>
81
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_adffd808458057544e3492c7afffeeebe"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#adffd808458057544e3492c7afffeeebe">SVF::LockAnalysis::clearFlagMap</a></div><div class="ttdeci">void clearFlagMap()</div><div class="ttdoc">Clear flags. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00394">LockAnalysis.h:394</a></div></div>
82
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a1f9ae41c4ed7450d0d8b29cd20a6ef25"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a1f9ae41c4ed7450d0d8b29cd20a6ef25">SVF::LockAnalysis::LockSiteToLockSet</a></div><div class="ttdeci">Map&lt; const Instruction *, NodeBS &gt; LockSiteToLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00075">LockAnalysis.h:75</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a9db4df7968ec179e5012794c58fdee70"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a9db4df7968ec179e5012794c58fdee70">SVF::ThreadAPI::isTDAcquire</a></div><div class="ttdeci">bool isTDAcquire(const Instruction *inst) const</div><div class="ttdoc">Return true if this call acquire a lock. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00283">ThreadAPI.h:283</a></div></div>
84
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac2fbbabca4506e28f706cf54b1614791ae16d4995f32298086fd37b4759ec069c"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791ae16d4995f32298086fd37b4759ec069c">SVF::LockAnalysis::Empty</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00030">LockAnalysis.h:30</a></div></div>
85
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_add9272ead87ca994ee4e08dfa30fa0f4"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">SVF::LockAnalysis::isAliasedLocks</a></div><div class="ttdeci">bool isAliasedLocks(const CxtLock &amp;cl1, const CxtLock &amp;cl2)</div><div class="ttdoc">Return true it a lock matches an unlock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00324">LockAnalysis.h:324</a></div></div>
84
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac2fbbabca4506e28f706cf54b1614791ae16d4995f32298086fd37b4759ec069c"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791ae16d4995f32298086fd37b4759ec069c">SVF::LockAnalysis::Empty</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00052">LockAnalysis.h:52</a></div></div>
85
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_add9272ead87ca994ee4e08dfa30fa0f4"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">SVF::LockAnalysis::isAliasedLocks</a></div><div class="ttdeci">bool isAliasedLocks(const CxtLock &amp;cl1, const CxtLock &amp;cl2)</div><div class="ttdoc">Return true it a lock matches an unlock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00346">LockAnalysis.h:346</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a8f1c869eb42f7c89697cf2c7452ba9e9"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a8f1c869eb42f7c89697cf2c7452ba9e9">SVF::ThreadAPI::getLockVal</a></div><div class="ttdeci">const Value * getLockVal(const Instruction *inst) const</div><div class="ttdoc">Return lock value. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00310">ThreadAPI.h:310</a></div></div>
87
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a4424f27444c12dce8071c56a95c664bf"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4424f27444c12dce8071c56a95c664bf">SVF::LockAnalysis::alias</a></div><div class="ttdeci">bool alias(const CxtLockSet &amp;lockset1, const CxtLockSet &amp;lockset2)</div><div class="ttdoc">Return true if two locksets has at least one alias lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00158">LockAnalysis.h:158</a></div></div>
88
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a4bde0f39a6b5cf83e0011d7ef272c685"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4bde0f39a6b5cf83e0011d7ef272c685">SVF::LockAnalysis::LockSet</a></div><div class="ttdeci">NodeBS LockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00038">LockAnalysis.h:38</a></div></div>
89
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a07b7d49e1fbe3e5dc694b6aadbee05b8"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a07b7d49e1fbe3e5dc694b6aadbee05b8">SVF::LockAnalysis::LockSpan</a></div><div class="ttdeci">Set&lt; CxtStmt &gt; LockSpan</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00047">LockAnalysis.h:47</a></div></div>
90
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a4245d946dd694b59b5c8ef30b08cb1dd"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4245d946dd694b59b5c8ef30b08cb1dd">SVF::LockAnalysis::isInSameCSSpan</a></div><div class="ttdeci">bool isInSameCSSpan(const Instruction *i1, const Instruction *i2) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00699">LockAnalysis.cpp:699</a></div></div>
91
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a058f3518f0b861c46c99095922e373f0"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a058f3518f0b861c46c99095922e373f0">SVF::LockAnalysis::CxtLockProcVec</a></div><div class="ttdeci">FIFOWorkList&lt; CxtLockProc &gt; CxtLockProcVec</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00056">LockAnalysis.h:56</a></div></div>
92
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_aeb479eeac0fdde1486c78da68fc82383"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aeb479eeac0fdde1486c78da68fc82383">SVF::LockAnalysis::intersect</a></div><div class="ttdeci">bool intersect(CxtLockSet &amp;tgrlockset, const CxtLockSet &amp;srclockset)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00354">LockAnalysis.h:354</a></div></div>
93
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a718d6f2f55c1e2e7eb619c3e056ab458"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a718d6f2f55c1e2e7eb619c3e056ab458">SVF::LockAnalysis::addCxtStmtToSpan</a></div><div class="ttdeci">bool addCxtStmtToSpan(const CxtStmt &amp;cts, const CxtLock &amp;cl)</div><div class="ttdoc">Add context-sensitive statement. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00211">LockAnalysis.h:211</a></div></div>
94
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a0cc6e4b4ab78f3c54b68fe35adb02957"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0cc6e4b4ab78f3c54b68fe35adb02957">SVF::LockAnalysis::addCondIntraLock</a></div><div class="ttdeci">void addCondIntraLock(const Instruction *lockSite, const InstSet &amp;stmts)</div><div class="ttdoc">Add intra-procedural lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00099">LockAnalysis.h:99</a></div></div>
95
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a842ddef4d1cb9c45555d949375627a48"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a842ddef4d1cb9c45555d949375627a48">SVF::LockAnalysis::isProtectedByCommonCILock</a></div><div class="ttdeci">bool isProtectedByCommonCILock(const Instruction *i1, const Instruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00585">LockAnalysis.cpp:585</a></div></div>
96
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a86f06a790cf90ec897b896a79956e5b4"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a86f06a790cf90ec897b896a79956e5b4">SVF::LockAnalysis::hasOneCxtInLockSpan</a></div><div class="ttdeci">bool hasOneCxtInLockSpan(const Instruction *I, LockSpan lspan) const</div><div class="ttdoc">Check if one instruction&amp;#39;s context stmt is in a lock span. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00251">LockAnalysis.h:251</a></div></div>
97
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_af8ada4a73bf132e1adeef7aa0522f596"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#af8ada4a73bf132e1adeef7aa0522f596">SVF::LockAnalysis::hasSpanfromCxtLock</a></div><div class="ttdeci">bool hasSpanfromCxtLock(const CxtLock &amp;cl)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00237">LockAnalysis.h:237</a></div></div>
98
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a0af0f5bf91f4ae175b89ef24c27c987a"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0af0f5bf91f4ae175b89ef24c27c987a">SVF::LockAnalysis::hasCxtStmtfromInst</a></div><div class="ttdeci">bool hasCxtStmtfromInst(const Instruction *inst) const</div><div class="ttdoc">Context-sensitive statement and lock spans. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00182">LockAnalysis.h:182</a></div></div>
99
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ad1516b6cb1dbd06b8dff04ae3c944621"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad1516b6cb1dbd06b8dff04ae3c944621">SVF::LockAnalysis::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00042">LockAnalysis.cpp:42</a></div></div>
100
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae675d0ebf4eac597487ce83e667a8229"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae675d0ebf4eac597487ce83e667a8229">SVF::LockAnalysis::CISpan</a></div><div class="ttdeci">InstSet CISpan</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00041">LockAnalysis.h:41</a></div></div>
101
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a484eb7b6f49f47a3e71054c3b798a47a"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a484eb7b6f49f47a3e71054c3b798a47a">SVF::LockAnalysis::lockcandidateFuncSet</a></div><div class="ttdeci">FunSet lockcandidateFuncSet</div><div class="ttdoc">Candidate functions which relevant to locks/unlocks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00480">LockAnalysis.h:480</a></div></div>
102
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a3df63f936d488166109d73bdcf0437d5"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a3df63f936d488166109d73bdcf0437d5">SVF::LockAnalysis::getNumOfCxtLocks</a></div><div class="ttdeci">u32_t getNumOfCxtLocks()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00295">LockAnalysis.h:295</a></div></div>
103
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae2218961699a4b4385f47fb039005dbe"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae2218961699a4b4385f47fb039005dbe">SVF::LockAnalysis::CxtStmtWorkList</a></div><div class="ttdeci">FIFOWorkList&lt; CxtStmt &gt; CxtStmtWorkList</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00046">LockAnalysis.h:46</a></div></div>
87
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a4424f27444c12dce8071c56a95c664bf"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4424f27444c12dce8071c56a95c664bf">SVF::LockAnalysis::alias</a></div><div class="ttdeci">bool alias(const CxtLockSet &amp;lockset1, const CxtLockSet &amp;lockset2)</div><div class="ttdoc">Return true if two locksets has at least one alias lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00180">LockAnalysis.h:180</a></div></div>
88
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a4bde0f39a6b5cf83e0011d7ef272c685"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4bde0f39a6b5cf83e0011d7ef272c685">SVF::LockAnalysis::LockSet</a></div><div class="ttdeci">NodeBS LockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00060">LockAnalysis.h:60</a></div></div>
89
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a07b7d49e1fbe3e5dc694b6aadbee05b8"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a07b7d49e1fbe3e5dc694b6aadbee05b8">SVF::LockAnalysis::LockSpan</a></div><div class="ttdeci">Set&lt; CxtStmt &gt; LockSpan</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00069">LockAnalysis.h:69</a></div></div>
90
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a4245d946dd694b59b5c8ef30b08cb1dd"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4245d946dd694b59b5c8ef30b08cb1dd">SVF::LockAnalysis::isInSameCSSpan</a></div><div class="ttdeci">bool isInSameCSSpan(const Instruction *i1, const Instruction *i2) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00721">LockAnalysis.cpp:721</a></div></div>
91
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a058f3518f0b861c46c99095922e373f0"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a058f3518f0b861c46c99095922e373f0">SVF::LockAnalysis::CxtLockProcVec</a></div><div class="ttdeci">FIFOWorkList&lt; CxtLockProc &gt; CxtLockProcVec</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00078">LockAnalysis.h:78</a></div></div>
92
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_aeb479eeac0fdde1486c78da68fc82383"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aeb479eeac0fdde1486c78da68fc82383">SVF::LockAnalysis::intersect</a></div><div class="ttdeci">bool intersect(CxtLockSet &amp;tgrlockset, const CxtLockSet &amp;srclockset)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00376">LockAnalysis.h:376</a></div></div>
93
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a718d6f2f55c1e2e7eb619c3e056ab458"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a718d6f2f55c1e2e7eb619c3e056ab458">SVF::LockAnalysis::addCxtStmtToSpan</a></div><div class="ttdeci">bool addCxtStmtToSpan(const CxtStmt &amp;cts, const CxtLock &amp;cl)</div><div class="ttdoc">Add context-sensitive statement. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00233">LockAnalysis.h:233</a></div></div>
94
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a0cc6e4b4ab78f3c54b68fe35adb02957"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0cc6e4b4ab78f3c54b68fe35adb02957">SVF::LockAnalysis::addCondIntraLock</a></div><div class="ttdeci">void addCondIntraLock(const Instruction *lockSite, const InstSet &amp;stmts)</div><div class="ttdoc">Add intra-procedural lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00121">LockAnalysis.h:121</a></div></div>
95
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a842ddef4d1cb9c45555d949375627a48"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a842ddef4d1cb9c45555d949375627a48">SVF::LockAnalysis::isProtectedByCommonCILock</a></div><div class="ttdeci">bool isProtectedByCommonCILock(const Instruction *i1, const Instruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00607">LockAnalysis.cpp:607</a></div></div>
96
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a86f06a790cf90ec897b896a79956e5b4"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a86f06a790cf90ec897b896a79956e5b4">SVF::LockAnalysis::hasOneCxtInLockSpan</a></div><div class="ttdeci">bool hasOneCxtInLockSpan(const Instruction *I, LockSpan lspan) const</div><div class="ttdoc">Check if one instruction&amp;#39;s context stmt is in a lock span. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00273">LockAnalysis.h:273</a></div></div>
97
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_af8ada4a73bf132e1adeef7aa0522f596"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#af8ada4a73bf132e1adeef7aa0522f596">SVF::LockAnalysis::hasSpanfromCxtLock</a></div><div class="ttdeci">bool hasSpanfromCxtLock(const CxtLock &amp;cl)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00259">LockAnalysis.h:259</a></div></div>
98
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a0af0f5bf91f4ae175b89ef24c27c987a"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0af0f5bf91f4ae175b89ef24c27c987a">SVF::LockAnalysis::hasCxtStmtfromInst</a></div><div class="ttdeci">bool hasCxtStmtfromInst(const Instruction *inst) const</div><div class="ttdoc">Context-sensitive statement and lock spans. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00204">LockAnalysis.h:204</a></div></div>
99
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ad1516b6cb1dbd06b8dff04ae3c944621"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad1516b6cb1dbd06b8dff04ae3c944621">SVF::LockAnalysis::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00064">LockAnalysis.cpp:64</a></div></div>
100
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae675d0ebf4eac597487ce83e667a8229"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae675d0ebf4eac597487ce83e667a8229">SVF::LockAnalysis::CISpan</a></div><div class="ttdeci">InstSet CISpan</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00063">LockAnalysis.h:63</a></div></div>
101
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a484eb7b6f49f47a3e71054c3b798a47a"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a484eb7b6f49f47a3e71054c3b798a47a">SVF::LockAnalysis::lockcandidateFuncSet</a></div><div class="ttdeci">FunSet lockcandidateFuncSet</div><div class="ttdoc">Candidate functions which relevant to locks/unlocks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00502">LockAnalysis.h:502</a></div></div>
102
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a3df63f936d488166109d73bdcf0437d5"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a3df63f936d488166109d73bdcf0437d5">SVF::LockAnalysis::getNumOfCxtLocks</a></div><div class="ttdeci">u32_t getNumOfCxtLocks()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00317">LockAnalysis.h:317</a></div></div>
103
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae2218961699a4b4385f47fb039005dbe"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae2218961699a4b4385f47fb039005dbe">SVF::LockAnalysis::CxtStmtWorkList</a></div><div class="ttdeci">FIFOWorkList&lt; CxtStmt &gt; CxtStmtWorkList</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00068">LockAnalysis.h:68</a></div></div>
104
104
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00110">SVFBasicTypes.h:110</a></div></div>
105
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a451d9b41fd048e11615ea47872f614c9"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a451d9b41fd048e11615ea47872f614c9">SVF::LockAnalysis::CxtStmtToLockFlagMap</a></div><div class="ttdeci">Map&lt; CxtStmt, ValDomain &gt; CxtStmtToLockFlagMap</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00045">LockAnalysis.h:45</a></div></div>
105
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a451d9b41fd048e11615ea47872f614c9"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a451d9b41fd048e11615ea47872f614c9">SVF::LockAnalysis::CxtStmtToLockFlagMap</a></div><div class="ttdeci">Map&lt; CxtStmt, ValDomain &gt; CxtStmtToLockFlagMap</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00067">LockAnalysis.h:67</a></div></div>
106
106
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
107
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a277d88153d34cf3eb80272003949e4ef"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">SVF::LockAnalysis::instCILocksMap</a></div><div class="ttdeci">InstToInstSetMap instCILocksMap</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00486">LockAnalysis.h:486</a></div></div>
108
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a6febb0bb12f4983cd54b3bd310ce65d2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a6febb0bb12f4983cd54b3bd310ce65d2">SVF::LockAnalysis::intraForwardTraverse</a></div><div class="ttdeci">bool intraForwardTraverse(const Instruction *lock, InstSet &amp;unlockset, InstSet &amp;forwardInsts)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00171">LockAnalysis.cpp:171</a></div></div>
109
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a2c4a69b0f2381142c172b3043943c79d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">SVF::LockAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00447">LockAnalysis.h:447</a></div></div>
110
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a56405fa1fec68717958ed1c05dd34287"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a56405fa1fec68717958ed1c05dd34287">SVF::LockAnalysis::isProtectedByCommonCxtLock</a></div><div class="ttdeci">bool isProtectedByCommonCxtLock(const Instruction *i1, const Instruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00622">LockAnalysis.cpp:622</a></div></div>
111
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_aa9f27774c021f4d65fb6a97627355bd7"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aa9f27774c021f4d65fb6a97627355bd7">SVF::LockAnalysis::visitedCTPs</a></div><div class="ttdeci">CxtLockProcSet visitedCTPs</div><div class="ttdoc">CxtLockProc List. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00469">LockAnalysis.h:469</a></div></div>
112
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_af8aff31058caba691c127b8aef297b43"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#af8aff31058caba691c127b8aef297b43">SVF::LockAnalysis::LockAnalysis</a></div><div class="ttdeci">LockAnalysis(TCT *t)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00061">LockAnalysis.h:61</a></div></div>
113
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a0716c155b42b3ae7a6c8d7593bb6ac83"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">SVF::LockAnalysis::CxtLockSet</a></div><div class="ttdeci">Set&lt; CxtLock &gt; CxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00049">LockAnalysis.h:49</a></div></div>
107
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a277d88153d34cf3eb80272003949e4ef"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">SVF::LockAnalysis::instCILocksMap</a></div><div class="ttdeci">InstToInstSetMap instCILocksMap</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00508">LockAnalysis.h:508</a></div></div>
108
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a6febb0bb12f4983cd54b3bd310ce65d2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a6febb0bb12f4983cd54b3bd310ce65d2">SVF::LockAnalysis::intraForwardTraverse</a></div><div class="ttdeci">bool intraForwardTraverse(const Instruction *lock, InstSet &amp;unlockset, InstSet &amp;forwardInsts)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00193">LockAnalysis.cpp:193</a></div></div>
109
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a2c4a69b0f2381142c172b3043943c79d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">SVF::LockAnalysis::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00469">LockAnalysis.h:469</a></div></div>
110
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a56405fa1fec68717958ed1c05dd34287"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a56405fa1fec68717958ed1c05dd34287">SVF::LockAnalysis::isProtectedByCommonCxtLock</a></div><div class="ttdeci">bool isProtectedByCommonCxtLock(const Instruction *i1, const Instruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00644">LockAnalysis.cpp:644</a></div></div>
111
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_aa9f27774c021f4d65fb6a97627355bd7"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aa9f27774c021f4d65fb6a97627355bd7">SVF::LockAnalysis::visitedCTPs</a></div><div class="ttdeci">CxtLockProcSet visitedCTPs</div><div class="ttdoc">CxtLockProc List. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00491">LockAnalysis.h:491</a></div></div>
112
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_af8aff31058caba691c127b8aef297b43"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#af8aff31058caba691c127b8aef297b43">SVF::LockAnalysis::LockAnalysis</a></div><div class="ttdeci">LockAnalysis(TCT *t)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00083">LockAnalysis.h:83</a></div></div>
113
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a0716c155b42b3ae7a6c8d7593bb6ac83"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">SVF::LockAnalysis::CxtLockSet</a></div><div class="ttdeci">Set&lt; CxtLock &gt; CxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00071">LockAnalysis.h:71</a></div></div>
114
114
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
115
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a395df7174e06cad1971e6a81587ca043"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a395df7174e06cad1971e6a81587ca043">SVF::LockAnalysis::hasCxtLockfromCxtStmt</a></div><div class="ttdeci">bool hasCxtLockfromCxtStmt(const CxtStmt &amp;cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00193">LockAnalysis.h:193</a></div></div>
116
- <div class="ttc" id="classSVF_1_1TCT_html_a5b087b42340d1a1b2ee37339637709d3"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b087b42340d1a1b2ee37339637709d3">SVF::TCT::getPTA</a></div><div class="ttdeci">PointerAnalysis * getPTA() const</div><div class="ttdoc">Get PTA. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00171">TCT.h:171</a></div></div>
115
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a395df7174e06cad1971e6a81587ca043"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a395df7174e06cad1971e6a81587ca043">SVF::LockAnalysis::hasCxtLockfromCxtStmt</a></div><div class="ttdeci">bool hasCxtLockfromCxtStmt(const CxtStmt &amp;cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00215">LockAnalysis.h:215</a></div></div>
116
+ <div class="ttc" id="classSVF_1_1TCT_html_a5b087b42340d1a1b2ee37339637709d3"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b087b42340d1a1b2ee37339637709d3">SVF::TCT::getPTA</a></div><div class="ttdeci">PointerAnalysis * getPTA() const</div><div class="ttdoc">Get PTA. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00193">TCT.h:193</a></div></div>
117
117
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
118
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a33740d6dc51d24af2d0c8cb2fbf27db6"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a33740d6dc51d24af2d0c8cb2fbf27db6">SVF::LockAnalysis::hasAllCxtInLockSpan</a></div><div class="ttdeci">bool hasAllCxtInLockSpan(const Instruction *I, LockSpan lspan) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00266">LockAnalysis.h:266</a></div></div>
119
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac33c03c9d4a978891009ae919559d567"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac33c03c9d4a978891009ae919559d567">SVF::LockAnalysis::isInsideIntraLock</a></div><div class="ttdeci">bool isInsideIntraLock(const Instruction *stmt) const</div><div class="ttdoc">Return true if a statement is inside an intra-procedural lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00108">LockAnalysis.h:108</a></div></div>
120
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ad8e7c32cb1163f4917124fed5cf6c3ab"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad8e7c32cb1163f4917124fed5cf6c3ab">SVF::LockAnalysis::getIntraLockSet</a></div><div class="ttdeci">const InstSet &amp; getIntraLockSet(const Instruction *stmt) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00119">LockAnalysis.h:119</a></div></div>
121
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_af45f3c22edce16913ccbdd7015a06076"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#af45f3c22edce16913ccbdd7015a06076">SVF::LockAnalysis::intersects</a></div><div class="ttdeci">bool intersects(const CxtLockSet &amp;lockset1, const CxtLockSet &amp;lockset2) const</div><div class="ttdoc">Return true if the intersection of two locksets is not empty. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00144">LockAnalysis.h:144</a></div></div>
118
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a33740d6dc51d24af2d0c8cb2fbf27db6"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a33740d6dc51d24af2d0c8cb2fbf27db6">SVF::LockAnalysis::hasAllCxtInLockSpan</a></div><div class="ttdeci">bool hasAllCxtInLockSpan(const Instruction *I, LockSpan lspan) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00288">LockAnalysis.h:288</a></div></div>
119
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac33c03c9d4a978891009ae919559d567"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac33c03c9d4a978891009ae919559d567">SVF::LockAnalysis::isInsideIntraLock</a></div><div class="ttdeci">bool isInsideIntraLock(const Instruction *stmt) const</div><div class="ttdoc">Return true if a statement is inside an intra-procedural lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00130">LockAnalysis.h:130</a></div></div>
120
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ad8e7c32cb1163f4917124fed5cf6c3ab"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad8e7c32cb1163f4917124fed5cf6c3ab">SVF::LockAnalysis::getIntraLockSet</a></div><div class="ttdeci">const InstSet &amp; getIntraLockSet(const Instruction *stmt) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00141">LockAnalysis.h:141</a></div></div>
121
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_af45f3c22edce16913ccbdd7015a06076"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#af45f3c22edce16913ccbdd7015a06076">SVF::LockAnalysis::intersects</a></div><div class="ttdeci">bool intersects(const CxtLockSet &amp;lockset1, const CxtLockSet &amp;lockset2) const</div><div class="ttdoc">Return true if the intersection of two locksets is not empty. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00166">LockAnalysis.h:166</a></div></div>
122
122
  <div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector&lt; u32_t &gt; CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
123
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_afc4212873c3e05ac9506aac0a25f515a"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#afc4212873c3e05ac9506aac0a25f515a">SVF::LockAnalysis::ciLocktoSpan</a></div><div class="ttdeci">CILockToSpan ciLocktoSpan</div><div class="ttdoc">Used for context-insensitive intra-procedural locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00485">LockAnalysis.h:485</a></div></div>
124
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae256a84fd63947a6f81bee030bdbe7fc"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">SVF::LockAnalysis::cxtStmtToCxtLockSet</a></div><div class="ttdeci">CxtStmtToCxtLockSet cxtStmtToCxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00463">LockAnalysis.h:463</a></div></div>
125
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ab5a541fb1585d475a89590cce66ba3b4"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ab5a541fb1585d475a89590cce66ba3b4">SVF::LockAnalysis::isAliasedLocks</a></div><div class="ttdeci">bool isAliasedLocks(const Instruction *i1, const Instruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00328">LockAnalysis.h:328</a></div></div>
126
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ad459afc7dd1e6620739eeee2bc4c570e"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad459afc7dd1e6620739eeee2bc4c570e">SVF::LockAnalysis::isVisitedCTPs</a></div><div class="ttdeci">bool isVisitedCTPs(const CxtLockProc &amp;clp) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00394">LockAnalysis.h:394</a></div></div>
123
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_afc4212873c3e05ac9506aac0a25f515a"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#afc4212873c3e05ac9506aac0a25f515a">SVF::LockAnalysis::ciLocktoSpan</a></div><div class="ttdeci">CILockToSpan ciLocktoSpan</div><div class="ttdoc">Used for context-insensitive intra-procedural locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00507">LockAnalysis.h:507</a></div></div>
124
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae256a84fd63947a6f81bee030bdbe7fc"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae256a84fd63947a6f81bee030bdbe7fc">SVF::LockAnalysis::cxtStmtToCxtLockSet</a></div><div class="ttdeci">CxtStmtToCxtLockSet cxtStmtToCxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00485">LockAnalysis.h:485</a></div></div>
125
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ab5a541fb1585d475a89590cce66ba3b4"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ab5a541fb1585d475a89590cce66ba3b4">SVF::LockAnalysis::isAliasedLocks</a></div><div class="ttdeci">bool isAliasedLocks(const Instruction *i1, const Instruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00350">LockAnalysis.h:350</a></div></div>
126
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ad459afc7dd1e6620739eeee2bc4c570e"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad459afc7dd1e6620739eeee2bc4c570e">SVF::LockAnalysis::isVisitedCTPs</a></div><div class="ttdeci">bool isVisitedCTPs(const CxtLockProc &amp;clp) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00416">LockAnalysis.h:416</a></div></div>
127
127
  <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
128
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_afc8c13fcff7c1199f63efc198a3b5a6d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d">SVF::LockAnalysis::getCxtStmtfromInst</a></div><div class="ttdeci">const CxtStmtSet &amp; getCxtStmtfromInst(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00187">LockAnalysis.h:187</a></div></div>
128
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_afc8c13fcff7c1199f63efc198a3b5a6d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d">SVF::LockAnalysis::getCxtStmtfromInst</a></div><div class="ttdeci">const CxtStmtSet &amp; getCxtStmtfromInst(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00209">LockAnalysis.h:209</a></div></div>
129
129
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
130
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_aa91522e95e8a9450032bfeaf7a3e491c"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aa91522e95e8a9450032bfeaf7a3e491c">SVF::LockAnalysis::isIntraLock</a></div><div class="ttdeci">bool isIntraLock(const Instruction *lock) const</div><div class="ttdoc">Intraprocedural locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00082">LockAnalysis.h:82</a></div></div>
130
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_aa91522e95e8a9450032bfeaf7a3e491c"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aa91522e95e8a9450032bfeaf7a3e491c">SVF::LockAnalysis::isIntraLock</a></div><div class="ttdeci">bool isIntraLock(const Instruction *lock) const</div><div class="ttdoc">Intraprocedural locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00104">LockAnalysis.h:104</a></div></div>
131
131
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
132
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_afff2c5699e08badf5265e8183b18a02e"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e">SVF::LockAnalysis::clpList</a></div><div class="ttdeci">CxtLockProcVec clpList</div><div class="ttdoc">Following data structures are used for collecting context-sensitive locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00468">LockAnalysis.h:468</a></div></div>
133
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a281e41a6a1cdc21c214aafa6ea23b343"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a281e41a6a1cdc21c214aafa6ea23b343">SVF::LockAnalysis::InstToInstSetMap</a></div><div class="ttdeci">Map&lt; const Instruction *, InstSet &gt; InstToInstSetMap</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00044">LockAnalysis.h:44</a></div></div>
132
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_afff2c5699e08badf5265e8183b18a02e"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e">SVF::LockAnalysis::clpList</a></div><div class="ttdeci">CxtLockProcVec clpList</div><div class="ttdoc">Following data structures are used for collecting context-sensitive locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00490">LockAnalysis.h:490</a></div></div>
133
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a281e41a6a1cdc21c214aafa6ea23b343"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a281e41a6a1cdc21c214aafa6ea23b343">SVF::LockAnalysis::InstToInstSetMap</a></div><div class="ttdeci">Map&lt; const Instruction *, InstSet &gt; InstToInstSetMap</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00066">LockAnalysis.h:66</a></div></div>
134
134
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
135
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a65aca2bc12fc34203b16549653943eae"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a65aca2bc12fc34203b16549653943eae">SVF::LockAnalysis::isInSameCISpan</a></div><div class="ttdeci">bool isInSameCISpan(const Instruction *i1, const Instruction *i2) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00664">LockAnalysis.cpp:664</a></div></div>
136
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a109293f282e9b920b0b13c58026f6f1d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">SVF::LockAnalysis::cxtStmtList</a></div><div class="ttdeci">CxtStmtWorkList cxtStmtList</div><div class="ttdoc">context-sensitive statement worklist </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00450">LockAnalysis.h:450</a></div></div>
137
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a6e34f3138e8ee558bb00d9d808afba16"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a6e34f3138e8ee558bb00d9d808afba16">SVF::LockAnalysis::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a lock site. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00421">LockAnalysis.h:421</a></div></div>
138
- <div class="ttc" id="classSVF_1_1TCT_html_a13d01a1747d8ee1521596aeb36bdb655"><div class="ttname"><a href="classSVF_1_1TCT.html#a13d01a1747d8ee1521596aeb36bdb655">SVF::TCT::InstVec</a></div><div class="ttdeci">std::vector&lt; const Instruction * &gt; InstVec</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00122">TCT.h:122</a></div></div>
139
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a8a6559c998c0b6f8e851d10ae2ab4171"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a8a6559c998c0b6f8e851d10ae2ab4171">SVF::LockAnalysis::pushToCTPWorkList</a></div><div class="ttdeci">bool pushToCTPWorkList(const CxtLockProc &amp;clp)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00380">LockAnalysis.h:380</a></div></div>
140
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ad648ad9cda4070f9aec1addef0067627"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad648ad9cda4070f9aec1addef0067627">SVF::LockAnalysis::numOfTotalQueries</a></div><div class="ttdeci">u32_t numOfTotalQueries</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00493">LockAnalysis.h:493</a></div></div>
141
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a6c918786d065309e8a7b13759f410a09"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a6c918786d065309e8a7b13759f410a09">SVF::LockAnalysis::hasCxtLock</a></div><div class="ttdeci">bool hasCxtLock(const CxtLock &amp;cxtLock) const</div><div class="ttdoc">Get context-sensitive lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00138">LockAnalysis.h:138</a></div></div>
142
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a7faecaee57dbef533dc46b2708305ab2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a7faecaee57dbef533dc46b2708305ab2">SVF::LockAnalysis::getCSTCLS</a></div><div class="ttdeci">CxtStmtToCxtLockSet getCSTCLS()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00228">LockAnalysis.h:228</a></div></div>
135
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a65aca2bc12fc34203b16549653943eae"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a65aca2bc12fc34203b16549653943eae">SVF::LockAnalysis::isInSameCISpan</a></div><div class="ttdeci">bool isInSameCISpan(const Instruction *i1, const Instruction *i2) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00686">LockAnalysis.cpp:686</a></div></div>
136
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a109293f282e9b920b0b13c58026f6f1d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">SVF::LockAnalysis::cxtStmtList</a></div><div class="ttdeci">CxtStmtWorkList cxtStmtList</div><div class="ttdoc">context-sensitive statement worklist </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00472">LockAnalysis.h:472</a></div></div>
137
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a6e34f3138e8ee558bb00d9d808afba16"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a6e34f3138e8ee558bb00d9d808afba16">SVF::LockAnalysis::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a lock site. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00443">LockAnalysis.h:443</a></div></div>
138
+ <div class="ttc" id="classSVF_1_1TCT_html_a13d01a1747d8ee1521596aeb36bdb655"><div class="ttname"><a href="classSVF_1_1TCT.html#a13d01a1747d8ee1521596aeb36bdb655">SVF::TCT::InstVec</a></div><div class="ttdeci">std::vector&lt; const Instruction * &gt; InstVec</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00144">TCT.h:144</a></div></div>
139
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a8a6559c998c0b6f8e851d10ae2ab4171"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a8a6559c998c0b6f8e851d10ae2ab4171">SVF::LockAnalysis::pushToCTPWorkList</a></div><div class="ttdeci">bool pushToCTPWorkList(const CxtLockProc &amp;clp)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00402">LockAnalysis.h:402</a></div></div>
140
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ad648ad9cda4070f9aec1addef0067627"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad648ad9cda4070f9aec1addef0067627">SVF::LockAnalysis::numOfTotalQueries</a></div><div class="ttdeci">u32_t numOfTotalQueries</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00515">LockAnalysis.h:515</a></div></div>
141
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a6c918786d065309e8a7b13759f410a09"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a6c918786d065309e8a7b13759f410a09">SVF::LockAnalysis::hasCxtLock</a></div><div class="ttdeci">bool hasCxtLock(const CxtLock &amp;cxtLock) const</div><div class="ttdoc">Get context-sensitive lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00160">LockAnalysis.h:160</a></div></div>
142
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a7faecaee57dbef533dc46b2708305ab2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a7faecaee57dbef533dc46b2708305ab2">SVF::LockAnalysis::getCSTCLS</a></div><div class="ttdeci">CxtStmtToCxtLockSet getCSTCLS()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00250">LockAnalysis.h:250</a></div></div>
143
143
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html">SVF::PTACallGraphEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00051">PTACallGraph.h:51</a></div></div>
144
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a3299f1fe234e1d6b4341498575bddcbb"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a3299f1fe234e1d6b4341498575bddcbb">SVF::LockAnalysis::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00537">LockAnalysis.cpp:537</a></div></div>
145
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a853ab1a953ddcf76841016a833e43f3d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d">SVF::LockAnalysis::lockQueriesTime</a></div><div class="ttdeci">double lockQueriesTime</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00495">LockAnalysis.h:495</a></div></div>
146
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a4b55036dae224c83b650389a409d9b96"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96">SVF::LockAnalysis::getCxtLockfromCxtStmt</a></div><div class="ttdeci">const CxtLockSet &amp; getCxtLockfromCxtStmt(const CxtStmt &amp;cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00198">LockAnalysis.h:198</a></div></div>
147
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a3e0bdc0a404d0b77ae0a1dde49c6b43d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">SVF::LockAnalysis::getTCT</a></div><div class="ttdeci">TCT * getTCT()</div><div class="ttdoc">Get tct. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00303">LockAnalysis.h:303</a></div></div>
148
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac2fbbabca4506e28f706cf54b1614791"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791">SVF::LockAnalysis::ValDomain</a></div><div class="ttdeci">ValDomain</div><div class="ttdoc">semilattice Empty==&gt;TDUnlocked==&gt;TDLocked </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00028">LockAnalysis.h:28</a></div></div>
149
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_aeb4b15ecc4ba1a0ca8794d304d1895cb"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">SVF::LockAnalysis::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00039">LockAnalysis.h:39</a></div></div>
150
- <div class="ttc" id="classSVF_1_1LockAnalysis_html"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html">SVF::LockAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00023">LockAnalysis.h:23</a></div></div>
151
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a8a34f7544f22a87e1caf010c34abda75"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a8a34f7544f22a87e1caf010c34abda75">SVF::LockAnalysis::analyzeIntraProcedualLock</a></div><div class="ttdeci">void analyzeIntraProcedualLock()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00143">LockAnalysis.cpp:143</a></div></div>
152
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a42ed881d4cd79eae099266a9e171aeb2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a42ed881d4cd79eae099266a9e171aeb2">SVF::LockAnalysis::CxtStmtSet</a></div><div class="ttdeci">Set&lt; CxtStmt &gt; CxtStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00048">LockAnalysis.h:48</a></div></div>
144
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a3299f1fe234e1d6b4341498575bddcbb"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a3299f1fe234e1d6b4341498575bddcbb">SVF::LockAnalysis::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00559">LockAnalysis.cpp:559</a></div></div>
145
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a853ab1a953ddcf76841016a833e43f3d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d">SVF::LockAnalysis::lockQueriesTime</a></div><div class="ttdeci">double lockQueriesTime</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00517">LockAnalysis.h:517</a></div></div>
146
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a4b55036dae224c83b650389a409d9b96"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96">SVF::LockAnalysis::getCxtLockfromCxtStmt</a></div><div class="ttdeci">const CxtLockSet &amp; getCxtLockfromCxtStmt(const CxtStmt &amp;cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00220">LockAnalysis.h:220</a></div></div>
147
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a3e0bdc0a404d0b77ae0a1dde49c6b43d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">SVF::LockAnalysis::getTCT</a></div><div class="ttdeci">TCT * getTCT()</div><div class="ttdoc">Get tct. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00325">LockAnalysis.h:325</a></div></div>
148
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac2fbbabca4506e28f706cf54b1614791"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791">SVF::LockAnalysis::ValDomain</a></div><div class="ttdeci">ValDomain</div><div class="ttdoc">semilattice Empty==&gt;TDUnlocked==&gt;TDLocked </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00050">LockAnalysis.h:50</a></div></div>
149
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_aeb4b15ecc4ba1a0ca8794d304d1895cb"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">SVF::LockAnalysis::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00061">LockAnalysis.h:61</a></div></div>
150
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html">SVF::LockAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00045">LockAnalysis.h:45</a></div></div>
151
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a8a34f7544f22a87e1caf010c34abda75"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a8a34f7544f22a87e1caf010c34abda75">SVF::LockAnalysis::analyzeIntraProcedualLock</a></div><div class="ttdeci">void analyzeIntraProcedualLock()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00165">LockAnalysis.cpp:165</a></div></div>
152
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a42ed881d4cd79eae099266a9e171aeb2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a42ed881d4cd79eae099266a9e171aeb2">SVF::LockAnalysis::CxtStmtSet</a></div><div class="ttdeci">Set&lt; CxtStmt &gt; CxtStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00070">LockAnalysis.h:70</a></div></div>
153
153
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
154
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_af940303bf8ebb679aa6e50475873eaa1"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#af940303bf8ebb679aa6e50475873eaa1">SVF::LockAnalysis::InstToCxtStmt</a></div><div class="ttdeci">Map&lt; const Instruction *, CxtStmtSet &gt; InstToCxtStmt</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00059">LockAnalysis.h:59</a></div></div>
154
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_af940303bf8ebb679aa6e50475873eaa1"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#af940303bf8ebb679aa6e50475873eaa1">SVF::LockAnalysis::InstToCxtStmt</a></div><div class="ttdeci">Map&lt; const Instruction *, CxtStmtSet &gt; InstToCxtStmt</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00081">LockAnalysis.h:81</a></div></div>
155
155
  <div class="ttc" id="classSVF_1_1ThreadCallGraph_html"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html">SVF::ThreadCallGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00160">ThreadCallGraph.h:160</a></div></div>
156
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a177b10a617c275a9c2c2ed5e9b10d78a"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a177b10a617c275a9c2c2ed5e9b10d78a">SVF::LockAnalysis::addCxtLock</a></div><div class="ttdeci">void addCxtLock(const CallStrCxt &amp;cxt, const Instruction *inst)</div><div class="ttdoc">Context-sensitive locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00130">LockAnalysis.h:130</a></div></div>
157
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a0809f300ab80173523b34226bb832bd2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0809f300ab80173523b34226bb832bd2">SVF::LockAnalysis::getCxtLockfromCxtStmt</a></div><div class="ttdeci">CxtLockSet &amp; getCxtLockfromCxtStmt(const CxtStmt &amp;cts)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00204">LockAnalysis.h:204</a></div></div>
158
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a80c56ebc6b9b594e97b56767f451ff8b"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a80c56ebc6b9b594e97b56767f451ff8b">SVF::LockAnalysis::numOfLockedQueries</a></div><div class="ttdeci">u32_t numOfLockedQueries</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00494">LockAnalysis.h:494</a></div></div>
159
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a561bb2fbfbeee9117efad7c7c70871d8"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a561bb2fbfbeee9117efad7c7c70871d8">SVF::LockAnalysis::FunSet</a></div><div class="ttdeci">Set&lt; const Function * &gt; FunSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00043">LockAnalysis.h:43</a></div></div>
156
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a177b10a617c275a9c2c2ed5e9b10d78a"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a177b10a617c275a9c2c2ed5e9b10d78a">SVF::LockAnalysis::addCxtLock</a></div><div class="ttdeci">void addCxtLock(const CallStrCxt &amp;cxt, const Instruction *inst)</div><div class="ttdoc">Context-sensitive locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00152">LockAnalysis.h:152</a></div></div>
157
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a0809f300ab80173523b34226bb832bd2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0809f300ab80173523b34226bb832bd2">SVF::LockAnalysis::getCxtLockfromCxtStmt</a></div><div class="ttdeci">CxtLockSet &amp; getCxtLockfromCxtStmt(const CxtStmt &amp;cts)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00226">LockAnalysis.h:226</a></div></div>
158
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a80c56ebc6b9b594e97b56767f451ff8b"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a80c56ebc6b9b594e97b56767f451ff8b">SVF::LockAnalysis::numOfLockedQueries</a></div><div class="ttdeci">u32_t numOfLockedQueries</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00516">LockAnalysis.h:516</a></div></div>
159
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a561bb2fbfbeee9117efad7c7c70871d8"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a561bb2fbfbeee9117efad7c7c70871d8">SVF::LockAnalysis::FunSet</a></div><div class="ttdeci">Set&lt; const Function * &gt; FunSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00065">LockAnalysis.h:65</a></div></div>
160
160
  <div class="ttc" id="classSVF_1_1CxtStmt_html"><div class="ttname"><a href="classSVF_1_1CxtStmt.html">SVF::CxtStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00041">CxtStmt.h:41</a></div></div>
161
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a5f693c893f3701e1e025881f91193d53"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a5f693c893f3701e1e025881f91193d53">SVF::LockAnalysis::intraBackwardTraverse</a></div><div class="ttdeci">bool intraBackwardTraverse(const InstSet &amp;unlockset, InstSet &amp;backwardInsts)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00215">LockAnalysis.cpp:215</a></div></div>
162
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ab28428444170091d2c65572263b9f40b"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ab28428444170091d2c65572263b9f40b">SVF::LockAnalysis::addIntraLock</a></div><div class="ttdeci">void addIntraLock(const Instruction *lockSite, const InstSet &amp;stmts)</div><div class="ttdoc">Add intra-procedural lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00089">LockAnalysis.h:89</a></div></div>
163
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_aa8683de99ad02fb75b175b0bb54e5f7d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aa8683de99ad02fb75b175b0bb54e5f7d">SVF::LockAnalysis::collectLockUnlocksites</a></div><div class="ttdeci">void collectLockUnlocksites()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00072">LockAnalysis.cpp:72</a></div></div>
161
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a5f693c893f3701e1e025881f91193d53"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a5f693c893f3701e1e025881f91193d53">SVF::LockAnalysis::intraBackwardTraverse</a></div><div class="ttdeci">bool intraBackwardTraverse(const InstSet &amp;unlockset, InstSet &amp;backwardInsts)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00237">LockAnalysis.cpp:237</a></div></div>
162
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ab28428444170091d2c65572263b9f40b"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ab28428444170091d2c65572263b9f40b">SVF::LockAnalysis::addIntraLock</a></div><div class="ttdeci">void addIntraLock(const Instruction *lockSite, const InstSet &amp;stmts)</div><div class="ttdoc">Add intra-procedural lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00111">LockAnalysis.h:111</a></div></div>
163
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_aa8683de99ad02fb75b175b0bb54e5f7d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aa8683de99ad02fb75b175b0bb54e5f7d">SVF::LockAnalysis::collectLockUnlocksites</a></div><div class="ttdeci">void collectLockUnlocksites()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00094">LockAnalysis.cpp:94</a></div></div>
164
164
  <div class="ttc" id="DataFlowUtil_8h_html"><div class="ttname"><a href="DataFlowUtil_8h.html">DataFlowUtil.h</a></div></div>
165
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ad855d1de318766ac305a10bfdae4da82"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">SVF::LockAnalysis::CxtLockProc</a></div><div class="ttdeci">CxtProc CxtLockProc</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00036">LockAnalysis.h:36</a></div></div>
166
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a935128c9952714fcc98febed491ee85d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a935128c9952714fcc98febed491ee85d">SVF::LockAnalysis::validateResults</a></div><div class="ttdeci">void validateResults()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00720">LockAnalysis.cpp:720</a></div></div>
165
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ad855d1de318766ac305a10bfdae4da82"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">SVF::LockAnalysis::CxtLockProc</a></div><div class="ttdeci">CxtProc CxtLockProc</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00058">LockAnalysis.h:58</a></div></div>
166
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a935128c9952714fcc98febed491ee85d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a935128c9952714fcc98febed491ee85d">SVF::LockAnalysis::validateResults</a></div><div class="ttdeci">void validateResults()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00742">LockAnalysis.cpp:742</a></div></div>
167
167
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a6c01f259ad2379a422d7106ce0255eb8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a6c01f259ad2379a422d7106ce0255eb8">SVF::PointerAnalysis::alias</a></div><div class="ttdeci">virtual AliasResult alias(const Value *V1, const Value *V2)=0</div><div class="ttdoc">Interface exposed to users of our pointer analysis, given Value infos. </div></div>
168
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae03db88ef0ad0da2c31cf1623b32165f"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae03db88ef0ad0da2c31cf1623b32165f">SVF::LockAnalysis::collectCxtLock</a></div><div class="ttdeci">void collectCxtLock()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00259">LockAnalysis.cpp:259</a></div></div>
169
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a97b186f9417144557bb17c41d515a9f4"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a97b186f9417144557bb17c41d515a9f4">SVF::LockAnalysis::handleCall</a></div><div class="ttdeci">void handleCall(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle call. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00429">LockAnalysis.cpp:429</a></div></div>
170
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_acc3d402c68b9c22ab6d576b38c994fc6"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#acc3d402c68b9c22ab6d576b38c994fc6">SVF::LockAnalysis::handleRet</a></div><div class="ttdeci">void handleRet(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle return. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00453">LockAnalysis.cpp:453</a></div></div>
168
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae03db88ef0ad0da2c31cf1623b32165f"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae03db88ef0ad0da2c31cf1623b32165f">SVF::LockAnalysis::collectCxtLock</a></div><div class="ttdeci">void collectCxtLock()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00281">LockAnalysis.cpp:281</a></div></div>
169
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a97b186f9417144557bb17c41d515a9f4"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a97b186f9417144557bb17c41d515a9f4">SVF::LockAnalysis::handleCall</a></div><div class="ttdeci">void handleCall(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle call. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00451">LockAnalysis.cpp:451</a></div></div>
170
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_acc3d402c68b9c22ab6d576b38c994fc6"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#acc3d402c68b9c22ab6d576b38c994fc6">SVF::LockAnalysis::handleRet</a></div><div class="ttdeci">void handleRet(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle return. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00475">LockAnalysis.cpp:475</a></div></div>
171
171
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList&lt; CxtStmt &gt;</a></div></div>
172
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae312fa9ddb320674f7bc31e29aa474ed"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae312fa9ddb320674f7bc31e29aa474ed">SVF::LockAnalysis::isTDRelease</a></div><div class="ttdeci">bool isTDRelease(const Instruction *call)</div><div class="ttdoc">Whether it is a unlock site. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00431">LockAnalysis.h:431</a></div></div>
173
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a96a6cfddc8f7115294e8ad49a097b938"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">SVF::LockAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00441">LockAnalysis.h:441</a></div></div>
174
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a785616f9c744d7249fd1080e5ed04d29"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a785616f9c744d7249fd1080e5ed04d29">SVF::LockAnalysis::getLockVal</a></div><div class="ttdeci">const Value * getLockVal(const Instruction *call)</div><div class="ttdoc">Get lock value. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00436">LockAnalysis.h:436</a></div></div>
172
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae312fa9ddb320674f7bc31e29aa474ed"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae312fa9ddb320674f7bc31e29aa474ed">SVF::LockAnalysis::isTDRelease</a></div><div class="ttdeci">bool isTDRelease(const Instruction *call)</div><div class="ttdoc">Whether it is a unlock site. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00453">LockAnalysis.h:453</a></div></div>
173
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a96a6cfddc8f7115294e8ad49a097b938"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">SVF::LockAnalysis::getTCG</a></div><div class="ttdeci">ThreadCallGraph * getTCG() const</div><div class="ttdoc">ThreadCallGraph. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00463">LockAnalysis.h:463</a></div></div>
174
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a785616f9c744d7249fd1080e5ed04d29"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a785616f9c744d7249fd1080e5ed04d29">SVF::LockAnalysis::getLockVal</a></div><div class="ttdeci">const Value * getLockVal(const Instruction *call)</div><div class="ttdoc">Get lock value. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00458">LockAnalysis.h:458</a></div></div>
175
175
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a29d9fec1ea7b8e5456342522eea403ad"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a29d9fec1ea7b8e5456342522eea403ad">SVF::FIFOWorkList::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00186">WorkList.h:186</a></div></div>
176
176
  <div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
177
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a469bf90e852061a7cd8551066d6be0d1"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a469bf90e852061a7cd8551066d6be0d1">SVF::LockAnalysis::popFromCTSWorkList</a></div><div class="ttdeci">CxtStmt popFromCTSWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00406">LockAnalysis.h:406</a></div></div>
178
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae7942c801e05357bb63f08c24489daf6"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae7942c801e05357bb63f08c24489daf6">SVF::LockAnalysis::getSpanfromCxtLock</a></div><div class="ttdeci">LockSpan &amp; getSpanfromCxtLock(const CxtLock &amp;cl)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00241">LockAnalysis.h:241</a></div></div>
179
- <div class="ttc" id="classSVF_1_1TCT_html_a1602d02773578bca73dcbd29b95c67d0"><div class="ttname"><a href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">SVF::TCT::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get TCG. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00166">TCT.h:166</a></div></div>
177
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a469bf90e852061a7cd8551066d6be0d1"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a469bf90e852061a7cd8551066d6be0d1">SVF::LockAnalysis::popFromCTSWorkList</a></div><div class="ttdeci">CxtStmt popFromCTSWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00428">LockAnalysis.h:428</a></div></div>
178
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae7942c801e05357bb63f08c24489daf6"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae7942c801e05357bb63f08c24489daf6">SVF::LockAnalysis::getSpanfromCxtLock</a></div><div class="ttdeci">LockSpan &amp; getSpanfromCxtLock(const CxtLock &amp;cl)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00263">LockAnalysis.h:263</a></div></div>
179
+ <div class="ttc" id="classSVF_1_1TCT_html_a1602d02773578bca73dcbd29b95c67d0"><div class="ttname"><a href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">SVF::TCT::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get TCG. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00188">TCT.h:188</a></div></div>
180
180
  <div class="ttc" id="TCT_8h_html"><div class="ttname"><a href="TCT_8h.html">TCT.h</a></div></div>
181
181
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
182
- <div class="ttc" id="classSVF_1_1TCT_html"><div class="ttname"><a href="classSVF_1_1TCT.html">SVF::TCT</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00115">TCT.h:115</a></div></div>
183
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a711760ebaed0437176f4f9d314e9929c"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">SVF::LockAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00502">LockAnalysis.cpp:502</a></div></div>
182
+ <div class="ttc" id="classSVF_1_1TCT_html"><div class="ttname"><a href="classSVF_1_1TCT.html">SVF::TCT</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00137">TCT.h:137</a></div></div>
183
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a711760ebaed0437176f4f9d314e9929c"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">SVF::LockAnalysis::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00524">LockAnalysis.cpp:524</a></div></div>
184
184
  <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00250">BasicTypes.h:250</a></div></div>
185
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_adadee129c04b82576b4ca3c7594cdcb2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2">SVF::LockAnalysis::lockTime</a></div><div class="ttdeci">double lockTime</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00492">LockAnalysis.h:492</a></div></div>
186
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ab468a6a0f1705c000dc4260097222b06"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ab468a6a0f1705c000dc4260097222b06">SVF::LockAnalysis::CxtLock</a></div><div class="ttdeci">CxtStmt CxtLock</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00035">LockAnalysis.h:35</a></div></div>
187
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a00ccd89eff3fe8fec397df101f927cbe"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a00ccd89eff3fe8fec397df101f927cbe">SVF::LockAnalysis::analyzeLockSpanCxtStmt</a></div><div class="ttdeci">void analyzeLockSpanCxtStmt()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00331">LockAnalysis.cpp:331</a></div></div>
188
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a7d9fd3ddcadd84969b57491181983b17"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">SVF::LockAnalysis::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00518">LockAnalysis.cpp:518</a></div></div>
189
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_acdcc3fc4b90e7f67cfb9601ddc31d5f8"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#acdcc3fc4b90e7f67cfb9601ddc31d5f8">SVF::LockAnalysis::CILockToSpan</a></div><div class="ttdeci">Map&lt; const Instruction *, CISpan &gt; CILockToSpan</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00042">LockAnalysis.h:42</a></div></div>
190
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac1b42b0a53feae04f848e5b0828ff01a"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac1b42b0a53feae04f848e5b0828ff01a">SVF::LockAnalysis::printLocks</a></div><div class="ttdeci">void printLocks(const CxtStmt &amp;cts)</div><div class="ttdoc">Print locks and spans. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00394">LockAnalysis.cpp:394</a></div></div>
191
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a32543eb205653a65bb71de55d0471a1d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a32543eb205653a65bb71de55d0471a1d">SVF::LockAnalysis::InstToCxtStmtSet</a></div><div class="ttdeci">Map&lt; const Instruction *, LockSpan &gt; InstToCxtStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00054">LockAnalysis.h:54</a></div></div>
192
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a2fd796765f16cc7094f36d68c0ff70a0"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">SVF::LockAnalysis::cxtLocktoSpan</a></div><div class="ttdeci">CxtLockToSpan cxtLocktoSpan</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00462">LockAnalysis.h:462</a></div></div>
185
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_adadee129c04b82576b4ca3c7594cdcb2"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2">SVF::LockAnalysis::lockTime</a></div><div class="ttdeci">double lockTime</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00514">LockAnalysis.h:514</a></div></div>
186
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ab468a6a0f1705c000dc4260097222b06"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ab468a6a0f1705c000dc4260097222b06">SVF::LockAnalysis::CxtLock</a></div><div class="ttdeci">CxtStmt CxtLock</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00057">LockAnalysis.h:57</a></div></div>
187
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a00ccd89eff3fe8fec397df101f927cbe"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a00ccd89eff3fe8fec397df101f927cbe">SVF::LockAnalysis::analyzeLockSpanCxtStmt</a></div><div class="ttdeci">void analyzeLockSpanCxtStmt()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00353">LockAnalysis.cpp:353</a></div></div>
188
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a7d9fd3ddcadd84969b57491181983b17"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">SVF::LockAnalysis::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &amp;cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00540">LockAnalysis.cpp:540</a></div></div>
189
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_acdcc3fc4b90e7f67cfb9601ddc31d5f8"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#acdcc3fc4b90e7f67cfb9601ddc31d5f8">SVF::LockAnalysis::CILockToSpan</a></div><div class="ttdeci">Map&lt; const Instruction *, CISpan &gt; CILockToSpan</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00064">LockAnalysis.h:64</a></div></div>
190
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac1b42b0a53feae04f848e5b0828ff01a"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac1b42b0a53feae04f848e5b0828ff01a">SVF::LockAnalysis::printLocks</a></div><div class="ttdeci">void printLocks(const CxtStmt &amp;cts)</div><div class="ttdoc">Print locks and spans. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00416">LockAnalysis.cpp:416</a></div></div>
191
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a32543eb205653a65bb71de55d0471a1d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a32543eb205653a65bb71de55d0471a1d">SVF::LockAnalysis::InstToCxtStmtSet</a></div><div class="ttdeci">Map&lt; const Instruction *, LockSpan &gt; InstToCxtStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00076">LockAnalysis.h:76</a></div></div>
192
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a2fd796765f16cc7094f36d68c0ff70a0"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a2fd796765f16cc7094f36d68c0ff70a0">SVF::LockAnalysis::cxtLocktoSpan</a></div><div class="ttdeci">CxtLockToSpan cxtLocktoSpan</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00484">LockAnalysis.h:484</a></div></div>
193
193
  <div class="ttc" id="classSVF_1_1CxtStmt_html_a56e2767c327a383db09dca96edb19614"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">SVF::CxtStmt::dump</a></div><div class="ttdeci">void dump() const</div><div class="ttdoc">Dump CxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00109">CxtStmt.h:109</a></div></div>
194
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae8715683c7dfddc7b30caf6bf2b78296"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">SVF::LockAnalysis::instToCxtStmtSet</a></div><div class="ttdeci">InstToCxtStmtSet instToCxtStmtSet</div><div class="ttdoc">Map a statement to all its context-sensitive statements. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00453">LockAnalysis.h:453</a></div></div>
195
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a710aad28484677637367e9098a55c7d7"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">SVF::LockAnalysis::CxtStmtToCxtLockSet</a></div><div class="ttdeci">Map&lt; CxtStmt, CxtLockSet &gt; CxtStmtToCxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00055">LockAnalysis.h:55</a></div></div>
196
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a7335d5b13a6cb1dcde9706f30b8a4826"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a7335d5b13a6cb1dcde9706f30b8a4826">SVF::LockAnalysis::CxtLockToSpan</a></div><div class="ttdeci">Map&lt; CxtLock, LockSpan &gt; CxtLockToSpan</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00051">LockAnalysis.h:51</a></div></div>
197
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a5521de9933ce74d0954a942dfceae772"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">SVF::LockAnalysis::isTDAcquire</a></div><div class="ttdeci">bool isTDAcquire(const Instruction *call)</div><div class="ttdoc">Whether it is a lock site. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00426">LockAnalysis.h:426</a></div></div>
198
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a4d4501d62bf51475662b6ba66e6380aa"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4d4501d62bf51475662b6ba66e6380aa">SVF::LockAnalysis::isProtectedByCommonLock</a></div><div class="ttdeci">bool isProtectedByCommonLock(const Instruction *i1, const Instruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00568">LockAnalysis.cpp:568</a></div></div>
199
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a375cb175ec0068bacaa64cf40a49d485"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">SVF::LockAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, const CxtStmt &amp;src)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00337">LockAnalysis.h:337</a></div></div>
200
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a3081e7c7165908ed4aa282f398c5236d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">SVF::LockAnalysis::cxtLockset</a></div><div class="ttdeci">CxtLockSet cxtLockset</div><div class="ttdoc">Context-sensitive locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00457">LockAnalysis.h:457</a></div></div>
194
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae8715683c7dfddc7b30caf6bf2b78296"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">SVF::LockAnalysis::instToCxtStmtSet</a></div><div class="ttdeci">InstToCxtStmtSet instToCxtStmtSet</div><div class="ttdoc">Map a statement to all its context-sensitive statements. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00475">LockAnalysis.h:475</a></div></div>
195
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a710aad28484677637367e9098a55c7d7"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">SVF::LockAnalysis::CxtStmtToCxtLockSet</a></div><div class="ttdeci">Map&lt; CxtStmt, CxtLockSet &gt; CxtStmtToCxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00077">LockAnalysis.h:77</a></div></div>
196
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a7335d5b13a6cb1dcde9706f30b8a4826"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a7335d5b13a6cb1dcde9706f30b8a4826">SVF::LockAnalysis::CxtLockToSpan</a></div><div class="ttdeci">Map&lt; CxtLock, LockSpan &gt; CxtLockToSpan</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00073">LockAnalysis.h:73</a></div></div>
197
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a5521de9933ce74d0954a942dfceae772"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">SVF::LockAnalysis::isTDAcquire</a></div><div class="ttdeci">bool isTDAcquire(const Instruction *call)</div><div class="ttdoc">Whether it is a lock site. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00448">LockAnalysis.h:448</a></div></div>
198
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a4d4501d62bf51475662b6ba66e6380aa"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a4d4501d62bf51475662b6ba66e6380aa">SVF::LockAnalysis::isProtectedByCommonLock</a></div><div class="ttdeci">bool isProtectedByCommonLock(const Instruction *i1, const Instruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00590">LockAnalysis.cpp:590</a></div></div>
199
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a375cb175ec0068bacaa64cf40a49d485"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">SVF::LockAnalysis::markCxtStmtFlag</a></div><div class="ttdeci">void markCxtStmtFlag(const CxtStmt &amp;tgr, const CxtStmt &amp;src)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00359">LockAnalysis.h:359</a></div></div>
200
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a3081e7c7165908ed4aa282f398c5236d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a3081e7c7165908ed4aa282f398c5236d">SVF::LockAnalysis::cxtLockset</a></div><div class="ttdeci">CxtLockSet cxtLockset</div><div class="ttdoc">Context-sensitive locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00479">LockAnalysis.h:479</a></div></div>
201
201
  <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
202
202
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00174">WorkList.h:174</a></div></div>
203
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a52e79d50288bfa2d146072be53ed058b"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a52e79d50288bfa2d146072be53ed058b">SVF::LockAnalysis::handleFork</a></div><div class="ttdeci">void handleFork(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle fork. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00407">LockAnalysis.cpp:407</a></div></div>
203
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a52e79d50288bfa2d146072be53ed058b"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a52e79d50288bfa2d146072be53ed058b">SVF::LockAnalysis::handleFork</a></div><div class="ttdeci">void handleFork(const CxtStmt &amp;cts)</div><div class="ttdoc">Handle fork. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00429">LockAnalysis.cpp:429</a></div></div>
204
204
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
205
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ab782401c6521a2810e28ac602710ac22"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ab782401c6521a2810e28ac602710ac22">SVF::LockAnalysis::CxtLockToLockSet</a></div><div class="ttdeci">Map&lt; CxtLock, NodeBS &gt; CxtLockToLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00052">LockAnalysis.h:52</a></div></div>
206
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a271506d5032033efae684b0d729f5b3e"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a271506d5032033efae684b0d729f5b3e">SVF::LockAnalysis::buildCandidateFuncSetforLock</a></div><div class="ttdeci">void buildCandidateFuncSetforLock()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00095">LockAnalysis.cpp:95</a></div></div>
207
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac2fbbabca4506e28f706cf54b1614791a2709e7eb7ea9829c7e649e6dd86d6a48"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791a2709e7eb7ea9829c7e649e6dd86d6a48">SVF::LockAnalysis::TDLocked</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00031">LockAnalysis.h:31</a></div></div>
208
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_aa5b3666fbaef262981626952f1658736"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736">SVF::LockAnalysis::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtStmt &amp;cs)</div><div class="ttdoc">Worklist operations. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00402">LockAnalysis.h:402</a></div></div>
205
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ab782401c6521a2810e28ac602710ac22"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ab782401c6521a2810e28ac602710ac22">SVF::LockAnalysis::CxtLockToLockSet</a></div><div class="ttdeci">Map&lt; CxtLock, NodeBS &gt; CxtLockToLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00074">LockAnalysis.h:74</a></div></div>
206
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_a271506d5032033efae684b0d729f5b3e"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a271506d5032033efae684b0d729f5b3e">SVF::LockAnalysis::buildCandidateFuncSetforLock</a></div><div class="ttdeci">void buildCandidateFuncSetforLock()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00117">LockAnalysis.cpp:117</a></div></div>
207
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ac2fbbabca4506e28f706cf54b1614791a2709e7eb7ea9829c7e649e6dd86d6a48"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ac2fbbabca4506e28f706cf54b1614791a2709e7eb7ea9829c7e649e6dd86d6a48">SVF::LockAnalysis::TDLocked</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00053">LockAnalysis.h:53</a></div></div>
208
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_aa5b3666fbaef262981626952f1658736"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736">SVF::LockAnalysis::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtStmt &amp;cs)</div><div class="ttdoc">Worklist operations. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00424">LockAnalysis.h:424</a></div></div>
209
209
  <div class="ttc" id="classSVF_1_1CxtProc_html"><div class="ttname"><a href="classSVF_1_1CxtProc.html">SVF::CxtProc</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00307">CxtStmt.h:307</a></div></div>
210
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ab99ef73905f35d4c20ca408586fc8680"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ab99ef73905f35d4c20ca408586fc8680">SVF::LockAnalysis::handleCallRelation</a></div><div class="ttdeci">void handleCallRelation(CxtLockProc &amp;clp, const PTACallGraphEdge *cgEdge, CallSite call)</div><div class="ttdoc">Handle call relations. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00308">LockAnalysis.cpp:308</a></div></div>
210
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ab99ef73905f35d4c20ca408586fc8680"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ab99ef73905f35d4c20ca408586fc8680">SVF::LockAnalysis::handleCallRelation</a></div><div class="ttdeci">void handleCallRelation(CxtLockProc &amp;clp, const PTACallGraphEdge *cgEdge, CallSite call)</div><div class="ttdoc">Handle call relations. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00330">LockAnalysis.cpp:330</a></div></div>
211
211
  <div class="ttc" id="classSVF_1_1ThreadAPI_html_a38adae633d5aceddcca3b3a23ad66db9"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a38adae633d5aceddcca3b3a23ad66db9">SVF::ThreadAPI::isTDRelease</a></div><div class="ttdeci">bool isTDRelease(const Instruction *inst) const</div><div class="ttdoc">Return true if this call release a lock. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00296">ThreadAPI.h:296</a></div></div>
212
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae682eb30763f0f52184eb36c95fc3811"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">SVF::LockAnalysis::InstSet</a></div><div class="ttdeci">Set&lt; const Instruction * &gt; InstSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00040">LockAnalysis.h:40</a></div></div>
213
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_af30d0dad3d17188de8c2cea9b004f3d3"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#af30d0dad3d17188de8c2cea9b004f3d3">SVF::LockAnalysis::isInSameSpan</a></div><div class="ttdeci">bool isInSameSpan(const Instruction *I1, const Instruction *I2)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00646">LockAnalysis.cpp:646</a></div></div>
212
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_ae682eb30763f0f52184eb36c95fc3811"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">SVF::LockAnalysis::InstSet</a></div><div class="ttdeci">Set&lt; const Instruction * &gt; InstSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00062">LockAnalysis.h:62</a></div></div>
213
+ <div class="ttc" id="classSVF_1_1LockAnalysis_html_af30d0dad3d17188de8c2cea9b004f3d3"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#af30d0dad3d17188de8c2cea9b004f3d3">SVF::LockAnalysis::isInSameSpan</a></div><div class="ttdeci">bool isInSameSpan(const Instruction *I1, const Instruction *I2)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00668">LockAnalysis.cpp:668</a></div></div>
214
214
  </div><!-- fragment --></div><!-- contents -->
215
215
  <!-- start footer part -->
216
216
  <hr class="footer"/><address class="footer"><small>