Class SequentialAndroidModel
- java.lang.Object
-
- com.ibm.wala.dalvik.ipa.callgraph.androidModel.structure.AbstractAndroidModel
-
- com.ibm.wala.dalvik.ipa.callgraph.androidModel.structure.SequentialAndroidModel
-
public final class SequentialAndroidModel extends AbstractAndroidModel
Functions get called once in sequential order. No loops are inserted into the model. This model should not be particular useful in practice. However it might come in handy for debugging purposes or as a skeleton for an other Model. Aids in handling code to be inserted at given points into the model. Overload this class to change the structure of the model. When the model is being built the enterLABEL-functions are called when ever a label gets stepped over.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.
- Since:
- 2013-09-18
-
-
Field Summary
-
Fields inherited from class com.ibm.wala.dalvik.ipa.callgraph.androidModel.structure.AbstractAndroidModel
body, entryPoints, insts, paramManager
-
-
Constructor Summary
Constructors Constructor Description SequentialAndroidModel(VolatileMethodSummary body, TypeSafeInstructionFactory insts, SSAValueManager paramManager, Iterable<? extends Entrypoint> entryPoints)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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.-
Methods inherited from class com.ibm.wala.dalvik.ipa.callgraph.androidModel.structure.AbstractAndroidModel
enter, finish, hadSectionSwitch, returnTypesBetween
-
-
-
-
Constructor Detail
-
SequentialAndroidModel
public SequentialAndroidModel(VolatileMethodSummary body, TypeSafeInstructionFactory insts, SSAValueManager paramManager, Iterable<? extends Entrypoint> entryPoints)
- Parameters:
body
- The MethodSummary to add instructions toinsts
- Will be used to generate the instructions
-
-
Method Detail
-
enterAT_FIRST
protected int enterAT_FIRST(int PC)
Does not insert any special handling. Gets called when Label ExecutionOrder.AT_FIRST got stepped over. In most cases you don't want to invoke this function directly but to use#enter(ExecutionOrder.AT_FIRST, int)
instead. Sideeffects: currentSection is updated, instructions are inserted into the body- Overrides:
enterAT_FIRST
in classAbstractAndroidModel
- 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
-
enterBEFORE_LOOP
protected int enterBEFORE_LOOP(int PC)
Does not insert any special handling. Gets called when Label ExecutionOrder.BEFORE_LOOP got stepped over. In most cases you don't want to invoke this function directly but to use#enter(ExecutionOrder.BEFORE_LOOP, int)
instead Sideeffects: currentSection is updated, instructions are inserted into the body- Overrides:
enterBEFORE_LOOP
in classAbstractAndroidModel
- 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
-
enterSTART_OF_LOOP
protected int enterSTART_OF_LOOP(int PC)
Does not insert any special handling. Gets called when Label ExecutionOrder.START_OF_LOOP got stepped over. In most cases you don't want to invoke this function directly but to use#enter(ExecutionOrder.START_OF_LOOP, int)
instead Sideeffects: currentSection is updated, instructions are inserted into the body- Overrides:
enterSTART_OF_LOOP
in classAbstractAndroidModel
- 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
-
enterMIDDLE_OF_LOOP
protected int enterMIDDLE_OF_LOOP(int PC)
Does not insert any special handling. Gets called when Label ExecutionOrder.MIDDLE_OF_LOOP got stepped over. In most cases you don't want to invoke this function directly but to use#enter(ExecutionOrder.MIDDLE_OF_LOOP, int)
instead Sideeffects: currentSection is updated, instructions are inserted into the body- Overrides:
enterMIDDLE_OF_LOOP
in classAbstractAndroidModel
- 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
-
enterMULTIPLE_TIMES_IN_LOOP
protected int enterMULTIPLE_TIMES_IN_LOOP(int PC)
Does not insert any special handling. 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 classAbstractAndroidModel
- 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)
Does not insert any special handling. 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 classAbstractAndroidModel
- 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
-
enterAFTER_LOOP
protected int enterAFTER_LOOP(int PC)
Does not insert any special handling. Gets called when Label ExecutionOrder.AFTER_LOOP got stepped over. In most cases you don't want to invoke this function directly but to use#enter(ExecutionOrder.AFTER_LOOP, int)
instead Sideeffects: currentSection is updated, instructions are inserted into the body- Overrides:
enterAFTER_LOOP
in classAbstractAndroidModel
- 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
-
enterAT_LAST
protected int enterAT_LAST(int PC)
Does not insert any special handling. Gets called when Label ExecutionOrder.AT_LAST got stepped over. In most cases you don't want to invoke this function directly but to use#enter(ExecutionOrder.AT_LAST, int)
instead Sideeffects: currentSection is updated, instructions are inserted into the body- Overrides:
enterAT_LAST
in classAbstractAndroidModel
- 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
-
leaveAT_LAST
protected int leaveAT_LAST(int PC)
Does not insert any special handling. Gets called when the model gets finished. In most cases you don't want to invoke this function directly but to useAbstractAndroidModel.finish(int)
instead Sideeffects: instructions are inserted into the body- Overrides:
leaveAT_LAST
in classAbstractAndroidModel
- 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
-
-