Package soot.asm

Class CastAndReturnInliner


  • public class CastAndReturnInliner
    extends BodyTransformer
    Transformers that inlines returns that cast and return an object. We take a = .. goto l0; l0: b = (B) a; return b; and transform it into a = .. return a; This makes it easier for the local splitter to split distinct uses of the same variable. Imagine that "a" can come from different parts of the code and have different types. To be able to find a valid typing at all, we must break apart the uses of "a".
    Author:
    Steven Arzt
    • Constructor Detail

      • CastAndReturnInliner

        public CastAndReturnInliner()
    • Method Detail

      • internalTransform

        protected void internalTransform​(Body body,
                                         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:
        body - 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.