Class SingleStartAndroidModel

java.lang.Object
com.ibm.wala.dalvik.ipa.callgraph.androidModel.structure.AbstractAndroidModel
com.ibm.wala.dalvik.ipa.callgraph.androidModel.structure.SingleStartAndroidModel
Direct Known Subclasses:
LoopAndroidModel

public class SingleStartAndroidModel extends AbstractAndroidModel
Builds an Android Model incorporating a single loop.

This class models a single run of an Andoird-Component: E.g. The view of an Activity gets shown only once.

The incorporated loop is wrapped around user-interaction methods. These are in the section MULTIPLE_TIMES_IN_LOOP.

Author:
Tobias Blaschke <code@tobiasblaschke.de>
See Also:
  • Constructor Details

  • Method Details

    • enterMULTIPLE_TIMES_IN_LOOP

      protected int enterMULTIPLE_TIMES_IN_LOOP(int PC)
      Prepares the PC to get looped to.

      Thus it tries to assure a new basic block starts here. Additionally it reserves some space for the insertion of Phi-Functions.

      Gets called when Label ExecutionOrder.MULTIPLE_TIMES_IN_LOOP got stepped over.

      In most cases you don't want to invoke this function directly but to use enter(ExecutionOrder.MULTIPLE_TIMES_IN_LOOP, int) instead

      Sideeffects: currentSection is updated, instructions are inserted into the body

      Overrides:
      enterMULTIPLE_TIMES_IN_LOOP in class AbstractAndroidModel
      Parameters:
      PC - Program Counter instructions shall be placed at. In most cases you'll simply pass body.getNextProgramCounter()
      Returns:
      Program Counter after insertion of the code
    • enterEND_OF_LOOP

      protected int enterEND_OF_LOOP(int PC)
      Loops to MULTIPLE_TIMES_IN_LOOP.

      It inserts a gotoInstruction and fills the space reserved before with actual PhiInstructions

      Gets called when Label ExecutionOrder.END_OF_LOOP got stepped over.

      In most cases you don't want to invoke this function directly but to use enter(ExecutionOrder.END_OF_LOOP, int) instead

      Sideeffects: currentSection is updated, instructions are inserted into the body

      Overrides:
      enterEND_OF_LOOP in class AbstractAndroidModel
      Parameters:
      PC - Program Counter instructions shall be placed at. In most cases you'll simply pass body.getNextProgramCounter()
      Returns:
      Program Counter after insertion of the code