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.
- package/README.md +1 -1
- package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +43 -43
- package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/Andersen_8h_source.html +56 -56
- package/SVF-doxygen/html/html/CFLGrammar_8txt.html +8 -8
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +10 -1
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +3 -1
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +44 -44
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +43 -43
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +36 -36
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +21 -21
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +51 -51
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +51 -51
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +111 -111
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +5 -2
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -2
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +40 -40
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +52 -52
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +42 -42
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +34 -34
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +114 -114
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +94 -94
- package/SVF-doxygen/html/html/MHP_8h_source.html +135 -135
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +6 -6
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +6 -6
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +33 -33
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +14 -14
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +28 -28
- package/SVF-doxygen/html/html/MTA_8h_source.html +24 -24
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +50 -50
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +93 -93
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +59 -59
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +103 -103
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +185 -185
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/PCG_8h_source.html +52 -52
- package/SVF-doxygen/html/html/PEGGrammar_8txt.html +14 -32
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +40 -40
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +181 -181
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +30 -30
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +60 -60
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberCheckerAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +66 -66
- package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +6 -6
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +44 -44
- package/SVF-doxygen/html/html/TCT_8h_source.html +93 -93
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +25 -25
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +38 -38
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/WPAStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +13 -10
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +190 -2
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +102 -102
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +39 -39
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +100 -100
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +58 -58
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +165 -165
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +286 -286
- package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1EntryCHI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +5 -4
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +40 -5
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +71 -71
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +218 -218
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +334 -334
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +246 -246
- package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +200 -200
- package/SVF-doxygen/html/html/classSVF_1_1MSSACHI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MSSADEF.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAMU.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +53 -53
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +181 -181
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +44 -44
- package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +267 -267
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +128 -128
- package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1MutableIncDFPTData.html +88 -88
- package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +78 -78
- package/SVF-doxygen/html/html/classSVF_1_1MutableVersionedPTData.html +77 -77
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +131 -131
- package/SVF-doxygen/html/html/classSVF_1_1PTData.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +107 -107
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +66 -66
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +84 -84
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +77 -77
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +134 -134
- package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +77 -77
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +161 -161
- package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1RetMU.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGNodeLockSpan.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +157 -157
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +264 -264
- package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +100 -100
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +6 -6
- package/SVF-doxygen/html/html/dda_8cpp.html +2 -2
- package/SVF-doxygen/html/html/dda_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/functions_a.html +11 -5
- package/SVF-doxygen/html/html/functions_c.html +21 -18
- package/SVF-doxygen/html/html/functions_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func.html +16 -10
- package/SVF-doxygen/html/html/functions_func_c.html +19 -16
- package/SVF-doxygen/html/html/functions_func_i.html +11 -8
- package/SVF-doxygen/html/html/functions_i.html +11 -8
- package/SVF-doxygen/html/html/functions_l.html +5 -5
- package/SVF-doxygen/html/html/functions_p.html +6 -6
- package/SVF-doxygen/html/html/functions_r.html +3 -7
- package/SVF-doxygen/html/html/functions_s.html +16 -14
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_w.html +11 -11
- package/SVF-doxygen/html/html/globals_g.html +3 -3
- package/SVF-doxygen/html/html/globals_v.html +1 -2
- package/SVF-doxygen/html/html/globals_vars.html +3 -4
- package/SVF-doxygen/html/html/mta_8cpp.html +2 -2
- package/SVF-doxygen/html/html/mta_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
- package/SVF-doxygen/html/html/search/all_1.js +2 -0
- package/SVF-doxygen/html/html/search/all_10.js +5 -5
- package/SVF-doxygen/html/html/search/all_11.js +2 -2
- package/SVF-doxygen/html/html/search/all_12.js +8 -8
- package/SVF-doxygen/html/html/search/all_13.js +2 -2
- package/SVF-doxygen/html/html/search/all_14.js +1 -1
- package/SVF-doxygen/html/html/search/all_15.js +4 -4
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_3.js +1 -0
- package/SVF-doxygen/html/html/search/all_6.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +2 -2
- package/SVF-doxygen/html/html/search/all_9.js +2 -1
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/functions_0.js +2 -0
- package/SVF-doxygen/html/html/search/functions_2.js +1 -0
- package/SVF-doxygen/html/html/search/functions_8.js +1 -0
- package/SVF-doxygen/html/html/search/variables_13.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_7.js +2 -2
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1MemRegion_1_1equalMemRegion.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html +4 -4
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +15 -15
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCT_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SVFGNodeLockSpan_01_4.html +3 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/include/CFL/CFLGraphBuilder.h +9 -0
- package/include/CFL/PEGGrammar.txt +4 -8
- package/include/DDA/ContextDDA.h +29 -0
- package/include/DDA/DDAClient.h +23 -0
- package/include/DDA/DDAPass.h +22 -0
- package/include/DDA/DDAStat.h +22 -0
- package/include/DDA/DDAVFSolver.h +22 -0
- package/include/DDA/FlowDDA.h +29 -0
- package/include/MSSA/MSSAMuChi.h +1 -1
- package/include/MSSA/MemPartition.h +1 -1
- package/include/MSSA/MemRegion.h +5 -1
- package/include/MSSA/MemSSA.h +7 -1
- package/include/MSSA/SVFGBuilder.h +1 -1
- package/include/MTA/FSMPTA.h +26 -0
- package/include/MTA/LockAnalysis.h +22 -0
- package/include/MTA/MHP.h +22 -0
- package/include/MTA/MTA.h +27 -1
- package/include/MTA/MTAStat.h +22 -0
- package/include/MTA/PCG.h +22 -0
- package/include/MTA/TCT.h +22 -0
- package/include/MemoryModel/AbstractPointsToDS.h +34 -0
- package/include/MemoryModel/ConditionalPT.h +1 -1
- package/include/MemoryModel/LocationSet.h +1 -1
- package/include/MemoryModel/MutablePointsToDS.h +32 -0
- package/include/MemoryModel/PAGBuilderFromFile.h +2 -2
- package/include/MemoryModel/PersistentPointsToCache.h +3 -1
- package/include/MemoryModel/PersistentPointsToDS.h +10 -0
- package/include/MemoryModel/PointerAnalysis.h +1 -1
- package/include/MemoryModel/PointerAnalysisImpl.h +1 -1
- package/include/MemoryModel/SVFStatements.h +1 -1
- package/include/SABER/DoubleFreeChecker.h +1 -1
- package/include/SABER/FileChecker.h +1 -1
- package/include/SABER/LeakChecker.h +1 -1
- package/include/SABER/ProgSlice.h +8 -1
- package/include/SABER/SaberAnnotator.h +1 -1
- package/include/SABER/SaberCheckerAPI.h +1 -1
- package/include/SABER/SaberCondAllocator.h +1 -1
- package/include/SABER/SaberSVFGBuilder.h +1 -1
- package/include/SABER/SrcSnkDDA.h +8 -1
- package/include/SABER/SrcSnkSolver.h +1 -1
- package/include/Util/ExtAPI.h +3 -0
- package/include/Util/ExtAPI.json +1456 -44
- package/include/WPA/Andersen.h +5 -0
- package/include/WPA/TypeAnalysis.h +1 -1
- package/include/WPA/VersionedFlowSensitive.h +4 -0
- package/lib/CFL/CFLGraphBuilder.cpp +44 -0
- package/lib/DDA/ContextDDA.cpp +22 -0
- package/lib/DDA/DDAClient.cpp +22 -0
- package/lib/DDA/DDAPass.cpp +23 -0
- package/lib/DDA/DDAStat.cpp +22 -0
- package/lib/DDA/FlowDDA.cpp +22 -0
- package/lib/MTA/FSMPTA.cpp +22 -0
- package/lib/MTA/LockAnalysis.cpp +22 -0
- package/lib/MTA/MHP.cpp +23 -1
- package/lib/MTA/MTA.cpp +23 -0
- package/lib/MTA/MTAStat.cpp +22 -0
- package/lib/MTA/PCG.cpp +22 -0
- package/lib/MTA/TCT.cpp +23 -0
- package/lib/MemoryModel/LocationSet.cpp +1 -1
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +23 -0
- package/lib/SABER/DoubleFreeChecker.cpp +1 -1
- package/lib/SABER/FileChecker.cpp +1 -1
- package/lib/SABER/LeakChecker.cpp +1 -1
- package/lib/SABER/ProgSlice.cpp +1 -1
- package/lib/SABER/SaberAnnotator.cpp +1 -1
- package/lib/SABER/SaberCheckerAPI.cpp +1 -1
- package/lib/SABER/SaberCondAllocator.cpp +1 -1
- package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
- package/lib/SABER/SrcSnkDDA.cpp +1 -1
- package/lib/Util/ExtAPI.cpp +42 -4
- package/lib/WPA/Steensgaard.cpp +22 -0
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/lib/WPA/WPAPass.cpp +1 -1
- package/package.json +1 -1
|
@@ -368,7 +368,7 @@ Private Attributes</h2></td></tr>
|
|
|
368
368
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
369
369
|
<div class="textblock"><p>Lock analysis </p>
|
|
370
370
|
|
|
371
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
371
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00045">45</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
372
372
|
</div><h2 class="groupheader">Member Typedef Documentation</h2>
|
|
373
373
|
<a id="acdcc3fc4b90e7f67cfb9601ddc31d5f8"></a>
|
|
374
374
|
<h2 class="memtitle"><span class="permalink"><a href="#acdcc3fc4b90e7f67cfb9601ddc31d5f8">◆ </a></span>CILockToSpan</h2>
|
|
@@ -382,7 +382,7 @@ Private Attributes</h2></td></tr>
|
|
|
382
382
|
</table>
|
|
383
383
|
</div><div class="memdoc">
|
|
384
384
|
|
|
385
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
385
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00064">64</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
386
386
|
|
|
387
387
|
</div>
|
|
388
388
|
</div>
|
|
@@ -398,7 +398,7 @@ Private Attributes</h2></td></tr>
|
|
|
398
398
|
</table>
|
|
399
399
|
</div><div class="memdoc">
|
|
400
400
|
|
|
401
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
401
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00063">63</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
402
402
|
|
|
403
403
|
</div>
|
|
404
404
|
</div>
|
|
@@ -414,7 +414,7 @@ Private Attributes</h2></td></tr>
|
|
|
414
414
|
</table>
|
|
415
415
|
</div><div class="memdoc">
|
|
416
416
|
|
|
417
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
417
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00057">57</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
418
418
|
|
|
419
419
|
</div>
|
|
420
420
|
</div>
|
|
@@ -430,7 +430,7 @@ Private Attributes</h2></td></tr>
|
|
|
430
430
|
</table>
|
|
431
431
|
</div><div class="memdoc">
|
|
432
432
|
|
|
433
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
433
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00058">58</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
434
434
|
|
|
435
435
|
</div>
|
|
436
436
|
</div>
|
|
@@ -446,7 +446,7 @@ Private Attributes</h2></td></tr>
|
|
|
446
446
|
</table>
|
|
447
447
|
</div><div class="memdoc">
|
|
448
448
|
|
|
449
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
449
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00079">79</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
450
450
|
|
|
451
451
|
</div>
|
|
452
452
|
</div>
|
|
@@ -462,7 +462,7 @@ Private Attributes</h2></td></tr>
|
|
|
462
462
|
</table>
|
|
463
463
|
</div><div class="memdoc">
|
|
464
464
|
|
|
465
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
465
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00078">78</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
466
466
|
|
|
467
467
|
</div>
|
|
468
468
|
</div>
|
|
@@ -478,7 +478,7 @@ Private Attributes</h2></td></tr>
|
|
|
478
478
|
</table>
|
|
479
479
|
</div><div class="memdoc">
|
|
480
480
|
|
|
481
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
481
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00071">71</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
482
482
|
|
|
483
483
|
</div>
|
|
484
484
|
</div>
|
|
@@ -494,7 +494,7 @@ Private Attributes</h2></td></tr>
|
|
|
494
494
|
</table>
|
|
495
495
|
</div><div class="memdoc">
|
|
496
496
|
|
|
497
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
497
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00074">74</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
498
498
|
|
|
499
499
|
</div>
|
|
500
500
|
</div>
|
|
@@ -510,7 +510,7 @@ Private Attributes</h2></td></tr>
|
|
|
510
510
|
</table>
|
|
511
511
|
</div><div class="memdoc">
|
|
512
512
|
|
|
513
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
513
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00073">73</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
514
514
|
|
|
515
515
|
</div>
|
|
516
516
|
</div>
|
|
@@ -526,7 +526,7 @@ Private Attributes</h2></td></tr>
|
|
|
526
526
|
</table>
|
|
527
527
|
</div><div class="memdoc">
|
|
528
528
|
|
|
529
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
529
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00070">70</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
530
530
|
|
|
531
531
|
</div>
|
|
532
532
|
</div>
|
|
@@ -542,7 +542,7 @@ Private Attributes</h2></td></tr>
|
|
|
542
542
|
</table>
|
|
543
543
|
</div><div class="memdoc">
|
|
544
544
|
|
|
545
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
545
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00077">77</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
546
546
|
|
|
547
547
|
</div>
|
|
548
548
|
</div>
|
|
@@ -558,7 +558,7 @@ Private Attributes</h2></td></tr>
|
|
|
558
558
|
</table>
|
|
559
559
|
</div><div class="memdoc">
|
|
560
560
|
|
|
561
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
561
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00067">67</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
562
562
|
|
|
563
563
|
</div>
|
|
564
564
|
</div>
|
|
@@ -574,7 +574,7 @@ Private Attributes</h2></td></tr>
|
|
|
574
574
|
</table>
|
|
575
575
|
</div><div class="memdoc">
|
|
576
576
|
|
|
577
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
577
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00068">68</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
578
578
|
|
|
579
579
|
</div>
|
|
580
580
|
</div>
|
|
@@ -590,7 +590,7 @@ Private Attributes</h2></td></tr>
|
|
|
590
590
|
</table>
|
|
591
591
|
</div><div class="memdoc">
|
|
592
592
|
|
|
593
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
593
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00065">65</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
594
594
|
|
|
595
595
|
</div>
|
|
596
596
|
</div>
|
|
@@ -606,7 +606,7 @@ Private Attributes</h2></td></tr>
|
|
|
606
606
|
</table>
|
|
607
607
|
</div><div class="memdoc">
|
|
608
608
|
|
|
609
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
609
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00062">62</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
610
610
|
|
|
611
611
|
</div>
|
|
612
612
|
</div>
|
|
@@ -622,7 +622,7 @@ Private Attributes</h2></td></tr>
|
|
|
622
622
|
</table>
|
|
623
623
|
</div><div class="memdoc">
|
|
624
624
|
|
|
625
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
625
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00081">81</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
626
626
|
|
|
627
627
|
</div>
|
|
628
628
|
</div>
|
|
@@ -638,7 +638,7 @@ Private Attributes</h2></td></tr>
|
|
|
638
638
|
</table>
|
|
639
639
|
</div><div class="memdoc">
|
|
640
640
|
|
|
641
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
641
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00076">76</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
642
642
|
|
|
643
643
|
</div>
|
|
644
644
|
</div>
|
|
@@ -654,7 +654,7 @@ Private Attributes</h2></td></tr>
|
|
|
654
654
|
</table>
|
|
655
655
|
</div><div class="memdoc">
|
|
656
656
|
|
|
657
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
657
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00066">66</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
658
658
|
|
|
659
659
|
</div>
|
|
660
660
|
</div>
|
|
@@ -670,7 +670,7 @@ Private Attributes</h2></td></tr>
|
|
|
670
670
|
</table>
|
|
671
671
|
</div><div class="memdoc">
|
|
672
672
|
|
|
673
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
673
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00061">61</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
674
674
|
|
|
675
675
|
</div>
|
|
676
676
|
</div>
|
|
@@ -686,7 +686,7 @@ Private Attributes</h2></td></tr>
|
|
|
686
686
|
</table>
|
|
687
687
|
</div><div class="memdoc">
|
|
688
688
|
|
|
689
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
689
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00060">60</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
690
690
|
|
|
691
691
|
</div>
|
|
692
692
|
</div>
|
|
@@ -702,7 +702,7 @@ Private Attributes</h2></td></tr>
|
|
|
702
702
|
</table>
|
|
703
703
|
</div><div class="memdoc">
|
|
704
704
|
|
|
705
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
705
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00075">75</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
706
706
|
|
|
707
707
|
</div>
|
|
708
708
|
</div>
|
|
@@ -718,7 +718,7 @@ Private Attributes</h2></td></tr>
|
|
|
718
718
|
</table>
|
|
719
719
|
</div><div class="memdoc">
|
|
720
720
|
|
|
721
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
721
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00069">69</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
722
722
|
|
|
723
723
|
</div>
|
|
724
724
|
</div>
|
|
@@ -742,10 +742,10 @@ Private Attributes</h2></td></tr>
|
|
|
742
742
|
<tr><td class="fieldname"><a id="ac2fbbabca4506e28f706cf54b1614791ac531588e8556653306e03ccaacb83dac"></a>TDUnlocked </td><td class="fielddoc"></td></tr>
|
|
743
743
|
</table>
|
|
744
744
|
|
|
745
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
746
|
-
<div class="fragment"><div class="line"><a name="
|
|
747
|
-
<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#
|
|
748
|
-
<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#
|
|
745
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00050">50</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
746
|
+
<div class="fragment"><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <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"> 53</span>  <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"> 54</span>  <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>  };</div><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>
|
|
747
|
+
<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>
|
|
748
|
+
<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>
|
|
749
749
|
</div><!-- fragment -->
|
|
750
750
|
</div>
|
|
751
751
|
</div>
|
|
@@ -774,12 +774,12 @@ Private Attributes</h2></td></tr>
|
|
|
774
774
|
</table>
|
|
775
775
|
</div><div class="memdoc">
|
|
776
776
|
|
|
777
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
778
|
-
<div class="fragment"><div class="line"><a name="
|
|
779
|
-
<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#
|
|
780
|
-
<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#
|
|
781
|
-
<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#
|
|
782
|
-
<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#
|
|
777
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00083">83</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
778
|
+
<div class="fragment"><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  : <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>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><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>
|
|
779
|
+
<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>
|
|
780
|
+
<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>
|
|
781
|
+
<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>
|
|
782
|
+
<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>
|
|
783
783
|
</div><!-- fragment -->
|
|
784
784
|
</div>
|
|
785
785
|
</div>
|
|
@@ -820,8 +820,8 @@ Private Attributes</h2></td></tr>
|
|
|
820
820
|
|
|
821
821
|
<p>Add intra-procedural lock. </p>
|
|
822
822
|
|
|
823
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
824
|
-
<div class="fragment"><div class="line"><a name="
|
|
823
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00121">121</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
824
|
+
<div class="fragment"><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <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>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <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>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</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>
|
|
825
825
|
</div><!-- fragment -->
|
|
826
826
|
</div>
|
|
827
827
|
</div>
|
|
@@ -862,11 +862,11 @@ Private Attributes</h2></td></tr>
|
|
|
862
862
|
<p>Context-sensitive locks. </p>
|
|
863
863
|
<p>Add inter-procedural context-sensitive lock </p>
|
|
864
864
|
|
|
865
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
866
|
-
<div class="fragment"><div class="line"><a name="
|
|
865
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00152">152</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
866
|
+
<div class="fragment"><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ab468a6a0f1705c000dc4260097222b06">CxtLock</a> cxtlock(cxt,inst);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <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>  <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>() << <span class="stringliteral">"LockAnalysis Process new lock "</span>; cxtlock.dump());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><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>
|
|
867
867
|
<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 & 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>
|
|
868
|
-
<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#
|
|
869
|
-
<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#
|
|
868
|
+
<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>
|
|
869
|
+
<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>
|
|
870
870
|
<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>
|
|
871
871
|
</div><!-- fragment -->
|
|
872
872
|
</div>
|
|
@@ -907,9 +907,9 @@ Private Attributes</h2></td></tr>
|
|
|
907
907
|
|
|
908
908
|
<p>Add context-sensitive statement. </p>
|
|
909
909
|
|
|
910
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
911
|
-
<div class="fragment"><div class="line"><a name="
|
|
912
|
-
<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#
|
|
910
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00233">233</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
911
|
+
<div class="fragment"><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <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>  <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>  }</div><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>
|
|
912
|
+
<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>
|
|
913
913
|
</div><!-- fragment -->
|
|
914
914
|
</div>
|
|
915
915
|
</div>
|
|
@@ -949,9 +949,9 @@ Private Attributes</h2></td></tr>
|
|
|
949
949
|
|
|
950
950
|
<p>Add intra-procedural lock. </p>
|
|
951
951
|
|
|
952
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
953
|
-
<div class="fragment"><div class="line"><a name="
|
|
954
|
-
<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#
|
|
952
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00111">111</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
953
|
+
<div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <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>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <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>  <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>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><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>
|
|
954
|
+
<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>
|
|
955
955
|
</div><!-- fragment -->
|
|
956
956
|
</div>
|
|
957
957
|
</div>
|
|
@@ -991,9 +991,9 @@ Private Attributes</h2></td></tr>
|
|
|
991
991
|
|
|
992
992
|
<p>Return true if two locksets has at least one alias lock. </p>
|
|
993
993
|
|
|
994
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
995
|
-
<div class="fragment"><div class="line"><a name="
|
|
996
|
-
<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#
|
|
994
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00180">180</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
995
|
+
<div class="fragment"><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <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>  {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ab468a6a0f1705c000dc4260097222b06">CxtLock</a>& lock = *it;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <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>  {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <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>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><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 &cl1, const CxtLock &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>
|
|
996
|
+
<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>
|
|
997
997
|
</div><!-- fragment -->
|
|
998
998
|
</div>
|
|
999
999
|
</div>
|
|
@@ -1013,21 +1013,21 @@ Private Attributes</h2></td></tr>
|
|
|
1013
1013
|
</div><div class="memdoc">
|
|
1014
1014
|
<p>context-sensitive forward traversal from each lock site. Generate following results (1) context-sensitive lock site, (2) maps a context-sensitive lock site to its corresponding lock span. </p>
|
|
1015
1015
|
|
|
1016
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
1017
|
-
<div class="fragment"><div class="line"><a name="
|
|
1016
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00064">64</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1017
|
+
<div class="fragment"><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aa8683de99ad02fb75b175b0bb54e5f7d">collectLockUnlocksites</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a271506d5032033efae684b0d729f5b3e">buildCandidateFuncSetforLock</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> lockStart = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tIntra-procedural LockAnalysis\n"</span>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <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">outs</a>() << <span class="stringliteral">"\tIntra-procedural LockAnalysis\n"</span>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a8a34f7544f22a87e1caf010c34abda75">analyzeIntraProcedualLock</a>();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tCollect context-sensitive locks\n"</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <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">outs</a>() << <span class="stringliteral">"\tCollect context-sensitive locks\n"</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ae03db88ef0ad0da2c31cf1623b32165f">collectCxtLock</a>();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\tInter-procedural LockAnalysis\n"</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <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">outs</a>() << <span class="stringliteral">"\tInter-procedural LockAnalysis\n"</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a00ccd89eff3fe8fec397df101f927cbe">analyzeLockSpanCxtStmt</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> lockEnd = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#adadee129c04b82576b4ca3c7594cdcb2">lockTime</a> += (lockEnd - lockStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a78b3b44f2c0dc94dc1363ca57ee76d66">Options::LockValid</a>)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a935128c9952714fcc98febed491ee85d">validateResults</a>();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> }</div><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>
|
|
1018
1018
|
<div class="ttc" id="classSVF_1_1Options_html_a78b3b44f2c0dc94dc1363ca57ee76d66"><div class="ttname"><a href="classSVF_1_1Options.html#a78b3b44f2c0dc94dc1363ca57ee76d66">SVF::Options::LockValid</a></div><div class="ttdeci">static const llvm::cl::opt< bool > LockValid</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00187">Options.h:187</a></div></div>
|
|
1019
|
-
<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#
|
|
1019
|
+
<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>
|
|
1020
1020
|
<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 & 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>
|
|
1021
1021
|
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00041">SVFStat.cpp:41</a></div></div>
|
|
1022
1022
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
|
|
1023
|
-
<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#
|
|
1024
|
-
<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#
|
|
1025
|
-
<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#
|
|
1023
|
+
<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>
|
|
1024
|
+
<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>
|
|
1025
|
+
<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>
|
|
1026
1026
|
<div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00160">SVFBasicTypes.h:160</a></div></div>
|
|
1027
|
-
<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#
|
|
1028
|
-
<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#
|
|
1027
|
+
<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>
|
|
1028
|
+
<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>
|
|
1029
1029
|
<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>
|
|
1030
|
-
<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#
|
|
1030
|
+
<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>
|
|
1031
1031
|
<div class="ttc" id="SVFBasicTypes_8h_html_ab6f41e9db3675dc689c5492418885041"><div class="ttname"><a href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a></div><div class="ttdeci">#define DOTIMESTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
|
|
1032
1032
|
</div><!-- fragment -->
|
|
1033
1033
|
</div>
|
|
@@ -1049,15 +1049,15 @@ Private Attributes</h2></td></tr>
|
|
|
1049
1049
|
<p>Analyze intraprocedural locks A lock is intraprocedural if its lock span is within a procedural </p>
|
|
1050
1050
|
<p>FIXME:Should we intersect forwardInsts and backwardInsts? </p>
|
|
1051
1051
|
|
|
1052
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
1053
|
-
<div class="fragment"><div class="line"><a name="
|
|
1052
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00165">165</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1053
|
+
<div class="fragment"><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// Identify the protected Instructions.</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">for</span> (InstSet::const_iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">locksites</a>.begin(), ie = <a class="code" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">locksites</a>.end(); it != ie; ++it)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a> *lockSite = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>>(*it);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  assert(lockSite && <span class="stringliteral">"Lock acquire instruction must be CallInst"</span>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// Perform forward traversal</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">InstSet</a> forwardInsts;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">InstSet</a> backwardInsts;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">InstSet</a> unlockSet;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">bool</span> forward = <a class="code" href="classSVF_1_1LockAnalysis.html#a6febb0bb12f4983cd54b3bd310ce65d2">intraForwardTraverse</a>(lockSite,unlockSet,forwardInsts);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordtype">bool</span> backward = <a class="code" href="classSVF_1_1LockAnalysis.html#a5f693c893f3701e1e025881f91193d53">intraBackwardTraverse</a>(unlockSet,backwardInsts);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span>(forward && backward)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ab28428444170091d2c65572263b9f40b">addIntraLock</a>(lockSite,forwardInsts);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(forward && !backward)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a0cc6e4b4ab78f3c54b68fe35adb02957">addCondIntraLock</a>(lockSite,forwardInsts);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> }</div><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>
|
|
1054
1054
|
<div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00102">BasicTypes.h:102</a></div></div>
|
|
1055
|
-
<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 &stmts)</div><div class="ttdoc">Add intra-procedural lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1056
|
-
<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 &unlockset, InstSet &forwardInsts)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#
|
|
1057
|
-
<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 &unlockset, InstSet &backwardInsts)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#
|
|
1058
|
-
<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 &stmts)</div><div class="ttdoc">Add intra-procedural lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1055
|
+
<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 &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>
|
|
1056
|
+
<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 &unlockset, InstSet &forwardInsts)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00193">LockAnalysis.cpp:193</a></div></div>
|
|
1057
|
+
<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 &unlockset, InstSet &backwardInsts)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00237">LockAnalysis.cpp:237</a></div></div>
|
|
1058
|
+
<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 &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>
|
|
1059
1059
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
1060
|
-
<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< const Instruction * > InstSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1060
|
+
<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< const Instruction * > InstSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00062">LockAnalysis.h:62</a></div></div>
|
|
1061
1061
|
</div><!-- fragment -->
|
|
1062
1062
|
</div>
|
|
1063
1063
|
</div>
|
|
@@ -1076,36 +1076,36 @@ Private Attributes</h2></td></tr>
|
|
|
1076
1076
|
</table>
|
|
1077
1077
|
</div><div class="memdoc">
|
|
1078
1078
|
|
|
1079
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
1080
|
-
<div class="fragment"><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a561bb2fbfbeee9117efad7c7c70871d8">FunSet</a> entryFuncSet = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a692a74188f141ffbdbb859ecae8b07ab">getEntryProcs</a>();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">for</span> (FunSet::const_iterator it = entryFuncSet.begin(), eit = entryFuncSet.end(); it != eit; ++it)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">isLockCandidateFun</a>(*it))</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cxtstmt(cxt, &((*it)->front().front()));</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736">pushToCTSWorkList</a>(cxtstmt);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">while</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cts = <a class="code" href="classSVF_1_1LockAnalysis.html#a469bf90e852061a7cd8551066d6be0d1">popFromCTSWorkList</a>();</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aaa0f33f19d9f80eee98289119ba907d2">touchCxtStmt</a>(cts);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">instToCxtStmtSet</a>[curInst].insert(cts);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <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">outs</a>() << <span class="stringliteral">"\nVisit cxtStmt: "</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, cts.<a class="code" href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">dump</a>());</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <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">outs</a>() << <span class="stringliteral">"\nIts cxt lock sets: "</span>);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="classSVF_1_1LockAnalysis.html#ac1b42b0a53feae04f848e5b0828ff01a">printLocks</a>(cts));</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a6e34f3138e8ee558bb00d9d808afba16">isTDFork</a>(curInst))</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a52e79d50288bfa2d146072be53ed058b">handleFork</a>(cts);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">isTDAcquire</a>(curInst))</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  assert(<a class="code" href="classSVF_1_1LockAnalysis.html#a6c918786d065309e8a7b13759f410a09">hasCxtLock</a>(cts) && <span class="stringliteral">"context-sensitive lock not found!!"</span>);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#a718d6f2f55c1e2e7eb619c3e056ab458">addCxtStmtToSpan</a>(cts,cts))</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(cts);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#ae312fa9ddb320674f7bc31e29aa474ed">isTDRelease</a>(curInst))</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#a0b21446e6d5dfc1b5d0ebd75895225dd">removeCxtStmtToSpan</a>(cts,cts))</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(cts);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<CallInst>(curInst) && !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(curInst))</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a97b186f9417144557bb17c41d515a9f4">handleCall</a>(cts);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ReturnInst>(curInst))</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#acc3d402c68b9c22ab6d576b38c994fc6">handleRet</a>(cts);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(cts);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> }</div><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 &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>
|
|
1081
|
-
<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 &cts, const CxtLock &cl)</div><div class="ttdoc">Add context-sensitive statement. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1082
|
-
<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#
|
|
1079
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00353">353</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1080
|
+
<div class="fragment"><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a561bb2fbfbeee9117efad7c7c70871d8">FunSet</a> entryFuncSet = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a692a74188f141ffbdbb859ecae8b07ab">getEntryProcs</a>();</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">for</span> (FunSet::const_iterator it = entryFuncSet.begin(), eit = entryFuncSet.end(); it != eit; ++it)</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">isLockCandidateFun</a>(*it))</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cxtstmt(cxt, &((*it)->front().front()));</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aa5b3666fbaef262981626952f1658736">pushToCTSWorkList</a>(cxtstmt);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">while</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#a109293f282e9b920b0b13c58026f6f1d">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cts = <a class="code" href="classSVF_1_1LockAnalysis.html#a469bf90e852061a7cd8551066d6be0d1">popFromCTSWorkList</a>();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aaa0f33f19d9f80eee98289119ba907d2">touchCxtStmt</a>(cts);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ae8715683c7dfddc7b30caf6bf2b78296">instToCxtStmtSet</a>[curInst].insert(cts);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <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">outs</a>() << <span class="stringliteral">"\nVisit cxtStmt: "</span>);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, cts.<a class="code" href="classSVF_1_1CxtStmt.html#a56e2767c327a383db09dca96edb19614">dump</a>());</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <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">outs</a>() << <span class="stringliteral">"\nIts cxt lock sets: "</span>);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="classSVF_1_1LockAnalysis.html#ac1b42b0a53feae04f848e5b0828ff01a">printLocks</a>(cts));</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a6e34f3138e8ee558bb00d9d808afba16">isTDFork</a>(curInst))</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a52e79d50288bfa2d146072be53ed058b">handleFork</a>(cts);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">isTDAcquire</a>(curInst))</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  assert(<a class="code" href="classSVF_1_1LockAnalysis.html#a6c918786d065309e8a7b13759f410a09">hasCxtLock</a>(cts) && <span class="stringliteral">"context-sensitive lock not found!!"</span>);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#a718d6f2f55c1e2e7eb619c3e056ab458">addCxtStmtToSpan</a>(cts,cts))</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(cts);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#ae312fa9ddb320674f7bc31e29aa474ed">isTDRelease</a>(curInst))</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#a0b21446e6d5dfc1b5d0ebd75895225dd">removeCxtStmtToSpan</a>(cts,cts))</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(cts);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<CallInst>(curInst) && !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(curInst))</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a97b186f9417144557bb17c41d515a9f4">handleCall</a>(cts);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ReturnInst>(curInst))</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#acc3d402c68b9c22ab6d576b38c994fc6">handleRet</a>(cts);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(cts);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  }</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> </div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> }</div><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 &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>
|
|
1081
|
+
<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 &cts, const CxtLock &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>
|
|
1082
|
+
<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>
|
|
1083
1083
|
<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>
|
|
1084
1084
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
|
|
1085
|
-
<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 &cts, const CxtLock &cl)</div><div class="ttdoc">Add context-sensitive statement. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1086
|
-
<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#
|
|
1085
|
+
<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 &cts, const CxtLock &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>
|
|
1086
|
+
<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>
|
|
1087
1087
|
<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>
|
|
1088
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a692a74188f141ffbdbb859ecae8b07ab"><div class="ttname"><a href="classSVF_1_1TCT.html#a692a74188f141ffbdbb859ecae8b07ab">SVF::TCT::getEntryProcs</a></div><div class="ttdeci">const FunSet & getEntryProcs() const</div><div class="ttdoc">Get marked candidate functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
1088
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a692a74188f141ffbdbb859ecae8b07ab"><div class="ttname"><a href="classSVF_1_1TCT.html#a692a74188f141ffbdbb859ecae8b07ab">SVF::TCT::getEntryProcs</a></div><div class="ttdeci">const FunSet & getEntryProcs() const</div><div class="ttdoc">Get marked candidate functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00234">TCT.h:234</a></div></div>
|
|
1089
1089
|
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
|
|
1090
1090
|
<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>
|
|
1091
|
-
<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#
|
|
1092
|
-
<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#
|
|
1093
|
-
<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 &cxtLock) const</div><div class="ttdoc">Get context-sensitive lock. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1091
|
+
<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>
|
|
1092
|
+
<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>
|
|
1093
|
+
<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 &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>
|
|
1094
1094
|
<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 & 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>
|
|
1095
|
-
<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< const Function * > FunSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1095
|
+
<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< const Function * > FunSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00065">LockAnalysis.h:65</a></div></div>
|
|
1096
1096
|
<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>
|
|
1097
|
-
<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 &cts)</div><div class="ttdoc">Handle call. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#
|
|
1098
|
-
<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 &cts)</div><div class="ttdoc">Handle return. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#
|
|
1099
|
-
<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#
|
|
1100
|
-
<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#
|
|
1101
|
-
<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 &cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#
|
|
1102
|
-
<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 &cts)</div><div class="ttdoc">Print locks and spans. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#
|
|
1097
|
+
<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 &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>
|
|
1098
|
+
<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 &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>
|
|
1099
|
+
<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>
|
|
1100
|
+
<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>
|
|
1101
|
+
<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 &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>
|
|
1102
|
+
<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 &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>
|
|
1103
1103
|
<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>
|
|
1104
|
-
<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#
|
|
1105
|
-
<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#
|
|
1104
|
+
<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>
|
|
1105
|
+
<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>
|
|
1106
1106
|
<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>
|
|
1107
|
-
<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 &cts)</div><div class="ttdoc">Handle fork. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#
|
|
1108
|
-
<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 &cs)</div><div class="ttdoc">Worklist operations. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1107
|
+
<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 &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>
|
|
1108
|
+
<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 &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>
|
|
1109
1109
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00346">SVFUtil.h:346</a></div></div>
|
|
1110
1110
|
</div><!-- fragment -->
|
|
1111
1111
|
</div>
|
|
@@ -1126,16 +1126,16 @@ Private Attributes</h2></td></tr>
|
|
|
1126
1126
|
</div><div class="memdoc">
|
|
1127
1127
|
<p>Collect candidate functions for context-sensitive lock analysis </p>
|
|
1128
1128
|
|
|
1129
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
1130
|
-
<div class="fragment"><div class="line"><a name="
|
|
1129
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00117">117</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1130
|
+
<div class="fragment"><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* tcg=<a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="classSVF_1_1TCT.html#afb579a5bdcc0a1c6b075bb9aae36c237">TCT::PTACGNodeSet</a> visited;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const PTACallGraphNode*></a> worklist;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">for</span> (InstSet::iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">locksites</a>.begin(), eit = <a class="code" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">locksites</a>.end(); it != eit; ++it)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun=(*it)->getParent()->getParent();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = tcg-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(fun));</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span> (visited.find(cgnode) == visited.end())</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cgnode);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  visited.insert(cgnode);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">for</span> (InstSet::iterator it = <a class="code" href="classSVF_1_1LockAnalysis.html#aec459af1d1624df55ffc95cd75655780">unlocksites</a>.begin(), eit = <a class="code" href="classSVF_1_1LockAnalysis.html#aec459af1d1624df55ffc95cd75655780">unlocksites</a>.end(); it != eit; ++it)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = (*it)->getParent()->getParent();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = tcg-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(fun));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span> (visited.find(cgnode) == visited.end())</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cgnode);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  visited.insert(cgnode);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* node = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a484eb7b6f49f47a3e71054c3b798a47a">lockcandidateFuncSet</a>.insert(node-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>());</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = node-><a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), neit = node-><a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); nit != neit; nit++)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* srcNode = (*nit)->getSrcNode();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">if</span> (visited.find(srcNode) == visited.end())</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  visited.insert(srcNode);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(srcNode);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> }</div><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>
|
|
1131
1131
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
1132
|
-
<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#
|
|
1132
|
+
<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>
|
|
1133
1133
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
|
|
1134
|
-
<div class="ttc" id="classSVF_1_1TCT_html_afb579a5bdcc0a1c6b075bb9aae36c237"><div class="ttname"><a href="classSVF_1_1TCT.html#afb579a5bdcc0a1c6b075bb9aae36c237">SVF::TCT::PTACGNodeSet</a></div><div class="ttdeci">Set< const PTACallGraphNode * > PTACGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
1135
|
-
<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#
|
|
1134
|
+
<div class="ttc" id="classSVF_1_1TCT_html_afb579a5bdcc0a1c6b075bb9aae36c237"><div class="ttname"><a href="classSVF_1_1TCT.html#afb579a5bdcc0a1c6b075bb9aae36c237">SVF::TCT::PTACGNodeSet</a></div><div class="ttdeci">Set< const PTACallGraphNode * > PTACGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00146">TCT.h:146</a></div></div>
|
|
1135
|
+
<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>
|
|
1136
1136
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00214">GenericGraph.h:214</a></div></div>
|
|
1137
|
-
<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#
|
|
1138
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
1137
|
+
<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>
|
|
1138
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00177">TCT.h:177</a></div></div>
|
|
1139
1139
|
<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>
|
|
1140
1140
|
<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>
|
|
1141
1141
|
<div class="ttc" id="classSVF_1_1GenericNode_html_afe6a7b286d9af4992f41b59612fd2900"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">SVF::GenericNode::InEdgeEnd</a></div><div class="ttdeci">iterator InEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00218">GenericGraph.h:218</a></div></div>
|
|
@@ -1144,7 +1144,7 @@ Private Attributes</h2></td></tr>
|
|
|
1144
1144
|
<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>
|
|
1145
1145
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
|
|
1146
1146
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
1147
|
-
<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#
|
|
1147
|
+
<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>
|
|
1148
1148
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
|
|
1149
1149
|
<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>
|
|
1150
1150
|
</div><!-- fragment -->
|
|
@@ -1175,8 +1175,8 @@ Private Attributes</h2></td></tr>
|
|
|
1175
1175
|
|
|
1176
1176
|
<p>Clear flags. </p>
|
|
1177
1177
|
|
|
1178
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1179
|
-
<div class="fragment"><div class="line"><a name="
|
|
1178
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00394">394</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1179
|
+
<div class="fragment"><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <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>  }</div><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>
|
|
1180
1180
|
<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>
|
|
1181
1181
|
</div><!-- fragment -->
|
|
1182
1182
|
</div>
|
|
@@ -1196,38 +1196,38 @@ Private Attributes</h2></td></tr>
|
|
|
1196
1196
|
</table>
|
|
1197
1197
|
</div><div class="memdoc">
|
|
1198
1198
|
|
|
1199
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
1200
|
-
<div class="fragment"><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a561bb2fbfbeee9117efad7c7c70871d8">FunSet</a> entryFuncSet = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a692a74188f141ffbdbb859ecae8b07ab">getEntryProcs</a>();</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">for</span> (FunSet::const_iterator it = entryFuncSet.begin(), eit = entryFuncSet.end(); it != eit; ++it)</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">isLockCandidateFun</a>(*it))</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">CxtLockProc</a> t(cxt, <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(*it));</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a8a6559c998c0b6f8e851d10ae2ab4171">pushToCTPWorkList</a>(t);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">while</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e">clpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">CxtLockProc</a> clp = <a class="code" href="classSVF_1_1LockAnalysis.html#ac3de5acfb887c17ebf1213a1c2c38b58">popFromCTPWorkList</a>();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgNode = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(clp.getProc());</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">// lzh TODO.</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">isLockCandidateFun</a>(cgNode-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = cgNode-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), neit = cgNode-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); nit != neit; nit++)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* cgEdge = (*nit);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator cit = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">directCallsBegin</a>(), ecit = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">directCallsEnd</a>();</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  cit != ecit; ++cit)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nCollecting CxtLocks: handling direct call:"</span> << **cit << <span class="stringliteral">"\t"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction()->getName()</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  << <span class="stringliteral">"-->"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction()->getName() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ab99ef73905f35d4c20ca408586fc8680">handleCallRelation</a>(clp, cgEdge, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*cit)->getCallSite()));</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator ind = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">indirectCallsBegin</a>(), eind = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">indirectCallsEnd</a>();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  ind != eind; ++ind)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nCollecting CxtLocks: handling indirect call:"</span> << **ind << <span class="stringliteral">"\t"</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction()->getName() << <span class="stringliteral">"-->"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction()->getName()</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ab99ef73905f35d4c20ca408586fc8680">handleCallRelation</a>(clp, cgEdge, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*ind)->getCallSite()));</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
1201
|
-
<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#
|
|
1202
|
-
<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#
|
|
1199
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00281">281</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1200
|
+
<div class="fragment"><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a561bb2fbfbeee9117efad7c7c70871d8">FunSet</a> entryFuncSet = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a692a74188f141ffbdbb859ecae8b07ab">getEntryProcs</a>();</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">for</span> (FunSet::const_iterator it = entryFuncSet.begin(), eit = entryFuncSet.end(); it != eit; ++it)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">isLockCandidateFun</a>(*it))</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">CxtLockProc</a> t(cxt, <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(*it));</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a8a6559c998c0b6f8e851d10ae2ab4171">pushToCTPWorkList</a>(t);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">while</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#afff2c5699e08badf5265e8183b18a02e">clpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">CxtLockProc</a> clp = <a class="code" href="classSVF_1_1LockAnalysis.html#ac3de5acfb887c17ebf1213a1c2c38b58">popFromCTPWorkList</a>();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgNode = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(clp.getProc());</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="comment">// lzh TODO.</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1LockAnalysis.html#a4c76b3fb18248081dc1affbc33940164">isLockCandidateFun</a>(cgNode-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = cgNode-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), neit = cgNode-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); nit != neit; nit++)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* cgEdge = (*nit);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator cit = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">directCallsBegin</a>(), ecit = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">directCallsEnd</a>();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  cit != ecit; ++cit)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nCollecting CxtLocks: handling direct call:"</span> << **cit << <span class="stringliteral">"\t"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction()->getName()</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  << <span class="stringliteral">"-->"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction()->getName() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ab99ef73905f35d4c20ca408586fc8680">handleCallRelation</a>(clp, cgEdge, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*cit)->getCallSite()));</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator ind = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">indirectCallsBegin</a>(), eind = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">indirectCallsEnd</a>();</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  ind != eind; ++ind)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nCollecting CxtLocks: handling indirect call:"</span> << **ind << <span class="stringliteral">"\t"</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction()->getName() << <span class="stringliteral">"-->"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction()->getName()</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ab99ef73905f35d4c20ca408586fc8680">handleCallRelation</a>(clp, cgEdge, <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*ind)->getCallSite()));</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
1201
|
+
<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>
|
|
1202
|
+
<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>
|
|
1203
1203
|
<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>
|
|
1204
1204
|
<div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00206">GenericGraph.h:206</a></div></div>
|
|
1205
1205
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
|
|
1206
1206
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a494bc8bacca5ca8d266286f3fb303495"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">SVF::PTACallGraphEdge::indirectCallsEnd</a></div><div class="ttdeci">CallInstSet::const_iterator indirectCallsEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00135">PTACallGraph.h:135</a></div></div>
|
|
1207
|
-
<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#
|
|
1208
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a692a74188f141ffbdbb859ecae8b07ab"><div class="ttname"><a href="classSVF_1_1TCT.html#a692a74188f141ffbdbb859ecae8b07ab">SVF::TCT::getEntryProcs</a></div><div class="ttdeci">const FunSet & getEntryProcs() const</div><div class="ttdoc">Get marked candidate functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
1207
|
+
<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>
|
|
1208
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a692a74188f141ffbdbb859ecae8b07ab"><div class="ttname"><a href="classSVF_1_1TCT.html#a692a74188f141ffbdbb859ecae8b07ab">SVF::TCT::getEntryProcs</a></div><div class="ttdeci">const FunSet & getEntryProcs() const</div><div class="ttdoc">Get marked candidate functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00234">TCT.h:234</a></div></div>
|
|
1209
1209
|
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
|
|
1210
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
1210
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00177">TCT.h:177</a></div></div>
|
|
1211
1211
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00093">GenericGraph.h:93</a></div></div>
|
|
1212
|
-
<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#
|
|
1213
|
-
<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 &clp)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1212
|
+
<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>
|
|
1213
|
+
<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 &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>
|
|
1214
1214
|
<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>
|
|
1215
1215
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_acc4fcacefdc9be9a214dfcc455fe7970"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">SVF::PTACallGraphEdge::directCallsEnd</a></div><div class="ttdeci">CallInstSet::const_iterator directCallsEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00126">PTACallGraph.h:126</a></div></div>
|
|
1216
1216
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_adf17f5699c9f40ffc8837e813e3af3ec"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">SVF::PTACallGraphNode::const_iterator</a></div><div class="ttdeci">PTACallGraphEdge::CallGraphEdgeSet::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00180">PTACallGraph.h:180</a></div></div>
|
|
1217
1217
|
<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 & 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>
|
|
1218
1218
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_a959445c97605953fbdebbbd999437a09"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">SVF::PTACallGraphNode::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdoc">Get function of this call node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00193">PTACallGraph.h:193</a></div></div>
|
|
1219
1219
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
|
|
1220
|
-
<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< const Function * > FunSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1221
|
-
<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#
|
|
1220
|
+
<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< const Function * > FunSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00065">LockAnalysis.h:65</a></div></div>
|
|
1221
|
+
<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>
|
|
1222
1222
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a750e50a9022451e406c4819979edffa5"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">SVF::PTACallGraphEdge::directCallsBegin</a></div><div class="ttdeci">CallInstSet::const_iterator directCallsBegin() const</div><div class="ttdoc">Iterators for direct and indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00122">PTACallGraph.h:122</a></div></div>
|
|
1223
|
-
<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#
|
|
1223
|
+
<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>
|
|
1224
1224
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
1225
1225
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00217">SVFUtil.h:217</a></div></div>
|
|
1226
1226
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
|
|
1227
1227
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00210">GenericGraph.h:210</a></div></div>
|
|
1228
1228
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_afbdb582d20ab953b2de1f3efacb74679"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">SVF::PTACallGraphEdge::indirectCallsBegin</a></div><div class="ttdeci">CallInstSet::const_iterator indirectCallsBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00131">PTACallGraph.h:131</a></div></div>
|
|
1229
1229
|
<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>
|
|
1230
|
-
<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 &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#
|
|
1230
|
+
<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 &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>
|
|
1231
1231
|
</div><!-- fragment -->
|
|
1232
1232
|
</div>
|
|
1233
1233
|
</div>
|
|
@@ -1247,17 +1247,17 @@ Private Attributes</h2></td></tr>
|
|
|
1247
1247
|
</div><div class="memdoc">
|
|
1248
1248
|
<p>Collect lock/unlock sites </p>
|
|
1249
1249
|
|
|
1250
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
1251
|
-
<div class="fragment"><div class="line"><a name="
|
|
1252
|
-
<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#
|
|
1250
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00094">94</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1251
|
+
<div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* tcg=<a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>()-><a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), E = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>()-><a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin((*F)->getLLVMFun()), EE = inst_end((*F)->getLLVMFun()); II != EE; ++II)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &*II;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span> (tcg-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-><a class="code" href="classSVF_1_1ThreadAPI.html#a38adae633d5aceddcca3b3a23ad66db9">isTDRelease</a>(inst))</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aec459af1d1624df55ffc95cd75655780">unlocksites</a>.insert(inst);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span> (tcg-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-><a class="code" href="classSVF_1_1ThreadAPI.html#a9db4df7968ec179e5012794c58fdee70">isTDAcquire</a>(inst))</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a87c412a54f48e5314454cd1d44ef9b0e">locksites</a>.insert(inst);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> }</div><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>
|
|
1252
|
+
<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>
|
|
1253
1253
|
<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>
|
|
1254
1254
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00156">SVFModule.h:156</a></div></div>
|
|
1255
|
-
<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#
|
|
1255
|
+
<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>
|
|
1256
1256
|
<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>
|
|
1257
1257
|
<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>
|
|
1258
1258
|
<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>
|
|
1259
|
-
<div class="ttc" id="classSVF_1_1TCT_html_aabc2c84e951ed9ae64207e379acb3074"><div class="ttname"><a href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">SVF::TCT::getSVFModule</a></div><div class="ttdeci">SVFModule * getSVFModule() const</div><div class="ttdoc">Get SVFFModule. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
1260
|
-
<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#
|
|
1259
|
+
<div class="ttc" id="classSVF_1_1TCT_html_aabc2c84e951ed9ae64207e379acb3074"><div class="ttname"><a href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">SVF::TCT::getSVFModule</a></div><div class="ttdeci">SVFModule * getSVFModule() const</div><div class="ttdoc">Get SVFFModule. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00182">TCT.h:182</a></div></div>
|
|
1260
|
+
<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>
|
|
1261
1261
|
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
1262
1262
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00164">SVFModule.h:164</a></div></div>
|
|
1263
1263
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a709371b13dcf500277f8bc275bdb23c7"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVF::SVFModule::iterator</a></div><div class="ttdeci">FunctionSetType::iterator iterator</div><div class="ttdoc">Iterators type def. </div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00051">SVFModule.h:51</a></div></div>
|
|
@@ -1289,8 +1289,8 @@ Private Attributes</h2></td></tr>
|
|
|
1289
1289
|
</table>
|
|
1290
1290
|
</div><div class="memdoc">
|
|
1291
1291
|
|
|
1292
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1293
|
-
<div class="fragment"><div class="line"><a name="
|
|
1292
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00250">250</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1293
|
+
<div class="fragment"><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <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>  }</div><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>
|
|
1294
1294
|
</div><!-- fragment -->
|
|
1295
1295
|
</div>
|
|
1296
1296
|
</div>
|
|
@@ -1318,8 +1318,8 @@ Private Attributes</h2></td></tr>
|
|
|
1318
1318
|
</table>
|
|
1319
1319
|
</div><div class="memdoc">
|
|
1320
1320
|
|
|
1321
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1322
|
-
<div class="fragment"><div class="line"><a name="
|
|
1321
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00220">220</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1322
|
+
<div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  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>  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>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div><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>
|
|
1323
1323
|
</div><!-- fragment -->
|
|
1324
1324
|
</div>
|
|
1325
1325
|
</div>
|
|
@@ -1347,8 +1347,8 @@ Private Attributes</h2></td></tr>
|
|
|
1347
1347
|
</table>
|
|
1348
1348
|
</div><div class="memdoc">
|
|
1349
1349
|
|
|
1350
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1351
|
-
<div class="fragment"><div class="line"><a name="
|
|
1350
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00226">226</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1351
|
+
<div class="fragment"><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  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>  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>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><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>
|
|
1352
1352
|
</div><!-- fragment -->
|
|
1353
1353
|
</div>
|
|
1354
1354
|
</div>
|
|
@@ -1376,8 +1376,8 @@ Private Attributes</h2></td></tr>
|
|
|
1376
1376
|
</table>
|
|
1377
1377
|
</div><div class="memdoc">
|
|
1378
1378
|
|
|
1379
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1380
|
-
<div class="fragment"><div class="line"><a name="
|
|
1379
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00209">209</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1380
|
+
<div class="fragment"><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  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>  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>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><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>
|
|
1381
1381
|
</div><!-- fragment -->
|
|
1382
1382
|
</div>
|
|
1383
1383
|
</div>
|
|
@@ -1405,8 +1405,8 @@ Private Attributes</h2></td></tr>
|
|
|
1405
1405
|
</table>
|
|
1406
1406
|
</div><div class="memdoc">
|
|
1407
1407
|
|
|
1408
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1409
|
-
<div class="fragment"><div class="line"><a name="
|
|
1408
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00141">141</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1409
|
+
<div class="fragment"><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  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>  assert(it!=<a class="code" href="classSVF_1_1LockAnalysis.html#a277d88153d34cf3eb80272003949e4ef">instCILocksMap</a>.end() && <span class="stringliteral">"intralock not found!"</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><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>
|
|
1410
1410
|
</div><!-- fragment -->
|
|
1411
1411
|
</div>
|
|
1412
1412
|
</div>
|
|
@@ -1436,10 +1436,10 @@ Private Attributes</h2></td></tr>
|
|
|
1436
1436
|
|
|
1437
1437
|
<p>Get lock value. </p>
|
|
1438
1438
|
|
|
1439
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1440
|
-
<div class="fragment"><div class="line"><a name="
|
|
1439
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00458">458</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1440
|
+
<div class="fragment"><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-><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>  }</div><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>
|
|
1441
1441
|
<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>
|
|
1442
|
-
<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#
|
|
1442
|
+
<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>
|
|
1443
1443
|
</div><!-- fragment -->
|
|
1444
1444
|
</div>
|
|
1445
1445
|
</div>
|
|
@@ -1466,8 +1466,8 @@ Private Attributes</h2></td></tr>
|
|
|
1466
1466
|
</table>
|
|
1467
1467
|
</div><div class="memdoc">
|
|
1468
1468
|
|
|
1469
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1470
|
-
<div class="fragment"><div class="line"><a name="
|
|
1469
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00317">317</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1470
|
+
<div class="fragment"><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <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>  }</div><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>
|
|
1471
1471
|
</div><!-- fragment -->
|
|
1472
1472
|
</div>
|
|
1473
1473
|
</div>
|
|
@@ -1495,8 +1495,8 @@ Private Attributes</h2></td></tr>
|
|
|
1495
1495
|
</table>
|
|
1496
1496
|
</div><div class="memdoc">
|
|
1497
1497
|
|
|
1498
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1499
|
-
<div class="fragment"><div class="line"><a name="
|
|
1498
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00263">263</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1499
|
+
<div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  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>  <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>  }</div><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>
|
|
1500
1500
|
</div><!-- fragment -->
|
|
1501
1501
|
</div>
|
|
1502
1502
|
</div>
|
|
@@ -1525,9 +1525,9 @@ Private Attributes</h2></td></tr>
|
|
|
1525
1525
|
|
|
1526
1526
|
<p><a class="el" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>. </p>
|
|
1527
1527
|
|
|
1528
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1529
|
-
<div class="fragment"><div class="line"><a name="
|
|
1530
|
-
<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#
|
|
1528
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00463">463</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1529
|
+
<div class="fragment"><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>();</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  }</div><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>
|
|
1530
|
+
<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>
|
|
1531
1531
|
</div><!-- fragment -->
|
|
1532
1532
|
</div>
|
|
1533
1533
|
</div>
|
|
@@ -1556,8 +1556,8 @@ Private Attributes</h2></td></tr>
|
|
|
1556
1556
|
|
|
1557
1557
|
<p>Get tct. </p>
|
|
1558
1558
|
|
|
1559
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1560
|
-
<div class="fragment"><div class="line"><a name="
|
|
1559
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00325">325</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1560
|
+
<div class="fragment"><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <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>  }</div><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>
|
|
1561
1561
|
</div><!-- fragment -->
|
|
1562
1562
|
</div>
|
|
1563
1563
|
</div>
|
|
@@ -1587,21 +1587,21 @@ Private Attributes</h2></td></tr>
|
|
|
1587
1587
|
|
|
1588
1588
|
<p>Handle call. </p>
|
|
1589
1589
|
|
|
1590
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
1591
|
-
<div class="fragment"><div class="line"><a name="
|
|
1590
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00451">451</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1591
|
+
<div class="fragment"><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast<CallInst>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->hasCallGraphEdge(cbn))</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">for</span> (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallEdgeBegin(cbn), ecgIt = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallEdgeEnd(cbn);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = (*cgIt)->getDstNode()->getFunction();</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(svfcallee))</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">pushCxt</a>(newCxt, call, callee);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, &(callee->getEntryBlock().front()));</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> }</div><div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
|
|
1592
1592
|
<div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00102">BasicTypes.h:102</a></div></div>
|
|
1593
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
1594
|
-
<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#
|
|
1593
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00172">TCT.h:172</a></div></div>
|
|
1594
|
+
<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>
|
|
1595
1595
|
<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>
|
|
1596
1596
|
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
|
|
1597
1597
|
<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>
|
|
1598
1598
|
<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>
|
|
1599
|
-
<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#
|
|
1599
|
+
<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>
|
|
1600
1600
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt & getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
|
|
1601
1601
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
1602
1602
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
1603
|
-
<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 &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#
|
|
1604
|
-
<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 &tgr, const CxtStmt &src)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1603
|
+
<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 &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>
|
|
1604
|
+
<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 &tgr, const CxtStmt &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>
|
|
1605
1605
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00346">SVFUtil.h:346</a></div></div>
|
|
1606
1606
|
</div><!-- fragment -->
|
|
1607
1607
|
</div>
|
|
@@ -1649,20 +1649,20 @@ Private Attributes</h2></td></tr>
|
|
|
1649
1649
|
<p>Handle call relations. </p>
|
|
1650
1650
|
<p>Handling call relations when collecting context-sensitive locks </p>
|
|
1651
1651
|
|
|
1652
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
1653
|
-
<div class="fragment"><div class="line"><a name="
|
|
1652
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00330">330</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1653
|
+
<div class="fragment"><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt(clp.getContext());</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">isTDAcquire</a>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>()))</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a177b10a617c275a9c2c2ed5e9b10d78a">addCxtLock</a>(cxt,cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction();</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">pushCxt</a>(cxt, cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>(), callee);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">CxtLockProc</a> newclp(cxt, svfcallee);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a8a6559c998c0b6f8e851d10ae2ab4171">pushToCTPWorkList</a>(newclp))</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <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">outs</a>() << <span class="stringliteral">"LockAnalysis Process CallRet old clp --"</span>; clp.dump());</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <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">outs</a>() << <span class="stringliteral">"LockAnalysis Process CallRet new clp --"</span>; newclp.dump());</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> }</div><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>
|
|
1654
1654
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
|
|
1655
1655
|
<div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00258">BasicTypes.h:258</a></div></div>
|
|
1656
1656
|
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
|
|
1657
1657
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00093">GenericGraph.h:93</a></div></div>
|
|
1658
1658
|
<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>
|
|
1659
|
-
<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 &clp)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1659
|
+
<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 &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>
|
|
1660
1660
|
<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 & 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>
|
|
1661
|
-
<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 &cxt, const Instruction *inst)</div><div class="ttdoc">Context-sensitive locks. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1662
|
-
<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#
|
|
1661
|
+
<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 &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>
|
|
1662
|
+
<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>
|
|
1663
1663
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
1664
|
-
<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 &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#
|
|
1665
|
-
<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#
|
|
1664
|
+
<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 &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>
|
|
1665
|
+
<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>
|
|
1666
1666
|
<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>
|
|
1667
1667
|
</div><!-- fragment -->
|
|
1668
1668
|
</div>
|
|
@@ -1693,22 +1693,22 @@ Private Attributes</h2></td></tr>
|
|
|
1693
1693
|
|
|
1694
1694
|
<p>Handle fork. </p>
|
|
1695
1695
|
|
|
1696
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
1697
|
-
<div class="fragment"><div class="line"><a name="
|
|
1696
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00429">429</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1697
|
+
<div class="fragment"><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast<CallInst>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->hasThreadForkEdge(cbn))</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">for</span> (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getForkEdgeBegin(cbn),</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  ecgIt = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getForkEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = (*cgIt)->getDstNode()->getFunction();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a7d9fd3ddcadd84969b57491181983b17">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, &(callee->getEntryBlock().front()));</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a711760ebaed0437176f4f9d314e9929c">handleIntra</a>(cts);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> }</div><div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
|
|
1698
1698
|
<div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00102">BasicTypes.h:102</a></div></div>
|
|
1699
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
1700
|
-
<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#
|
|
1699
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00172">TCT.h:172</a></div></div>
|
|
1700
|
+
<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>
|
|
1701
1701
|
<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>
|
|
1702
1702
|
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
|
|
1703
1703
|
<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>
|
|
1704
1704
|
<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>
|
|
1705
|
-
<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#
|
|
1705
|
+
<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>
|
|
1706
1706
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt & getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
|
|
1707
1707
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
1708
1708
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
1709
|
-
<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 &cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#
|
|
1710
|
-
<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 &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#
|
|
1711
|
-
<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 &tgr, const CxtStmt &src)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1709
|
+
<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 &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>
|
|
1710
|
+
<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 &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>
|
|
1711
|
+
<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 &tgr, const CxtStmt &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>
|
|
1712
1712
|
</div><!-- fragment -->
|
|
1713
1713
|
</div>
|
|
1714
1714
|
</div>
|
|
@@ -1738,15 +1738,15 @@ Private Attributes</h2></td></tr>
|
|
|
1738
1738
|
|
|
1739
1739
|
<p>Handle intra. </p>
|
|
1740
1740
|
|
|
1741
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
1742
|
-
<div class="fragment"><div class="line"><a name="
|
|
1741
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00524">524</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1742
|
+
<div class="fragment"><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> </div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> nextInsts;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a752d53b6b65d892d0e579aafe70083b4">getNextInsts</a>(curInst, nextInsts);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(curCxt, *nit);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> }</div><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>
|
|
1743
1743
|
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
|
|
1744
1744
|
<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>
|
|
1745
|
-
<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#
|
|
1745
|
+
<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>
|
|
1746
1746
|
<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>
|
|
1747
1747
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a752d53b6b65d892d0e579aafe70083b4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a752d53b6b65d892d0e579aafe70083b4">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector< const Instruction *> &instList)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00259">LLVMUtil.cpp:259</a></div></div>
|
|
1748
1748
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt & getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
|
|
1749
|
-
<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 &tgr, const CxtStmt &src)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1749
|
+
<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 &tgr, const CxtStmt &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>
|
|
1750
1750
|
</div><!-- fragment -->
|
|
1751
1751
|
</div>
|
|
1752
1752
|
</div>
|
|
@@ -1776,27 +1776,27 @@ Private Attributes</h2></td></tr>
|
|
|
1776
1776
|
|
|
1777
1777
|
<p>Handle return. </p>
|
|
1778
1778
|
|
|
1779
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
1780
|
-
<div class="fragment"><div class="line"><a name="
|
|
1779
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00475">475</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
1780
|
+
<div class="fragment"><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(curInst->getParent()->getParent());</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* curFunNode = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = curFunNode-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = curFunNode-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it != eit; ++it)</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *it;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">if</span> (SVFUtil::isa<ThreadForkEdge>(edge) || SVFUtil::isa<ThreadJoinEdge>(edge))</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)->directCallsBegin(), ecit = (edge)->directCallsEnd(); cit != ecit;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  ++cit)</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = (*cit)->getCallSite();</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a3299f1fe234e1d6b4341498575bddcbb">matchCxt</a>(newCxt, inst, curFunNode-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> nextInsts;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a752d53b6b65d892d0e579aafe70083b4">getNextInsts</a>(inst, nextInsts);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, *nit);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  }</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)->indirectCallsBegin(), ecit = (edge)->indirectCallsEnd();</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  cit != ecit; ++cit)</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = (*cit)->getCallSite();</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a3299f1fe234e1d6b4341498575bddcbb">matchCxt</a>(newCxt, inst, curFunNode-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> nextInsts;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a752d53b6b65d892d0e579aafe70083b4">getNextInsts</a>(inst, nextInsts);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> newCts(newCxt, *nit);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a375cb175ec0068bacaa64cf40a49d485">markCxtStmtFlag</a>(newCts, cts);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  }</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
1781
1781
|
<div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy & getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00186">GenericGraph.h:186</a></div></div>
|
|
1782
1782
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
|
|
1783
|
-
<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#
|
|
1783
|
+
<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>
|
|
1784
1784
|
<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>
|
|
1785
1785
|
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00131">SVFBasicTypes.h:131</a></div></div>
|
|
1786
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
1786
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00177">TCT.h:177</a></div></div>
|
|
1787
1787
|
<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>
|
|
1788
1788
|
<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>
|
|
1789
|
-
<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 &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#
|
|
1790
|
-
<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#
|
|
1789
|
+
<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 &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>
|
|
1790
|
+
<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>
|
|
1791
1791
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_adf17f5699c9f40ffc8837e813e3af3ec"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">SVF::PTACallGraphNode::const_iterator</a></div><div class="ttdeci">PTACallGraphEdge::CallGraphEdgeSet::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00180">PTACallGraph.h:180</a></div></div>
|
|
1792
1792
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_a959445c97605953fbdebbbd999437a09"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">SVF::PTACallGraphNode::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdoc">Get function of this call node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00193">PTACallGraph.h:193</a></div></div>
|
|
1793
1793
|
<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>
|
|
1794
1794
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a752d53b6b65d892d0e579aafe70083b4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a752d53b6b65d892d0e579aafe70083b4">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector< const Instruction *> &instList)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00259">LLVMUtil.cpp:259</a></div></div>
|
|
1795
|
-
<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#
|
|
1795
|
+
<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>
|
|
1796
1796
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::getContext</a></div><div class="ttdeci">const CallStrCxt & getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00057">CxtStmt.h:57</a></div></div>
|
|
1797
1797
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
|
|
1798
1798
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
|
|
1799
|
-
<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 &tgr, const CxtStmt &src)</div><div class="ttdoc">Mark thread flags for cxtStmt. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1799
|
+
<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 &tgr, const CxtStmt &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>
|
|
1800
1800
|
</div><!-- fragment -->
|
|
1801
1801
|
</div>
|
|
1802
1802
|
</div>
|
|
@@ -1834,10 +1834,10 @@ Private Attributes</h2></td></tr>
|
|
|
1834
1834
|
</table>
|
|
1835
1835
|
</div><div class="memdoc">
|
|
1836
1836
|
|
|
1837
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1838
|
-
<div class="fragment"><div class="line"><a name="
|
|
1839
|
-
<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#
|
|
1840
|
-
<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 & getCxtStmtfromInst(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1837
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00288">288</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1838
|
+
<div class="fragment"><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <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>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a07b7d49e1fbe3e5dc694b6aadbee05b8">LockSpan</a> 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>  <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>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">if</span> (lspan.find(*cts) == lspan.end())</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><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< CxtStmt > LockSpan</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00069">LockAnalysis.h:69</a></div></div>
|
|
1839
|
+
<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>
|
|
1840
|
+
<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 & 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>
|
|
1841
1841
|
</div><!-- fragment -->
|
|
1842
1842
|
</div>
|
|
1843
1843
|
</div>
|
|
@@ -1867,8 +1867,8 @@ Private Attributes</h2></td></tr>
|
|
|
1867
1867
|
|
|
1868
1868
|
<p>Get context-sensitive lock. </p>
|
|
1869
1869
|
|
|
1870
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1871
|
-
<div class="fragment"><div class="line"><a name="
|
|
1870
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00160">160</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1871
|
+
<div class="fragment"><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <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>  }</div><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>
|
|
1872
1872
|
</div><!-- fragment -->
|
|
1873
1873
|
</div>
|
|
1874
1874
|
</div>
|
|
@@ -1896,8 +1896,8 @@ Private Attributes</h2></td></tr>
|
|
|
1896
1896
|
</table>
|
|
1897
1897
|
</div><div class="memdoc">
|
|
1898
1898
|
|
|
1899
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1900
|
-
<div class="fragment"><div class="line"><a name="
|
|
1899
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00215">215</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1900
|
+
<div class="fragment"><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  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>  <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>  }</div><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>
|
|
1901
1901
|
</div><!-- fragment -->
|
|
1902
1902
|
</div>
|
|
1903
1903
|
</div>
|
|
@@ -1928,8 +1928,8 @@ Private Attributes</h2></td></tr>
|
|
|
1928
1928
|
<p>Context-sensitive statement and lock spans. </p>
|
|
1929
1929
|
<p>Get LockSet and LockSpan </p>
|
|
1930
1930
|
|
|
1931
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1932
|
-
<div class="fragment"><div class="line"><a name="
|
|
1931
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00204">204</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1932
|
+
<div class="fragment"><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  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>  <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>  }</div><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>
|
|
1933
1933
|
</div><!-- fragment -->
|
|
1934
1934
|
</div>
|
|
1935
1935
|
</div>
|
|
@@ -1969,10 +1969,10 @@ Private Attributes</h2></td></tr>
|
|
|
1969
1969
|
|
|
1970
1970
|
<p>Check if one instruction's context stmt is in a lock span. </p>
|
|
1971
1971
|
|
|
1972
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
1973
|
-
<div class="fragment"><div class="line"><a name="
|
|
1974
|
-
<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#
|
|
1975
|
-
<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 & getCxtStmtfromInst(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
1972
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00273">273</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
1973
|
+
<div class="fragment"><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <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>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a07b7d49e1fbe3e5dc694b6aadbee05b8">LockSpan</a> 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>  <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>  {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">if</span>(lspan.find(*cts) != lspan.end())</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><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< CxtStmt > LockSpan</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00069">LockAnalysis.h:69</a></div></div>
|
|
1974
|
+
<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>
|
|
1975
|
+
<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 & 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>
|
|
1976
1976
|
</div><!-- fragment -->
|
|
1977
1977
|
</div>
|
|
1978
1978
|
</div>
|
|
@@ -2000,8 +2000,8 @@ Private Attributes</h2></td></tr>
|
|
|
2000
2000
|
</table>
|
|
2001
2001
|
</div><div class="memdoc">
|
|
2002
2002
|
|
|
2003
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2004
|
-
<div class="fragment"><div class="line"><a name="
|
|
2003
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00259">259</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2004
|
+
<div class="fragment"><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <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>  }</div><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>
|
|
2005
2005
|
</div><!-- fragment -->
|
|
2006
2006
|
</div>
|
|
2007
2007
|
</div>
|
|
@@ -2039,8 +2039,8 @@ Private Attributes</h2></td></tr>
|
|
|
2039
2039
|
</table>
|
|
2040
2040
|
</div><div class="memdoc">
|
|
2041
2041
|
|
|
2042
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2043
|
-
<div class="fragment"><div class="line"><a name="
|
|
2042
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00376">376</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2043
|
+
<div class="fragment"><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">CxtLockSet</a> toBeDeleted;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <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>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">if</span>(srclockset.find(*it)==srclockset.end())</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  toBeDeleted.insert(*it);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <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>  {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  tgrlockset.erase(*it);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">if</span>(!toBeDeleted.empty())</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  }</div><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< CxtLock > CxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00071">LockAnalysis.h:71</a></div></div>
|
|
2044
2044
|
</div><!-- fragment -->
|
|
2045
2045
|
</div>
|
|
2046
2046
|
</div>
|
|
@@ -2080,8 +2080,8 @@ Private Attributes</h2></td></tr>
|
|
|
2080
2080
|
|
|
2081
2081
|
<p>Return true if the intersection of two locksets is not empty. </p>
|
|
2082
2082
|
|
|
2083
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2084
|
-
<div class="fragment"><div class="line"><a name="
|
|
2083
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00166">166</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2084
|
+
<div class="fragment"><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <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>  {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ab468a6a0f1705c000dc4260097222b06">CxtLock</a>& lock = *it;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <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>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span>(lock==*lit)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><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>
|
|
2085
2085
|
</div><!-- fragment -->
|
|
2086
2086
|
</div>
|
|
2087
2087
|
</div>
|
|
@@ -2112,16 +2112,16 @@ Private Attributes</h2></td></tr>
|
|
|
2112
2112
|
</div><div class="memdoc">
|
|
2113
2113
|
<p>Intra-procedural backward traversal </p>
|
|
2114
2114
|
|
|
2115
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
2116
|
-
<div class="fragment"><div class="line"><a name="
|
|
2115
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00237">237</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2116
|
+
<div class="fragment"><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> worklist;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">for</span>(InstSet::const_iterator it = unlockSet.begin(), eit = unlockSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* unlockSite = *it;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = unlockSite->getParent()->getParent();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* entryInst = &(fun->getEntryBlock().back());</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  worklist.push_back(*it);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I = worklist.back();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  worklist.pop_back();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>(entryInst == I)</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// Skip the visited Instructions.</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">if</span> (backwardInsts.find(I)!=backwardInsts.end())</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  backwardInsts.insert(I);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a5521de9933ce74d0954a942dfceae772">isTDAcquire</a>(I) && <a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(unlockSite, I))</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <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">outs</a>() << <span class="stringliteral">"LockAnalysis ci lock -- "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(I)<<<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <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">outs</a>() << <span class="stringliteral">"LockAnalysis ci unlock -- "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(unlockSite)<<<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> nextInsts;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#af904cd58192dccb85572cfa95f5ea670">getPrevInsts</a>(I, nextInsts);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  worklist.push_back(*nit);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> }</div><div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_af904cd58192dccb85572cfa95f5ea670"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#af904cd58192dccb85572cfa95f5ea670">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector< const Instruction *> &instList)</div><div class="ttdoc">Get the previous instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00286">LLVMUtil.cpp:286</a></div></div>
|
|
2117
2117
|
<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>
|
|
2118
|
-
<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 &cl1, const CxtLock &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#
|
|
2118
|
+
<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 &cl1, const CxtLock &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>
|
|
2119
2119
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00267">SVFUtil.cpp:267</a></div></div>
|
|
2120
2120
|
<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>
|
|
2121
2121
|
<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>
|
|
2122
|
-
<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#
|
|
2122
|
+
<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>
|
|
2123
2123
|
<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 & 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>
|
|
2124
|
-
<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#
|
|
2124
|
+
<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>
|
|
2125
2125
|
<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>
|
|
2126
2126
|
</div><!-- fragment -->
|
|
2127
2127
|
</div>
|
|
@@ -2159,18 +2159,18 @@ Private Attributes</h2></td></tr>
|
|
|
2159
2159
|
</div><div class="memdoc">
|
|
2160
2160
|
<p>Intra-procedural forward traversal </p>
|
|
2161
2161
|
|
|
2162
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
2163
|
-
<div class="fragment"><div class="line"><a name="
|
|
2164
|
-
<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 &cl1, const CxtLock &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#
|
|
2162
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00193">193</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2163
|
+
<div class="fragment"><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = lockSite->getParent()->getParent();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> worklist;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  worklist.push_back(lockSite);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I = worklist.back();</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  worklist.pop_back();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span>(&(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3ef84be7e91335c7b35c395d247f85ae">getFunExitBB</a>(svfFun)->back()) == I)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// Skip the visited Instructions.</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">if</span> (forwardInsts.find(I)!=forwardInsts.end())</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  forwardInsts.insert(I);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#ae312fa9ddb320674f7bc31e29aa474ed">isTDRelease</a>(I) && <a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(lockSite, I))</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  unlockSet.insert(I);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <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">outs</a>() << <span class="stringliteral">"LockAnalysis ci lock -- "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(lockSite)<<<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <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">outs</a>() << <span class="stringliteral">"LockAnalysis ci unlock -- "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(I)<<<span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#aeb4b15ecc4ba1a0ca8794d304d1895cb">InstVec</a> nextInsts;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a752d53b6b65d892d0e579aafe70083b4">getNextInsts</a>(I, nextInsts);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">for</span> (InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit != enit; ++nit)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  worklist.push_back(*nit);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> }</div><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>
|
|
2164
|
+
<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 &cl1, const CxtLock &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>
|
|
2165
2165
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a3ef84be7e91335c7b35c395d247f85ae"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3ef84be7e91335c7b35c395d247f85ae">SVF::LLVMUtil::getFunExitBB</a></div><div class="ttdeci">const BasicBlock * getFunExitBB(const SVFFunction *svfFun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00167">LLVMUtil.h:167</a></div></div>
|
|
2166
2166
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
|
|
2167
2167
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00267">SVFUtil.cpp:267</a></div></div>
|
|
2168
2168
|
<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>
|
|
2169
2169
|
<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>
|
|
2170
|
-
<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#
|
|
2170
|
+
<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>
|
|
2171
2171
|
<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 & 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>
|
|
2172
2172
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a752d53b6b65d892d0e579aafe70083b4"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a752d53b6b65d892d0e579aafe70083b4">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector< const Instruction *> &instList)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00259">LLVMUtil.cpp:259</a></div></div>
|
|
2173
|
-
<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#
|
|
2173
|
+
<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>
|
|
2174
2174
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
|
|
2175
2175
|
<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>
|
|
2176
2176
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a547b3bc62de65b9dbfc6dee55c063dd7"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00114">LLVMModule.h:114</a></div></div>
|
|
@@ -2213,8 +2213,8 @@ Private Attributes</h2></td></tr>
|
|
|
2213
2213
|
|
|
2214
2214
|
<p>Return true it a lock matches an unlock. </p>
|
|
2215
2215
|
|
|
2216
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2217
|
-
<div class="fragment"><div class="line"><a name="
|
|
2216
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00346">346</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2217
|
+
<div class="fragment"><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(cl1.getStmt(), cl2.getStmt());</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><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 &cl1, const CxtLock &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>
|
|
2218
2218
|
</div><!-- fragment -->
|
|
2219
2219
|
</div>
|
|
2220
2220
|
</div>
|
|
@@ -2253,11 +2253,11 @@ Private Attributes</h2></td></tr>
|
|
|
2253
2253
|
</div><div class="memdoc">
|
|
2254
2254
|
<p>todo: must alias </p>
|
|
2255
2255
|
|
|
2256
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2257
|
-
<div class="fragment"><div class="line"><a name="
|
|
2258
|
-
<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#
|
|
2256
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00350">350</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2257
|
+
<div class="fragment"><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a5b087b42340d1a1b2ee37339637709d3">getPTA</a>()-><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>  }</div><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>
|
|
2258
|
+
<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>
|
|
2259
2259
|
<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>
|
|
2260
|
-
<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#
|
|
2260
|
+
<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>
|
|
2261
2261
|
</div><!-- fragment -->
|
|
2262
2262
|
</div>
|
|
2263
2263
|
</div>
|
|
@@ -2288,10 +2288,10 @@ Private Attributes</h2></td></tr>
|
|
|
2288
2288
|
</div><div class="memdoc">
|
|
2289
2289
|
<p>Return true if two instructions are inside same context-insensitive lock span </p>
|
|
2290
2290
|
|
|
2291
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
2292
|
-
<div class="fragment"><div class="line"><a name="
|
|
2293
|
-
<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 & getIntraLockSet(const Instruction *stmt) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2294
|
-
<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< const Instruction * > InstSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2291
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00686">686</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2292
|
+
<div class="fragment"><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1LockAnalysis.html#af3b0c1b628bac48d07c24008fd9edc4f">isInsideCondIntraLock</a>(i1) && !<a class="code" href="classSVF_1_1LockAnalysis.html#af3b0c1b628bac48d07c24008fd9edc4f">isInsideCondIntraLock</a>(i2))</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  {</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">InstSet</a>& lockset1 = <a class="code" href="classSVF_1_1LockAnalysis.html#ad8e7c32cb1163f4917124fed5cf6c3ab">getIntraLockSet</a>(i1);</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">InstSet</a>& lockset2 = <a class="code" href="classSVF_1_1LockAnalysis.html#ad8e7c32cb1163f4917124fed5cf6c3ab">getIntraLockSet</a>(i2);</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">for</span> (InstSet::const_iterator cil1 = lockset1.begin(), ecil1 = lockset1.end(); cil1!=ecil1; ++cil1)</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="keywordflow">for</span> (InstSet::const_iterator cil2=lockset2.begin(), ecil2=lockset2.end(); cil2!=ecil2; ++cil2)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">if</span> (*cil1==*cil2)</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  }</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  }</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  }</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> }</div><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>
|
|
2293
|
+
<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 & 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>
|
|
2294
|
+
<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< const Instruction * > InstSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00062">LockAnalysis.h:62</a></div></div>
|
|
2295
2295
|
</div><!-- fragment -->
|
|
2296
2296
|
</div>
|
|
2297
2297
|
</div>
|
|
@@ -2322,11 +2322,11 @@ Private Attributes</h2></td></tr>
|
|
|
2322
2322
|
</div><div class="memdoc">
|
|
2323
2323
|
<p>Return true if two instructions are inside at least one common contex-sensitive lock span </p>
|
|
2324
2324
|
|
|
2325
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
2326
|
-
<div class="fragment"><div class="line"><a name="
|
|
2327
|
-
<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#
|
|
2328
|
-
<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 & getCxtStmtfromInst(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2329
|
-
<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< CxtStmt > CxtStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2325
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00721">721</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2326
|
+
<div class="fragment"><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1LockAnalysis.html#a0af0f5bf91f4ae175b89ef24c27c987a">hasCxtStmtfromInst</a>(I1) || !<a class="code" href="classSVF_1_1LockAnalysis.html#a0af0f5bf91f4ae175b89ef24c27c987a">hasCxtStmtfromInst</a>(I2))</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a42ed881d4cd79eae099266a9e171aeb2">CxtStmtSet</a>& ctsset1 = <a class="code" href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d">getCxtStmtfromInst</a>(I1);</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a42ed881d4cd79eae099266a9e171aeb2">CxtStmtSet</a>& ctsset2 = <a class="code" href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d">getCxtStmtfromInst</a>(I2);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> </div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">for</span> (CxtStmtSet::const_iterator cts1 = ctsset1.begin(), ects1 = ctsset1.end(); cts1 != ects1; cts1++)</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  {</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cxtStmt1 = *cts1;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">for</span> (CxtStmtSet::const_iterator cts2 = ctsset2.begin(), ects2 = ctsset2.end(); cts2 != ects2; cts2++)</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cxtStmt2 = *cts2;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">if</span>(cxtStmt1==cxtStmt2) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#a4245d946dd694b59b5c8ef30b08cb1dd">isInSameCSSpan</a>(cxtStmt1,cxtStmt2)==<span class="keyword">false</span>)</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  }</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  }</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> }</div><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>
|
|
2327
|
+
<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>
|
|
2328
|
+
<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 & 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>
|
|
2329
|
+
<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< CxtStmt > CxtStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00070">LockAnalysis.h:70</a></div></div>
|
|
2330
2330
|
<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>
|
|
2331
2331
|
</div><!-- fragment -->
|
|
2332
2332
|
</div>
|
|
@@ -2358,11 +2358,11 @@ Private Attributes</h2></td></tr>
|
|
|
2358
2358
|
</div><div class="memdoc">
|
|
2359
2359
|
<p>Return true if two context-sensitive instructions are inside same context-insensitive lock spa </p>
|
|
2360
2360
|
|
|
2361
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
2362
|
-
<div class="fragment"><div class="line"><a name="
|
|
2363
|
-
<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 &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2364
|
-
<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 &lockset1, const CxtLockSet &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#
|
|
2365
|
-
<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 & getCxtLockfromCxtStmt(const CxtStmt &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2361
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00707">707</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2362
|
+
<div class="fragment"><div class="line"><a name="l00708"></a><span class="lineno"> 708</span> {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1LockAnalysis.html#a395df7174e06cad1971e6a81587ca043">hasCxtLockfromCxtStmt</a>(cxtStmt1) || !<a class="code" href="classSVF_1_1LockAnalysis.html#a395df7174e06cad1971e6a81587ca043">hasCxtLockfromCxtStmt</a>(cxtStmt2))</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">CxtLockSet</a>& lockset1 = <a class="code" href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96">getCxtLockfromCxtStmt</a>(cxtStmt1);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">CxtLockSet</a>& lockset2 = <a class="code" href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96">getCxtLockfromCxtStmt</a>(cxtStmt2);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#af45f3c22edce16913ccbdd7015a06076">intersects</a>(lockset1,lockset2))</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> </div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> }</div><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< CxtLock > CxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00071">LockAnalysis.h:71</a></div></div>
|
|
2363
|
+
<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 &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00215">LockAnalysis.h:215</a></div></div>
|
|
2364
|
+
<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 &lockset1, const CxtLockSet &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>
|
|
2365
|
+
<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 & getCxtLockfromCxtStmt(const CxtStmt &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00220">LockAnalysis.h:220</a></div></div>
|
|
2366
2366
|
</div><!-- fragment -->
|
|
2367
2367
|
</div>
|
|
2368
2368
|
</div>
|
|
@@ -2393,11 +2393,11 @@ Private Attributes</h2></td></tr>
|
|
|
2393
2393
|
</div><div class="memdoc">
|
|
2394
2394
|
<p>Return true if two instructions are inside at least one common lock span </p>
|
|
2395
2395
|
|
|
2396
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
2397
|
-
<div class="fragment"><div class="line"><a name="
|
|
2398
|
-
<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#
|
|
2399
|
-
<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#
|
|
2400
|
-
<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#
|
|
2396
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00668">668</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2397
|
+
<div class="fragment"><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> queryStart = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>());</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span> </div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordtype">bool</span> sameSpan = <span class="keyword">false</span>;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#ac33c03c9d4a978891009ae919559d567">isInsideIntraLock</a>(i1) && <a class="code" href="classSVF_1_1LockAnalysis.html#ac33c03c9d4a978891009ae919559d567">isInsideIntraLock</a>(i2))</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  sameSpan = <a class="code" href="classSVF_1_1LockAnalysis.html#a65aca2bc12fc34203b16549653943eae">isInSameCISpan</a>(i1, i2);</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  sameSpan = <a class="code" href="classSVF_1_1LockAnalysis.html#a4245d946dd694b59b5c8ef30b08cb1dd">isInSameCSSpan</a>(i1, i2);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> </div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> queryEnd = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>());</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d">lockQueriesTime</a> += (queryEnd - queryStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keywordflow">return</span> sameSpan;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> }</div><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>
|
|
2398
|
+
<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>
|
|
2399
|
+
<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>
|
|
2400
|
+
<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>
|
|
2401
2401
|
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00041">SVFStat.cpp:41</a></div></div>
|
|
2402
2402
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
|
|
2403
2403
|
<div class="ttc" id="SVFBasicTypes_8h_html_ab6f41e9db3675dc689c5492418885041"><div class="ttname"><a href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a></div><div class="ttdeci">#define DOTIMESTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
|
|
@@ -2430,8 +2430,8 @@ Private Attributes</h2></td></tr>
|
|
|
2430
2430
|
|
|
2431
2431
|
<p>Return true if a statement is inside a partial lock/unlock pair (conditional lock with unconditional unlock) </p>
|
|
2432
2432
|
|
|
2433
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2434
|
-
<div class="fragment"><div class="line"><a name="
|
|
2433
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00136">136</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2434
|
+
<div class="fragment"><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <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>  }</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>
|
|
2435
2435
|
</div><!-- fragment -->
|
|
2436
2436
|
</div>
|
|
2437
2437
|
</div>
|
|
@@ -2461,9 +2461,9 @@ Private Attributes</h2></td></tr>
|
|
|
2461
2461
|
|
|
2462
2462
|
<p>Return true if a statement is inside an intra-procedural lock. </p>
|
|
2463
2463
|
|
|
2464
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2465
|
-
<div class="fragment"><div class="line"><a name="
|
|
2466
|
-
<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#
|
|
2464
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00130">130</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2465
|
+
<div class="fragment"><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <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>  }</div><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>
|
|
2466
|
+
<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>
|
|
2467
2467
|
</div><!-- fragment -->
|
|
2468
2468
|
</div>
|
|
2469
2469
|
</div>
|
|
@@ -2494,9 +2494,9 @@ Private Attributes</h2></td></tr>
|
|
|
2494
2494
|
<p>Intraprocedural locks. </p>
|
|
2495
2495
|
<p>Return true if the lock is an intra-procedural lock </p>
|
|
2496
2496
|
|
|
2497
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2498
|
-
<div class="fragment"><div class="line"><a name="
|
|
2499
|
-
<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#
|
|
2497
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00104">104</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2498
|
+
<div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  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() && <span class="stringliteral">"not a lock site?"</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <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>  }</div><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>
|
|
2499
|
+
<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>
|
|
2500
2500
|
</div><!-- fragment -->
|
|
2501
2501
|
</div>
|
|
2502
2502
|
</div>
|
|
@@ -2526,8 +2526,8 @@ Private Attributes</h2></td></tr>
|
|
|
2526
2526
|
|
|
2527
2527
|
<p>Return true if it is a candidate function. </p>
|
|
2528
2528
|
|
|
2529
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2530
|
-
<div class="fragment"><div class="line"><a name="
|
|
2529
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00196">196</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2530
|
+
<div class="fragment"><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <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>  }</div><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>
|
|
2531
2531
|
</div><!-- fragment -->
|
|
2532
2532
|
</div>
|
|
2533
2533
|
</div>
|
|
@@ -2558,11 +2558,11 @@ Private Attributes</h2></td></tr>
|
|
|
2558
2558
|
</div><div class="memdoc">
|
|
2559
2559
|
<p>Protected by at least one common context-insensitive lock </p>
|
|
2560
2560
|
|
|
2561
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
2562
|
-
<div class="fragment"><div class="line"><a name="
|
|
2563
|
-
<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 &cl1, const CxtLock &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#
|
|
2564
|
-
<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 & getIntraLockSet(const Instruction *stmt) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2565
|
-
<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< const Instruction * > InstSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2561
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00607">607</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2562
|
+
<div class="fragment"><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> {</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> </div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1LockAnalysis.html#af3b0c1b628bac48d07c24008fd9edc4f">isInsideCondIntraLock</a>(i1) && !<a class="code" href="classSVF_1_1LockAnalysis.html#af3b0c1b628bac48d07c24008fd9edc4f">isInsideCondIntraLock</a>(i2))</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">InstSet</a>& lockset1 = <a class="code" href="classSVF_1_1LockAnalysis.html#ad8e7c32cb1163f4917124fed5cf6c3ab">getIntraLockSet</a>(i1);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#ae682eb30763f0f52184eb36c95fc3811">InstSet</a>& lockset2 = <a class="code" href="classSVF_1_1LockAnalysis.html#ad8e7c32cb1163f4917124fed5cf6c3ab">getIntraLockSet</a>(i2);</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">for</span> (InstSet::const_iterator cil1 = lockset1.begin(), ecil1 = lockset1.end(); cil1!=ecil1; ++cil1)</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordflow">for</span> (InstSet::const_iterator cil2=lockset2.begin(), ecil2=lockset2.end(); cil2!=ecil2; ++cil2)</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#add9272ead87ca994ee4e08dfa30fa0f4">isAliasedLocks</a>(*cil1, *cil2))</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  }</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  }</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> }</div><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>
|
|
2563
|
+
<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 &cl1, const CxtLock &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>
|
|
2564
|
+
<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 & 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>
|
|
2565
|
+
<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< const Instruction * > InstSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00062">LockAnalysis.h:62</a></div></div>
|
|
2566
2566
|
</div><!-- fragment -->
|
|
2567
2567
|
</div>
|
|
2568
2568
|
</div>
|
|
@@ -2593,11 +2593,11 @@ Private Attributes</h2></td></tr>
|
|
|
2593
2593
|
</div><div class="memdoc">
|
|
2594
2594
|
<p>Protected by at least one common context-sensitive lock under each context </p>
|
|
2595
2595
|
|
|
2596
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
2597
|
-
<div class="fragment"><div class="line"><a name="
|
|
2598
|
-
<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#
|
|
2599
|
-
<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 & getCxtStmtfromInst(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2600
|
-
<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< CxtStmt > CxtStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2596
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00644">644</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2597
|
+
<div class="fragment"><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1LockAnalysis.html#a0af0f5bf91f4ae175b89ef24c27c987a">hasCxtStmtfromInst</a>(i1) || !<a class="code" href="classSVF_1_1LockAnalysis.html#a0af0f5bf91f4ae175b89ef24c27c987a">hasCxtStmtfromInst</a>(i2))</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a42ed881d4cd79eae099266a9e171aeb2">CxtStmtSet</a>& ctsset1 = <a class="code" href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d">getCxtStmtfromInst</a>(i1);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a42ed881d4cd79eae099266a9e171aeb2">CxtStmtSet</a>& ctsset2 = <a class="code" href="classSVF_1_1LockAnalysis.html#afc8c13fcff7c1199f63efc198a3b5a6d">getCxtStmtfromInst</a>(i2);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordflow">for</span> (CxtStmtSet::const_iterator cts1 = ctsset1.begin(), ects1 = ctsset1.end(); cts1 != ects1; cts1++)</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cxtStmt1 = *cts1;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keywordflow">for</span> (CxtStmtSet::const_iterator cts2 = ctsset2.begin(), ects2 = ctsset2.end(); cts2 != ects2; cts2++)</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a>& cxtStmt2 = *cts2;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keywordflow">if</span>(cxtStmt1==cxtStmt2) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LockAnalysis.html#a56405fa1fec68717958ed1c05dd34287">isProtectedByCommonCxtLock</a>(cxtStmt1,cxtStmt2)==<span class="keyword">false</span>)</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  }</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> }</div><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>
|
|
2598
|
+
<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>
|
|
2599
|
+
<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 & 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>
|
|
2600
|
+
<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< CxtStmt > CxtStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00070">LockAnalysis.h:70</a></div></div>
|
|
2601
2601
|
<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>
|
|
2602
2602
|
</div><!-- fragment -->
|
|
2603
2603
|
</div>
|
|
@@ -2629,11 +2629,11 @@ Private Attributes</h2></td></tr>
|
|
|
2629
2629
|
</div><div class="memdoc">
|
|
2630
2630
|
<p>Protected by at least one common context-sensitive lock </p>
|
|
2631
2631
|
|
|
2632
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
2633
|
-
<div class="fragment"><div class="line"><a name="
|
|
2634
|
-
<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< CxtLock > CxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2635
|
-
<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 &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2636
|
-
<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 & getCxtLockfromCxtStmt(const CxtStmt &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2632
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00629">629</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2633
|
+
<div class="fragment"><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1LockAnalysis.html#a395df7174e06cad1971e6a81587ca043">hasCxtLockfromCxtStmt</a>(cxtStmt1) || !<a class="code" href="classSVF_1_1LockAnalysis.html#a395df7174e06cad1971e6a81587ca043">hasCxtLockfromCxtStmt</a>(cxtStmt2))</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">CxtLockSet</a>& lockset1 = <a class="code" href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96">getCxtLockfromCxtStmt</a>(cxtStmt1);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">CxtLockSet</a>& lockset2 = <a class="code" href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96">getCxtLockfromCxtStmt</a>(cxtStmt2);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a4424f27444c12dce8071c56a95c664bf">alias</a>(lockset1,lockset2))</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> </div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> }</div><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 &lockset1, const CxtLockSet &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>
|
|
2634
|
+
<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< CxtLock > CxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00071">LockAnalysis.h:71</a></div></div>
|
|
2635
|
+
<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 &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00215">LockAnalysis.h:215</a></div></div>
|
|
2636
|
+
<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 & getCxtLockfromCxtStmt(const CxtStmt &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00220">LockAnalysis.h:220</a></div></div>
|
|
2637
2637
|
</div><!-- fragment -->
|
|
2638
2638
|
</div>
|
|
2639
2639
|
</div>
|
|
@@ -2665,12 +2665,12 @@ Private Attributes</h2></td></tr>
|
|
|
2665
2665
|
<p>Check if two Instructions are protected by common locks echo inst may have multiple cxt stmt we check whether every cxt stmt of instructions is protected by a common lock.</p>
|
|
2666
2666
|
<p>Protected by at least one common lock under every context </p>
|
|
2667
2667
|
|
|
2668
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
2669
|
-
<div class="fragment"><div class="line"><a name="
|
|
2670
|
-
<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#
|
|
2671
|
-
<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#
|
|
2672
|
-
<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#
|
|
2673
|
-
<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#
|
|
2668
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00590">590</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2669
|
+
<div class="fragment"><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ad648ad9cda4070f9aec1addef0067627">numOfTotalQueries</a>++;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordtype">bool</span> commonlock = <span class="keyword">false</span>;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> queryStart = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>());</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#ac33c03c9d4a978891009ae919559d567">isInsideIntraLock</a>(i1) && <a class="code" href="classSVF_1_1LockAnalysis.html#ac33c03c9d4a978891009ae919559d567">isInsideIntraLock</a>(i2))</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  commonlock = <a class="code" href="classSVF_1_1LockAnalysis.html#a842ddef4d1cb9c45555d949375627a48">isProtectedByCommonCILock</a>(i1,i2) ;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  commonlock = <a class="code" href="classSVF_1_1LockAnalysis.html#a56405fa1fec68717958ed1c05dd34287">isProtectedByCommonCxtLock</a>(i1,i2);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> queryEnd = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>());</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#a853ab1a953ddcf76841016a833e43f3d">lockQueriesTime</a> += (queryEnd - queryStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">return</span> commonlock;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> }</div><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>
|
|
2670
|
+
<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>
|
|
2671
|
+
<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>
|
|
2672
|
+
<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>
|
|
2673
|
+
<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>
|
|
2674
2674
|
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00041">SVFStat.cpp:41</a></div></div>
|
|
2675
2675
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00182">SVFBasicTypes.h:182</a></div></div>
|
|
2676
2676
|
<div class="ttc" id="SVFBasicTypes_8h_html_ab6f41e9db3675dc689c5492418885041"><div class="ttname"><a href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a></div><div class="ttdeci">#define DOTIMESTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
|
|
@@ -2703,10 +2703,10 @@ Private Attributes</h2></td></tr>
|
|
|
2703
2703
|
|
|
2704
2704
|
<p>Whether it is a lock site. </p>
|
|
2705
2705
|
|
|
2706
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2707
|
-
<div class="fragment"><div class="line"><a name="
|
|
2706
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00448">448</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2707
|
+
<div class="fragment"><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-><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>  }</div><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>
|
|
2708
2708
|
<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>
|
|
2709
|
-
<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#
|
|
2709
|
+
<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>
|
|
2710
2710
|
</div><!-- fragment -->
|
|
2711
2711
|
</div>
|
|
2712
2712
|
</div>
|
|
@@ -2736,10 +2736,10 @@ Private Attributes</h2></td></tr>
|
|
|
2736
2736
|
|
|
2737
2737
|
<p>Whether it is a lock site. </p>
|
|
2738
2738
|
|
|
2739
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2740
|
-
<div class="fragment"><div class="line"><a name="
|
|
2739
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00443">443</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2740
|
+
<div class="fragment"><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-><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>  }</div><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>
|
|
2741
2741
|
<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>
|
|
2742
|
-
<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#
|
|
2742
|
+
<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>
|
|
2743
2743
|
</div><!-- fragment -->
|
|
2744
2744
|
</div>
|
|
2745
2745
|
</div>
|
|
@@ -2769,9 +2769,9 @@ Private Attributes</h2></td></tr>
|
|
|
2769
2769
|
|
|
2770
2770
|
<p>Whether it is a unlock site. </p>
|
|
2771
2771
|
|
|
2772
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2773
|
-
<div class="fragment"><div class="line"><a name="
|
|
2774
|
-
<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#
|
|
2772
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00453">453</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2773
|
+
<div class="fragment"><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-><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>  }</div><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>
|
|
2774
|
+
<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>
|
|
2775
2775
|
<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>
|
|
2776
2776
|
</div><!-- fragment -->
|
|
2777
2777
|
</div>
|
|
@@ -2800,8 +2800,8 @@ Private Attributes</h2></td></tr>
|
|
|
2800
2800
|
</table>
|
|
2801
2801
|
</div><div class="memdoc">
|
|
2802
2802
|
|
|
2803
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2804
|
-
<div class="fragment"><div class="line"><a name="
|
|
2803
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00416">416</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2804
|
+
<div class="fragment"><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <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>  }</div><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>
|
|
2805
2805
|
</div><!-- fragment -->
|
|
2806
2806
|
</div>
|
|
2807
2807
|
</div>
|
|
@@ -2842,13 +2842,13 @@ Private Attributes</h2></td></tr>
|
|
|
2842
2842
|
<p>Mark thread flags for cxtStmt. </p>
|
|
2843
2843
|
<p>Transfer function for marking context-sensitive statement </p>
|
|
2844
2844
|
|
|
2845
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2846
|
-
<div class="fragment"><div class="line"><a name="
|
|
2847
|
-
<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 &cts, const CxtLock &cl)</div><div class="ttdoc">Add context-sensitive statement. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2848
|
-
<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< CxtLock > CxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2849
|
-
<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 &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2850
|
-
<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 & getCxtLockfromCxtStmt(const CxtStmt &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2851
|
-
<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 &cs)</div><div class="ttdoc">Worklist operations. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2845
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00359">359</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2846
|
+
<div class="fragment"><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">CxtLockSet</a>& 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>  <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>  {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <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>  {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <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>  }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <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>  }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <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>  <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>  }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  }</div><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 &tgrlockset, const CxtLockSet &srclockset)</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00376">LockAnalysis.h:376</a></div></div>
|
|
2847
|
+
<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 &cts, const CxtLock &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>
|
|
2848
|
+
<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< CxtLock > CxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00071">LockAnalysis.h:71</a></div></div>
|
|
2849
|
+
<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 &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00215">LockAnalysis.h:215</a></div></div>
|
|
2850
|
+
<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 & getCxtLockfromCxtStmt(const CxtStmt &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00220">LockAnalysis.h:220</a></div></div>
|
|
2851
|
+
<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 &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>
|
|
2852
2852
|
</div><!-- fragment -->
|
|
2853
2853
|
</div>
|
|
2854
2854
|
</div>
|
|
@@ -2895,19 +2895,19 @@ Private Attributes</h2></td></tr>
|
|
|
2895
2895
|
<p>Match context. </p>
|
|
2896
2896
|
<p>partial match </p>
|
|
2897
2897
|
|
|
2898
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
2899
|
-
<div class="fragment"><div class="line"><a name="
|
|
2898
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00559">559</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2899
|
+
<div class="fragment"><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = call->getParent()->getParent();</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(callee);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcaller = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(caller);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">getCallSiteID</a>(cbn, svfcallee);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> <span class="comment">// /// handle calling context for candidate functions only</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> <span class="comment">// if (isLockCandidateFun(caller) == false)</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="comment">// return true;</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">if</span> (cxt.empty())</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> </div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">inSameCallGraphSCC</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallGraphNode(svfcaller), <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallGraphNode(svfcallee)) == <span class="keyword">false</span>)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">if</span> (cxt.back() == csId)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  cxt.pop_back();</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">dumpCxt</a>(cxt));</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a711bd8ad385f8454fbfcd20f134efe1b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
|
|
2900
2900
|
<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>
|
|
2901
2901
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
|
|
2902
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
2903
|
-
<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#
|
|
2904
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
2902
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00172">TCT.h:172</a></div></div>
|
|
2903
|
+
<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>
|
|
2904
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00177">TCT.h:177</a></div></div>
|
|
2905
2905
|
<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>
|
|
2906
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a95cd490d37f8831edc6910f7ecdf413e"><div class="ttname"><a href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">SVF::TCT::inSameCallGraphSCC</a></div><div class="ttdeci">bool inSameCallGraphSCC(const PTACallGraphNode *src, const PTACallGraphNode *dst)</div><div class="ttdoc">Whether two functions in the same callgraph scc. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
2906
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a95cd490d37f8831edc6910f7ecdf413e"><div class="ttname"><a href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">SVF::TCT::inSameCallGraphSCC</a></div><div class="ttdeci">bool inSameCallGraphSCC(const PTACallGraphNode *src, const PTACallGraphNode *dst)</div><div class="ttdoc">Whether two functions in the same callgraph scc. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00289">TCT.h:289</a></div></div>
|
|
2907
2907
|
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00093">SVFBasicTypes.h:93</a></div></div>
|
|
2908
|
-
<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#
|
|
2908
|
+
<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>
|
|
2909
2909
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
2910
|
-
<div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
2910
|
+
<div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00551">TCT.cpp:551</a></div></div>
|
|
2911
2911
|
<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>
|
|
2912
2912
|
</div><!-- fragment -->
|
|
2913
2913
|
</div>
|
|
@@ -2935,9 +2935,9 @@ Private Attributes</h2></td></tr>
|
|
|
2935
2935
|
</table>
|
|
2936
2936
|
</div><div class="memdoc">
|
|
2937
2937
|
|
|
2938
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2939
|
-
<div class="fragment"><div class="line"><a name="
|
|
2940
|
-
<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#
|
|
2938
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00411">411</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2939
|
+
<div class="fragment"><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#ad855d1de318766ac305a10bfdae4da82">CxtLockProc</a> 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>  <span class="keywordflow">return</span> clp;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  }</div><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>
|
|
2940
|
+
<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>
|
|
2941
2941
|
<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>
|
|
2942
2942
|
</div><!-- fragment -->
|
|
2943
2943
|
</div>
|
|
@@ -2965,8 +2965,8 @@ Private Attributes</h2></td></tr>
|
|
|
2965
2965
|
</table>
|
|
2966
2966
|
</div><div class="memdoc">
|
|
2967
2967
|
|
|
2968
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
2969
|
-
<div class="fragment"><div class="line"><a name="
|
|
2968
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00428">428</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
2969
|
+
<div class="fragment"><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  CxtStmt 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>  <span class="keywordflow">return</span> clp;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div><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>
|
|
2970
2970
|
<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>
|
|
2971
2971
|
</div><!-- fragment -->
|
|
2972
2972
|
</div>
|
|
@@ -2990,9 +2990,9 @@ Private Attributes</h2></td></tr>
|
|
|
2990
2990
|
<p>Print locks and spans. </p>
|
|
2991
2991
|
<p>Print context-insensitive and context-sensitive locks </p>
|
|
2992
2992
|
|
|
2993
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
2994
|
-
<div class="fragment"><div class="line"><a name="
|
|
2995
|
-
<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 & getCxtLockfromCxtStmt(const CxtStmt &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
2993
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00416">416</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
2994
|
+
<div class="fragment"><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">CxtLockSet</a> & lockset = <a class="code" href="classSVF_1_1LockAnalysis.html#a4b55036dae224c83b650389a409d9b96">getCxtLockfromCxtStmt</a>(cts);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nlock sets size = "</span> << lockset.size() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">for</span> (CxtLockSet::const_iterator it = lockset.begin(), eit = lockset.end(); it != eit; ++it)</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  (*it).dump();</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> }</div><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< CxtLock > CxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00071">LockAnalysis.h:71</a></div></div>
|
|
2995
|
+
<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 & getCxtLockfromCxtStmt(const CxtStmt &cts) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00220">LockAnalysis.h:220</a></div></div>
|
|
2996
2996
|
<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 & 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>
|
|
2997
2997
|
</div><!-- fragment -->
|
|
2998
2998
|
</div>
|
|
@@ -3039,20 +3039,20 @@ Private Attributes</h2></td></tr>
|
|
|
3039
3039
|
|
|
3040
3040
|
<p>Push calling context. </p>
|
|
3041
3041
|
|
|
3042
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
3043
|
-
<div class="fragment"><div class="line"><a name="
|
|
3042
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00540">540</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
3043
|
+
<div class="fragment"><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = call->getParent()->getParent();</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(callee);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcaller = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(caller);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">getCallSiteID</a>(cbn, svfcallee);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> </div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="comment">// /// handle calling context for candidate functions only</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="comment">// if (isLockCandidateFun(caller) == false)</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="comment">// return;</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> </div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">inSameCallGraphSCC</a>(<a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallGraphNode(svfcaller), <a class="code" href="classSVF_1_1LockAnalysis.html#a96a6cfddc8f7115294e8ad49a097b938">getTCG</a>()->getCallGraphNode(svfcallee)) == <span class="keyword">false</span>)</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  {</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">pushCxt</a>(cxt,csId);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">dumpCxt</a>(cxt));</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  }</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a711bd8ad385f8454fbfcd20f134efe1b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
|
|
3044
3044
|
<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>
|
|
3045
3045
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00125">BasicTypes.h:125</a></div></div>
|
|
3046
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
3047
|
-
<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#
|
|
3048
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
3046
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00172">TCT.h:172</a></div></div>
|
|
3047
|
+
<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>
|
|
3048
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00177">TCT.h:177</a></div></div>
|
|
3049
3049
|
<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>
|
|
3050
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a95cd490d37f8831edc6910f7ecdf413e"><div class="ttname"><a href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">SVF::TCT::inSameCallGraphSCC</a></div><div class="ttdeci">bool inSameCallGraphSCC(const PTACallGraphNode *src, const PTACallGraphNode *dst)</div><div class="ttdoc">Whether two functions in the same callgraph scc. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
3050
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a95cd490d37f8831edc6910f7ecdf413e"><div class="ttname"><a href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">SVF::TCT::inSameCallGraphSCC</a></div><div class="ttdeci">bool inSameCallGraphSCC(const PTACallGraphNode *src, const PTACallGraphNode *dst)</div><div class="ttdoc">Whether two functions in the same callgraph scc. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00289">TCT.h:289</a></div></div>
|
|
3051
3051
|
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00093">SVFBasicTypes.h:93</a></div></div>
|
|
3052
|
-
<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#
|
|
3052
|
+
<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>
|
|
3053
3053
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
3054
|
-
<div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
3055
|
-
<div class="ttc" id="classSVF_1_1TCT_html_afc6d7a91cfc98561bcce13425964a39e"><div class="ttname"><a href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">SVF::TCT::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
3054
|
+
<div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00551">TCT.cpp:551</a></div></div>
|
|
3055
|
+
<div class="ttc" id="classSVF_1_1TCT_html_afc6d7a91cfc98561bcce13425964a39e"><div class="ttname"><a href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">SVF::TCT::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00498">TCT.cpp:498</a></div></div>
|
|
3056
3056
|
<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>
|
|
3057
3057
|
</div><!-- fragment -->
|
|
3058
3058
|
</div>
|
|
@@ -3083,11 +3083,11 @@ Private Attributes</h2></td></tr>
|
|
|
3083
3083
|
|
|
3084
3084
|
<p>WorkList helper functions. </p>
|
|
3085
3085
|
|
|
3086
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3087
|
-
<div class="fragment"><div class="line"><a name="
|
|
3088
|
-
<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 &clp) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
3086
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00402">402</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3087
|
+
<div class="fragment"><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <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>  {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <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>  <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>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  }</div><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>
|
|
3088
|
+
<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 &clp) const</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00416">LockAnalysis.h:416</a></div></div>
|
|
3089
3089
|
<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>
|
|
3090
|
-
<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#
|
|
3090
|
+
<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>
|
|
3091
3091
|
</div><!-- fragment -->
|
|
3092
3092
|
</div>
|
|
3093
3093
|
</div>
|
|
@@ -3117,9 +3117,9 @@ Private Attributes</h2></td></tr>
|
|
|
3117
3117
|
|
|
3118
3118
|
<p>Worklist operations. </p>
|
|
3119
3119
|
|
|
3120
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3121
|
-
<div class="fragment"><div class="line"><a name="
|
|
3122
|
-
<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#
|
|
3120
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00424">424</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3121
|
+
<div class="fragment"><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <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>  }</div><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>
|
|
3122
|
+
<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>
|
|
3123
3123
|
</div><!-- fragment -->
|
|
3124
3124
|
</div>
|
|
3125
3125
|
</div>
|
|
@@ -3159,9 +3159,9 @@ Private Attributes</h2></td></tr>
|
|
|
3159
3159
|
|
|
3160
3160
|
<p>Add context-sensitive statement. </p>
|
|
3161
3161
|
|
|
3162
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3163
|
-
<div class="fragment"><div class="line"><a name="
|
|
3164
|
-
<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#
|
|
3162
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00239">239</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3163
|
+
<div class="fragment"><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <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>  <span class="keywordflow">if</span>(find)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <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>  <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>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">return</span> find;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div><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>
|
|
3164
|
+
<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>
|
|
3165
3165
|
</div><!-- fragment -->
|
|
3166
3166
|
</div>
|
|
3167
3167
|
</div>
|
|
@@ -3191,8 +3191,8 @@ Private Attributes</h2></td></tr>
|
|
|
3191
3191
|
|
|
3192
3192
|
<p>Touch this context statement. </p>
|
|
3193
3193
|
|
|
3194
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3195
|
-
<div class="fragment"><div class="line"><a name="
|
|
3194
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00255">255</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3195
|
+
<div class="fragment"><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <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>  }</div><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>
|
|
3196
3196
|
</div><!-- fragment -->
|
|
3197
3197
|
</div>
|
|
3198
3198
|
</div>
|
|
@@ -3219,11 +3219,11 @@ Private Attributes</h2></td></tr>
|
|
|
3219
3219
|
</table>
|
|
3220
3220
|
</div><div class="memdoc">
|
|
3221
3221
|
|
|
3222
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#
|
|
3223
|
-
<div class="fragment"><div class="line"><a name="
|
|
3224
|
-
<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#
|
|
3225
|
-
<div class="ttc" id="classSVF_1_1TCT_html_aabc2c84e951ed9ae64207e379acb3074"><div class="ttname"><a href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">SVF::TCT::getSVFModule</a></div><div class="ttdeci">SVFModule * getSVFModule() const</div><div class="ttdoc">Get SVFFModule. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
3226
|
-
<div class="ttc" id="classSVF_1_1RaceValidator_html"><div class="ttname"><a href="classSVF_1_1RaceValidator.html">SVF::RaceValidator</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#
|
|
3222
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8cpp_source.html#l00742">742</a> of file <a class="el" href="LockAnalysis_8cpp_source.html">LockAnalysis.cpp</a>.</p>
|
|
3223
|
+
<div class="fragment"><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> {</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> </div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="comment">// Initialize the validator and perform validation.</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <a class="code" href="classSVF_1_1LockResultValidator.html">LockResultValidator</a> lockvalidator(<span class="keyword">this</span>);</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  lockvalidator.analyze();</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> </div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <a class="code" href="classSVF_1_1RaceValidator.html">RaceValidator</a> validator(<span class="keyword">this</span>);</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  validator.init(<a class="code" href="classSVF_1_1LockAnalysis.html#a2c4a69b0f2381142c172b3043943c79d">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>());</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  validator.analyze();</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> }</div><div class="ttc" id="classSVF_1_1LockResultValidator_html"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html">SVF::LockResultValidator</a></div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00018">LockResultValidator.h:18</a></div></div>
|
|
3224
|
+
<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>
|
|
3225
|
+
<div class="ttc" id="classSVF_1_1TCT_html_aabc2c84e951ed9ae64207e379acb3074"><div class="ttname"><a href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">SVF::TCT::getSVFModule</a></div><div class="ttdeci">SVFModule * getSVFModule() const</div><div class="ttdoc">Get SVFFModule. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00182">TCT.h:182</a></div></div>
|
|
3226
|
+
<div class="ttc" id="classSVF_1_1RaceValidator_html"><div class="ttname"><a href="classSVF_1_1RaceValidator.html">SVF::RaceValidator</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00048">LockAnalysis.cpp:48</a></div></div>
|
|
3227
3227
|
</div><!-- fragment -->
|
|
3228
3228
|
</div>
|
|
3229
3229
|
</div>
|
|
@@ -3250,7 +3250,7 @@ Private Attributes</h2></td></tr>
|
|
|
3250
3250
|
|
|
3251
3251
|
<p>Used for context-insensitive intra-procedural locks. </p>
|
|
3252
3252
|
|
|
3253
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3253
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00507">507</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3254
3254
|
|
|
3255
3255
|
</div>
|
|
3256
3256
|
</div>
|
|
@@ -3276,7 +3276,7 @@ Private Attributes</h2></td></tr>
|
|
|
3276
3276
|
|
|
3277
3277
|
<p>Following data structures are used for collecting context-sensitive locks. </p>
|
|
3278
3278
|
|
|
3279
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3279
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00490">490</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3280
3280
|
|
|
3281
3281
|
</div>
|
|
3282
3282
|
</div>
|
|
@@ -3302,7 +3302,7 @@ Private Attributes</h2></td></tr>
|
|
|
3302
3302
|
|
|
3303
3303
|
<p>Context-sensitive locks. </p>
|
|
3304
3304
|
|
|
3305
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3305
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00479">479</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3306
3306
|
|
|
3307
3307
|
</div>
|
|
3308
3308
|
</div>
|
|
@@ -3327,7 +3327,7 @@ Private Attributes</h2></td></tr>
|
|
|
3327
3327
|
</div><div class="memdoc">
|
|
3328
3328
|
<p>Map a context-sensitive lock to its lock span statements Map a context-sensitive statement to its context-sensitive lock </p>
|
|
3329
3329
|
|
|
3330
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3330
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00484">484</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3331
3331
|
|
|
3332
3332
|
</div>
|
|
3333
3333
|
</div>
|
|
@@ -3353,7 +3353,7 @@ Private Attributes</h2></td></tr>
|
|
|
3353
3353
|
|
|
3354
3354
|
<p>context-sensitive statement worklist </p>
|
|
3355
3355
|
|
|
3356
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3356
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00472">472</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3357
3357
|
|
|
3358
3358
|
</div>
|
|
3359
3359
|
</div>
|
|
@@ -3377,7 +3377,7 @@ Private Attributes</h2></td></tr>
|
|
|
3377
3377
|
</table>
|
|
3378
3378
|
</div><div class="memdoc">
|
|
3379
3379
|
|
|
3380
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3380
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00485">485</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3381
3381
|
|
|
3382
3382
|
</div>
|
|
3383
3383
|
</div>
|
|
@@ -3401,7 +3401,7 @@ Private Attributes</h2></td></tr>
|
|
|
3401
3401
|
</table>
|
|
3402
3402
|
</div><div class="memdoc">
|
|
3403
3403
|
|
|
3404
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3404
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00508">508</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3405
3405
|
|
|
3406
3406
|
</div>
|
|
3407
3407
|
</div>
|
|
@@ -3425,7 +3425,7 @@ Private Attributes</h2></td></tr>
|
|
|
3425
3425
|
</table>
|
|
3426
3426
|
</div><div class="memdoc">
|
|
3427
3427
|
|
|
3428
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3428
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00509">509</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3429
3429
|
|
|
3430
3430
|
</div>
|
|
3431
3431
|
</div>
|
|
@@ -3451,7 +3451,7 @@ Private Attributes</h2></td></tr>
|
|
|
3451
3451
|
|
|
3452
3452
|
<p>Map a statement to all its context-sensitive statements. </p>
|
|
3453
3453
|
|
|
3454
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3454
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00475">475</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3455
3455
|
|
|
3456
3456
|
</div>
|
|
3457
3457
|
</div>
|
|
@@ -3477,7 +3477,7 @@ Private Attributes</h2></td></tr>
|
|
|
3477
3477
|
|
|
3478
3478
|
<p>Candidate functions which relevant to locks/unlocks. </p>
|
|
3479
3479
|
|
|
3480
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3480
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00502">502</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3481
3481
|
|
|
3482
3482
|
</div>
|
|
3483
3483
|
</div>
|
|
@@ -3493,7 +3493,7 @@ Private Attributes</h2></td></tr>
|
|
|
3493
3493
|
</table>
|
|
3494
3494
|
</div><div class="memdoc">
|
|
3495
3495
|
|
|
3496
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3496
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00517">517</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3497
3497
|
|
|
3498
3498
|
</div>
|
|
3499
3499
|
</div>
|
|
@@ -3520,7 +3520,7 @@ Private Attributes</h2></td></tr>
|
|
|
3520
3520
|
<p>Record all visited clps. </p>
|
|
3521
3521
|
<p>Collecting lock/unlock sites </p>
|
|
3522
3522
|
|
|
3523
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3523
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00496">496</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3524
3524
|
|
|
3525
3525
|
</div>
|
|
3526
3526
|
</div>
|
|
@@ -3536,7 +3536,7 @@ Private Attributes</h2></td></tr>
|
|
|
3536
3536
|
</table>
|
|
3537
3537
|
</div><div class="memdoc">
|
|
3538
3538
|
|
|
3539
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3539
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00514">514</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3540
3540
|
|
|
3541
3541
|
</div>
|
|
3542
3542
|
</div>
|
|
@@ -3552,7 +3552,7 @@ Private Attributes</h2></td></tr>
|
|
|
3552
3552
|
</table>
|
|
3553
3553
|
</div><div class="memdoc">
|
|
3554
3554
|
|
|
3555
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3555
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00516">516</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3556
3556
|
|
|
3557
3557
|
</div>
|
|
3558
3558
|
</div>
|
|
@@ -3568,7 +3568,7 @@ Private Attributes</h2></td></tr>
|
|
|
3568
3568
|
</table>
|
|
3569
3569
|
</div><div class="memdoc">
|
|
3570
3570
|
|
|
3571
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3571
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00515">515</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3572
3572
|
|
|
3573
3573
|
</div>
|
|
3574
3574
|
</div>
|
|
@@ -3594,7 +3594,7 @@ Private Attributes</h2></td></tr>
|
|
|
3594
3594
|
|
|
3595
3595
|
<p><a class="el" href="classSVF_1_1TCT.html">TCT</a>. </p>
|
|
3596
3596
|
|
|
3597
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3597
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00469">469</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3598
3598
|
|
|
3599
3599
|
</div>
|
|
3600
3600
|
</div>
|
|
@@ -3618,7 +3618,7 @@ Private Attributes</h2></td></tr>
|
|
|
3618
3618
|
</table>
|
|
3619
3619
|
</div><div class="memdoc">
|
|
3620
3620
|
|
|
3621
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3621
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00497">497</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3622
3622
|
|
|
3623
3623
|
</div>
|
|
3624
3624
|
</div>
|
|
@@ -3644,7 +3644,7 @@ Private Attributes</h2></td></tr>
|
|
|
3644
3644
|
|
|
3645
3645
|
<p>CxtLockProc <a class="el" href="classSVF_1_1List.html">List</a>. </p>
|
|
3646
3646
|
|
|
3647
|
-
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#
|
|
3647
|
+
<p class="definition">Definition at line <a class="el" href="LockAnalysis_8h_source.html#l00491">491</a> of file <a class="el" href="LockAnalysis_8h_source.html">LockAnalysis.h</a>.</p>
|
|
3648
3648
|
|
|
3649
3649
|
</div>
|
|
3650
3650
|
</div>
|