Package soot.dexpler

Class DexTrapStackFixer


  • public class DexTrapStackFixer
    extends BodyTransformer
    Transformer to ensure that all exception handlers pull the exception object. In other words, if an exception handler must always have a unit like $r10 = @caughtexception This is especially important if the dex code is later to be translated into Java bytecode. If no one ever accesses the exception object, it will reside on the stack forever, potentially leading to mismatching stack heights.
    Author:
    Steven Arzt
    • Constructor Detail

      • DexTrapStackFixer

        public DexTrapStackFixer()
    • 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.