|
||||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectcn.wensiqun.asmsupport.definition.AbstractExecuteable
cn.wensiqun.asmsupport.operators.AbstractOperator
public abstract class AbstractOperator
| 字段摘要 | |
|---|---|
protected List<AbstractCrement> |
allCrement
|
protected ProgramBlock |
block
|
protected InstructionHelper |
insnHelper
|
| 构造方法摘要 | |
|---|---|
protected |
AbstractOperator(ProgramBlock block)
|
| 方法摘要 | |
|---|---|
protected void |
afterInitProperties()
|
protected void |
autoCast(AClass from,
AClass to)
|
protected void |
beforeInitProperties()
|
protected void |
checkAsArgument()
invoke by OperatorFactory |
protected void |
checkOutCrement()
|
void |
checkUnreachableCode()
|
void |
execute()
执行 |
protected abstract void |
executing()
|
protected void |
firstPrepareProcess()
|
ProgramBlock |
getBlock()
|
int |
getCompileOrder()
|
protected void |
lastPrepareProcess()
|
void |
prepare()
执行execute的预先操作 在此方法中如果要对执行队列操作 那么不能对执行队列做删除和添加操作 只能做替操作 除了MethodBody类型的Block是通过直接调用的方式执行Prepare方法之外, 其他Block 均在调用创建该Block的时候触发Prepare方法, 所有创建非MethodBody类型Block都在 jw.asmsupport.block.operator.CreateBlockOperator接口中 对于一般的Block,比如if...else... |
protected void |
verifyArgument()
|
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 字段详细信息 |
|---|
protected ProgramBlock block
protected InstructionHelper insnHelper
protected List<AbstractCrement> allCrement
| 构造方法详细信息 |
|---|
protected AbstractOperator(ProgramBlock block)
| 方法详细信息 |
|---|
public ProgramBlock getBlock()
public void checkUnreachableCode()
public final void prepare()
Executeable 复制的描述执行execute的预先操作 在此方法中如果要对执行队列操作 那么不能对执行队列做删除和添加操作 只能做替操作
除了MethodBody类型的Block是通过直接调用的方式执行Prepare方法之外, 其他Block 均在调用创建该Block的时候触发Prepare方法, 所有创建非MethodBody类型Block都在 jw.asmsupport.block.operator.CreateBlockOperator接口中
对于一般的Block,比如if...else... 比如如下代码:
public void method(){
if(...){
while(....){
...
}
}else{
for(...){
...
}
}
}
通常执行prepare的顺序如下:
$ 表示调用 CreateBlockOperator.xxx方法
_\ 表示触发prepare方法
MethodBody
|
|$
|____\ IF Block
| |
| |$
| |____\ While Block
| |
| |
|/______________________|
|
|$
|____\ Else Block
|
|$
|____\ For Block
|
|
Method Body End /_____________|
但是对于每个连续的Try...Catch...Finally...块, asmsupport会先将这一连续的 块逐一创建完成,再执行各自的Prepare方法。 如下图所示
$ 表示调用 createBlockOperator.xxx方法
_\ 表示出发prepare方法
MethodBody
|
|$
|____\ Try Block 1
| |
| |
| |
|$ |
|____\ Catch Block 1 |
| |
|$ |
|____\ Finally Block 1 |
| |
| |
|_________________________|
|
Method Body End /_____________|
protected void firstPrepareProcess()
protected void beforeInitProperties()
protected void verifyArgument()
protected void checkOutCrement()
protected void checkAsArgument()
protected void afterInitProperties()
protected void lastPrepareProcess()
public void execute()
Executeable 复制的描述
protected abstract void executing()
protected void autoCast(AClass from,
AClass to)
from - to - public final int getCompileOrder()
|
||||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||