Class LockableReferenceAnalysis


  • public class LockableReferenceAnalysis
    extends BackwardFlowAnalysis<Unit,​soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo>
    Finds the set of local variables and/or references that represent all of the relevant objects used in a synchronized region, as accessible at the start of that region. Basically this is value numbering, done in reverse, interprocedurally, and only tracking the values that contribute to the given set of side effects.
    Since:
    2007-04-19
    Author:
    Richard L. Halpert
    • Constructor Detail

      • LockableReferenceAnalysis

        public LockableReferenceAnalysis​(UnitGraph g)
    • Method Detail

      • printMsg

        public void printMsg​(String msg)
      • merge

        protected void merge​(soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo in1,
                             soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo in2,
                             soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo out)
        Description copied from class: AbstractFlowAnalysis
        Compute the merge of the in1 and in2 sets, putting the result into out. The behavior of this function depends on the implementation ( it may be necessary to check whether in1 and in2 are equal or aliased ). Used by the doAnalysis method.
        Specified by:
        merge in class AbstractFlowAnalysis<Unit,​soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo>
      • flowThrough

        protected void flowThrough​(soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo inInfo,
                                   Unit u,
                                   soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo outInfo)
        Description copied from class: FlowAnalysis
        Given the merge of the out sets, compute the in set for s (or in to out, depending on direction). This function often causes confusion, because the same interface is used for both forward and backward flow analyses. The first parameter is always the argument to the flow function (i.e. it is the "in" set in a forward analysis and the "out" set in a backward analysis), and the third parameter is always the result of the flow function (i.e. it is the "out" set in a forward analysis and the "in" set in a backward analysis).
        Specified by:
        flowThrough in class FlowAnalysis<Unit,​soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo>
        Parameters:
        inInfo - the input flow
        u - the current node
        outInfo - the returned flow
      • copy

        protected void copy​(soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo sourceInfo,
                            soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo destInfo)
        Description copied from class: AbstractFlowAnalysis
        Creates a copy of the source flow object in dest.
        Specified by:
        copy in class AbstractFlowAnalysis<Unit,​soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo>
      • newInitialFlow

        protected soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo newInitialFlow()
        Description copied from class: AbstractFlowAnalysis
        Returns the flow object corresponding to the initial values for each graph node.
        Specified by:
        newInitialFlow in class AbstractFlowAnalysis<Unit,​soot.jimple.toolkits.thread.synchronization.LocksetFlowInfo>