}
}
@Override
protected void factorToStack() {
AClass ftrCls1 = factor1.getParamterizedType();
AClass ftrCls2 = factor2.getParamterizedType();
log.debug("push the first arithmetic factor to stack");
factor1.loadToStack(block);
if(!ftrCls1.isPrimitive()){
log.debug("unbox " + ftrCls1);
insnHelper.unbox(ftrCls1.getType());
}
if(!ftrCls1.equals(resultClass) &&
resultClass.getCastOrder() > AClass.INT_ACLASS.getCastOrder() ){
log.debug("cast arithmetic factor from " + ftrCls1 + " to " + resultClass);
insnHelper.cast(ftrCls1.getType(), resultClass.getType());
}
log.debug("push the second arithmetic factor to stack");
factor2.loadToStack(block);
if(!ftrCls2.isPrimitive()){
log.debug("unbox " + ftrCls2);
insnHelper.unbox(ftrCls2.getType());
}
if(!ftrCls2.equals(resultClass) &&
resultClass.getCastOrder() > AClass.INT_ACLASS.getCastOrder() ){
log.debug("cast arithmetic factor from " + ftrCls2 + " to " + resultClass);
insnHelper.cast(ftrCls2.getType(), resultClass.getType());
}
}