Package gnu.kawa.functions
Class CompileArith
- java.lang.Object
-
- gnu.kawa.functions.CompileArith
-
- All Implemented Interfaces:
Inlineable
public class CompileArith extends Object implements Inlineable
-
-
Field Summary
Fields Modifier and Type Field Description static CompileArithMINUSstatic CompileArithPLUS
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static booleanappropriateIntConstant(Expression[] args, int iarg, InlineCalls visitor)static booleanappropriateLongConstant(Expression[] args, int iarg, InlineCalls visitor)static TypecombineType(Type t1, Type t2)voidcompile(ApplyExp exp, Compilation comp, Target target)voidcompileGeneric(ApplyExp exp, Compilation comp, Target target)booleancompileIntNum(Expression arg1, Expression arg2, int kind1, int kind2, Compilation comp)static CompileArithforBitwise(Object proc)static CompileArithforDiv(Object proc)static CompileArithforMul(Object proc)static intgetReturnKind(int kind1, int kind2, int op)intgetReturnKind(Expression[] args)This actually returns the "promoted argument type".TypegetReturnType(Expression[] args)static Expressionpairwise(Procedure proc, Expression rproc, Expression[] args, InlineCalls visitor)Convert (PROC A B C) to (PROC (PROC A B) C) etc.intprimitiveOpcode()static ExpressionvalidateApplyAdd(AddOp proc, ApplyExp exp, InlineCalls visitor)static ExpressionvalidateApplyArithOp(ApplyExp exp, InlineCalls visitor, Type required, Procedure proc)static ExpressionvalidateApplyDiv(DivideOp proc, ApplyExp exp, InlineCalls visitor)static ExpressionvalidateApplyNot(ApplyExp exp, int kind, InlineCalls visitor)
-
-
-
Field Detail
-
PLUS
public static CompileArith PLUS
-
MINUS
public static CompileArith MINUS
-
-
Method Detail
-
forMul
public static CompileArith forMul(Object proc)
-
forDiv
public static CompileArith forDiv(Object proc)
-
forBitwise
public static CompileArith forBitwise(Object proc)
-
appropriateIntConstant
public static boolean appropriateIntConstant(Expression[] args, int iarg, InlineCalls visitor)
-
appropriateLongConstant
public static boolean appropriateLongConstant(Expression[] args, int iarg, InlineCalls visitor)
-
validateApplyArithOp
public static Expression validateApplyArithOp(ApplyExp exp, InlineCalls visitor, Type required, Procedure proc)
-
compileGeneric
public void compileGeneric(ApplyExp exp, Compilation comp, Target target)
-
compile
public void compile(ApplyExp exp, Compilation comp, Target target)
- Specified by:
compilein interfaceInlineable
-
compileIntNum
public boolean compileIntNum(Expression arg1, Expression arg2, int kind1, int kind2, Compilation comp)
-
getReturnKind
public static int getReturnKind(int kind1, int kind2, int op)
-
getReturnKind
public int getReturnKind(Expression[] args)
This actually returns the "promoted argument type". The result kind is different for divide.
-
getReturnType
public Type getReturnType(Expression[] args)
-
validateApplyAdd
public static Expression validateApplyAdd(AddOp proc, ApplyExp exp, InlineCalls visitor)
-
validateApplyDiv
public static Expression validateApplyDiv(DivideOp proc, ApplyExp exp, InlineCalls visitor)
-
validateApplyNot
public static Expression validateApplyNot(ApplyExp exp, int kind, InlineCalls visitor)
-
primitiveOpcode
public int primitiveOpcode()
-
pairwise
public static Expression pairwise(Procedure proc, Expression rproc, Expression[] args, InlineCalls visitor)
Convert (PROC A B C) to (PROC (PROC A B) C) etc.
-
-