public class SingleStartAndroidModel extends AbstractAndroidModel
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.
LoopAndroidModel,
LoopKillAndroidModelbody, entryPoints, insts, paramManager| Constructor and Description |
|---|
SingleStartAndroidModel(com.ibm.wala.ipa.summaries.VolatileMethodSummary body,
com.ibm.wala.util.ssa.TypeSafeInstructionFactory insts,
com.ibm.wala.util.ssa.SSAValueManager paramManager,
java.lang.Iterable<? extends com.ibm.wala.ipa.callgraph.Entrypoint> entryPoints) |
| Modifier and Type | Method and Description |
|---|---|
protected int |
enterEND_OF_LOOP(int PC)
Loops to MULTIPLE_TIMES_IN_LOOP.
|
protected int |
enterMULTIPLE_TIMES_IN_LOOP(int PC)
Prepares the PC to get looped to.
|
enter, enterAFTER_LOOP, enterAT_FIRST, enterAT_LAST, enterBEFORE_LOOP, enterMIDDLE_OF_LOOP, enterSTART_OF_LOOP, finish, hadSectionSwitch, leaveAT_LAST, returnTypesBetweenpublic SingleStartAndroidModel(com.ibm.wala.ipa.summaries.VolatileMethodSummary body,
com.ibm.wala.util.ssa.TypeSafeInstructionFactory insts,
com.ibm.wala.util.ssa.SSAValueManager paramManager,
java.lang.Iterable<? extends com.ibm.wala.ipa.callgraph.Entrypoint> entryPoints)
body - The MethodSummary to add instructions toinsts - Will be used to generate the instructionsprotected int enterMULTIPLE_TIMES_IN_LOOP(int PC)
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
enterMULTIPLE_TIMES_IN_LOOP in class AbstractAndroidModelPC - Program Counter instructions shall be placed at. In most cases you'll simply pass
body.getNextProgramCounter()protected int enterEND_OF_LOOP(int PC)
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
enterEND_OF_LOOP in class AbstractAndroidModelPC - Program Counter instructions shall be placed at. In most cases you'll simply pass
body.getNextProgramCounter()