Package soot.toDex

Class TrapSplitter


  • public class TrapSplitter
    extends BodyTransformer
    Transformer that splits nested traps for Dalvik which does not support hierarchies of traps. If we have a trap (1-3) with handler A and a trap (2) with handler B, we transform them into three new traps: (1) and (3) with A, (2) with A+B.
    Author:
    Steven Arzt
    • Method Detail

      • internalTransform

        protected void internalTransform​(Body b,
                                         String phaseName,
                                         Map<String,​String> options)
        Description copied from class: BodyTransformer
        This method is called to perform the transformation itself. It is declared abstract; subclasses must implement this method by making it the entry point to their actual Body transformation.
        Specified by:
        internalTransform in class BodyTransformer
        Parameters:
        b - the body on which to apply the transformation
        phaseName - the phasename for this transform; not typically used by implementations.
        options - the actual computed options; a combination of default options and Scene specified options.
      • removePotentiallyUselassTraps

        public static void removePotentiallyUselassTraps​(Body b,
                                                         Set<Unit> potentiallyUselessTrapHandlers)
        Changes the given body so that trap handlers, which are contained in the given set, are removed in case they are not referenced by any trap. The list is changed so that it contains the unreferenced trap handlers.
        Parameters:
        b - the body
        potentiallyUselessTrapHandlers - potentially useless trap handlers