at.dms.kjc
Class JMinusExpression

java.lang.Object
  |
  +--at.dms.util.Utils
        |
        +--at.dms.compiler.Phylum
              |
              +--at.dms.kjc.JPhylum
                    |
                    +--at.dms.kjc.JExpression
                          |
                          +--at.dms.kjc.JBinaryExpression
                                |
                                +--at.dms.kjc.JBinaryArithmeticExpression
                                      |
                                      +--at.dms.kjc.JMinusExpression
All Implemented Interfaces:
Constants, Constants

public class JMinusExpression
extends JBinaryArithmeticExpression

A representation of the subtraction operation.


Fields inherited from class at.dms.kjc.JBinaryExpression
left, right, type
 
Fields inherited from class at.dms.kjc.JExpression
EMPTY
 
Fields inherited from class at.dms.util.Utils
DBG_LEVEL_HIGH, DBG_LEVEL_LOW, DBG_LEVEL_NO
 
Fields inherited from interface at.dms.kjc.Constants
CMP_VERSION, JAV_CLASS, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_THIS, JAV_THROWABLE, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LE, OPE_LNOT, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_SHORT, TID_VOID
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_NBR_FLAGS, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_EXCEPTIONS, ATT_GENERIC, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_SOURCEFILE, ATT_SYNTHETIC, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID
 
Constructor Summary
JMinusExpression(TokenReference where, JExpression left, JExpression right)
          Construct a node in the parsing tree This method is directly called by the parser
 
Method Summary
 void accept(KjcVisitor p)
          Accepts the specified visitor
 JExpression checkBinaryBody(CExpressionContext context)
          Check expression and evaluate and alter context.
 double compute(double left, double right)
          Computes the result of the operation at compile-time (JLS 15.27).
 float compute(float left, float right)
          Computes the result of the operation at compile-time (JLS 15.27).
 int compute(int left, int right)
          Computes the result of the operation at compile-time (JLS 15.27).
 long compute(long left, long right)
          Computes the result of the operation at compile-time (JLS 15.27).
 void genCode(CodeSequence code)
          Generates a sequence of bytecodes.
static int getOpcode(CType type)
          Returns the opcode for this operation.
 
Methods inherited from class at.dms.kjc.JBinaryArithmeticExpression
checkExpression, computeType, constantFolding
 
Methods inherited from class at.dms.kjc.JBinaryExpression
genBooleanResultCode, genBranch, genBranch, getLeft, getRight, getType, promote, setLeft, setRight, setType
 
Methods inherited from class at.dms.kjc.JExpression
checkExpression, convertType, fail, getBooleanLiteral, getLiteral, getNumberLiteral, getOrdinalLiteral, getRealLiteral, getStringLiteral, isAssignableTo, isConstant, isLiteral, isStatementExpression, isSubTypePossible, setConstant, unParenthesize
 
Methods inherited from class at.dms.kjc.JPhylum
check, check, check, check
 
Methods inherited from class at.dms.compiler.Phylum
getTokenReference, setTokenReference
 
Methods inherited from class at.dms.util.Utils
assert, assert, fail, fail, hasFlag, hasMoreThanOneFlag, hasOtherFlags, splitQualifiedName, splitQualifiedName, vectorToArray, vectorToIntArray
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JMinusExpression

public JMinusExpression(TokenReference where,
                        JExpression left,
                        JExpression right)
Construct a node in the parsing tree This method is directly called by the parser
Parameters:
where - the line of this node in the source code
left - the left operand
right - the right operand
Method Detail

checkBinaryBody

public JExpression checkBinaryBody(CExpressionContext context)
                            throws PositionedError
Check expression and evaluate and alter context.
Overrides:
checkBinaryBody in class JBinaryArithmeticExpression
Parameters:
context - The actual context of analyse.
Returns:
A pure java expression including promote node.
Throws:
PositionedError - If the check fails.

compute

public int compute(int left,
                   int right)
Computes the result of the operation at compile-time (JLS 15.27).
Overrides:
compute in class JBinaryArithmeticExpression
Parameters:
left - the first operand
right - the seconds operand
Returns:
the result of the operation

compute

public long compute(long left,
                    long right)
Computes the result of the operation at compile-time (JLS 15.27).
Overrides:
compute in class JBinaryArithmeticExpression
Parameters:
left - the first operand
right - the seconds operand
Returns:
the result of the operation

compute

public float compute(float left,
                     float right)
Computes the result of the operation at compile-time (JLS 15.27).
Overrides:
compute in class JBinaryArithmeticExpression
Parameters:
left - the first operand
right - the seconds operand
Returns:
the result of the operation

compute

public double compute(double left,
                      double right)
Computes the result of the operation at compile-time (JLS 15.27).
Overrides:
compute in class JBinaryArithmeticExpression
Parameters:
left - the first operand
right - the seconds operand
Returns:
the result of the operation

accept

public void accept(KjcVisitor p)
Accepts the specified visitor
Overrides:
accept in class JExpression
Parameters:
p - the visitor

getOpcode

public static int getOpcode(CType type)
Returns the opcode for this operation.
Parameters:
type - the type of result
Returns:
the opcode for this operation

genCode

public void genCode(CodeSequence code)
Generates a sequence of bytecodes.
Overrides:
genCode in class JExpression
Parameters:
code - the code list