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