Package soot.dexpler

Class DexDefUseAnalysis

  • All Implemented Interfaces:
    LocalDefs

    public class DexDefUseAnalysis
    extends Object
    implements LocalDefs
    Simplistic caching, flow-insensitive def/use analysis
    Author:
    Steven Arzt
    • Field Detail

      • localToDefsBits

        protected BitSet[] localToDefsBits
      • localToUsesBits

        protected BitSet[] localToUsesBits
      • unitList

        protected List<Unit> unitList
    • Constructor Detail

      • DexDefUseAnalysis

        public DexDefUseAnalysis​(Body body)
    • Method Detail

      • initialize

        protected void initialize()
      • collectDefinitionsWithAliases

        protected Set<Unit> collectDefinitionsWithAliases​(Local l)
        Collect definitions of l in body including the definitions of aliases of l. This analysis exploits that the problem is flow-insensitive anyway. In this context an alias is a local that propagates its value to l.
        Parameters:
        l - the local whose definitions are to collect
      • getDefsOfAt

        public List<Unit> getDefsOfAt​(Local l,
                                      Unit s)
        Description copied from interface: LocalDefs
        Returns the definition sites for a Local at a certain point (Unit) in a method. You can assume this method never returns null.
        Specified by:
        getDefsOfAt in interface LocalDefs
        Parameters:
        l - the Local in question.
        s - a unit that specifies the method context (location) to query for the definitions of the Local.
        Returns:
        a list of Units where the local is defined in the current method context. If there are no uses an empty list will returned.
      • getDefsOf

        public List<Unit> getDefsOf​(Local l)
        Description copied from interface: LocalDefs
        Returns the definition sites for a Local merged over all points in a method. You can assume this method never returns null.
        Specified by:
        getDefsOf in interface LocalDefs
        Parameters:
        l - the Local in question.
        Returns:
        a list of Units where the local is defined in the current method context. If there are no uses an empty list will returned.