public final class SequentialAndroidModel extends AbstractAndroidModel
You can then add instructions to the body using the insts-Instruction factory. Instructions don't have to be in ascending order. Instead they will be sorted by their IIndex once the model gets finished. If you want to add loops to the model you might want to have a look at AndroidModelParameterManager which aids in keeping track of SSA-Variables and adding Phi-Functions.
body, entryPoints, insts, paramManager
Constructor and Description |
---|
SequentialAndroidModel(VolatileMethodSummary body,
TypeSafeInstructionFactory insts,
SSAValueManager paramManager,
Iterable<? extends Entrypoint> entryPoints) |
Modifier and Type | Method and Description |
---|---|
protected int |
enterAFTER_LOOP(int PC)
Does not insert any special handling.
|
protected int |
enterAT_FIRST(int PC)
Does not insert any special handling.
|
protected int |
enterAT_LAST(int PC)
Does not insert any special handling.
|
protected int |
enterBEFORE_LOOP(int PC)
Does not insert any special handling.
|
protected int |
enterEND_OF_LOOP(int PC)
Does not insert any special handling.
|
protected int |
enterMIDDLE_OF_LOOP(int PC)
Does not insert any special handling.
|
protected int |
enterMULTIPLE_TIMES_IN_LOOP(int PC)
Does not insert any special handling.
|
protected int |
enterSTART_OF_LOOP(int PC)
Does not insert any special handling.
|
protected int |
leaveAT_LAST(int PC)
Does not insert any special handling.
|
enter, finish, hadSectionSwitch, returnTypesBetween
public SequentialAndroidModel(VolatileMethodSummary body, TypeSafeInstructionFactory insts, SSAValueManager paramManager, Iterable<? extends Entrypoint> entryPoints)
body
- The MethodSummary to add instructions toinsts
- Will be used to generate the instructionsprotected int enterAT_FIRST(int PC)
#enter(ExecutionOrder.AT_FIRST, int)
instead.
Sideeffects: currentSection is updated, instructions are inserted into the bodyenterAT_FIRST
in class AbstractAndroidModel
PC
- Program Counter instructions shall be placed at. In most cases
you'll simply pass body.getNextProgramCounter()protected int enterBEFORE_LOOP(int PC)
#enter(ExecutionOrder.BEFORE_LOOP, int)
instead
Sideeffects: currentSection is updated, instructions are inserted into the bodyenterBEFORE_LOOP
in class AbstractAndroidModel
PC
- Program Counter instructions shall be placed at. In most cases
you'll simply pass body.getNextProgramCounter()protected int enterSTART_OF_LOOP(int PC)
#enter(ExecutionOrder.START_OF_LOOP, int)
instead
Sideeffects: currentSection is updated, instructions are inserted into the bodyenterSTART_OF_LOOP
in class AbstractAndroidModel
PC
- Program Counter instructions shall be placed at. In most cases
you'll simply pass body.getNextProgramCounter()protected int enterMIDDLE_OF_LOOP(int PC)
#enter(ExecutionOrder.MIDDLE_OF_LOOP, int)
instead
Sideeffects: currentSection is updated, instructions are inserted into the bodyenterMIDDLE_OF_LOOP
in class AbstractAndroidModel
PC
- Program Counter instructions shall be placed at. In most cases
you'll simply pass body.getNextProgramCounter()protected int enterMULTIPLE_TIMES_IN_LOOP(int PC)
#enter(ExecutionOrder.MULTIPLE_TIMES_IN_LOOP, int)
instead
Sideeffects: currentSection is updated, instructions are inserted into the bodyenterMULTIPLE_TIMES_IN_LOOP
in class AbstractAndroidModel
PC
- Program Counter instructions shall be placed at. In most cases
you'll simply pass body.getNextProgramCounter()protected int enterEND_OF_LOOP(int PC)
#enter(ExecutionOrder.END_OF_LOOP, int)
instead
Sideeffects: currentSection is updated, instructions are inserted into the bodyenterEND_OF_LOOP
in class AbstractAndroidModel
PC
- Program Counter instructions shall be placed at. In most cases
you'll simply pass body.getNextProgramCounter()protected int enterAFTER_LOOP(int PC)
#enter(ExecutionOrder.AFTER_LOOP, int)
instead
Sideeffects: currentSection is updated, instructions are inserted into the bodyenterAFTER_LOOP
in class AbstractAndroidModel
PC
- Program Counter instructions shall be placed at. In most cases
you'll simply pass body.getNextProgramCounter()protected int enterAT_LAST(int PC)
#enter(ExecutionOrder.AT_LAST, int)
instead
Sideeffects: currentSection is updated, instructions are inserted into the bodyenterAT_LAST
in class AbstractAndroidModel
PC
- Program Counter instructions shall be placed at. In most cases
you'll simply pass body.getNextProgramCounter()protected int leaveAT_LAST(int PC)
AbstractAndroidModel.finish(int)
instead
Sideeffects: instructions are inserted into the bodyleaveAT_LAST
in class AbstractAndroidModel
PC
- Program Counter instructions shall be placed at. In most cases
you'll simply pass body.getNextProgramCounter()