}
}
@Override
public void executing() {
VariableEntity ve = var.getVariableEntity();
/* if method is non satic*/
if(!Modifier.isStatic(getModifiers())){
log.debug("call method by variable :" + var.getVariableEntity().getName());
log.debug("put variable reference to stack");
//变量入栈
var.loadToStack(block);
argumentsToStack();
if(ve.getDeclareClass().isInterface()){
log.debug("invoke interface method : " + name);
//如果是接口
insnHelper.invokeInterface(ve.getDeclareClass().getType(), this.name, getReturnType(), mtdEntity.getArgTypes());
}else{
log.debug("invoke class method : " + name);
if(ve.getName().equals(ASConstant.SUPER)){
insnHelper.invokeSuperMethod(ve.getDeclareClass().getType(), this.name, getReturnType(), mtdEntity.getArgTypes());
}else {
insnHelper.invokeVirtual(ve.getDeclareClass().getType(), this.name, getReturnType(), mtdEntity.getArgTypes());
}
}
if(!isSaveReference()){
if(!getReturnType().equals(Type.VOID_TYPE)){
insnHelper.pop();