gnu.jel
Class OPbinary

java.lang.Object
  |
  +--gnu.jel.OP
        |
        +--gnu.jel.OPbinary

public class OPbinary
extends OP

A tree node, representing binary operation.


Field Summary
 int code
          code of this operation
protected static byte[][] promotions
          binary promotions of base types
 
Fields inherited from class gnu.jel.OP
chi, resID, resType, specialTypes, unwrapType
 
Constructor Summary
OPbinary(java.util.Stack paramOPs, int opcode)
          Constructs a new binary operation.
 
Method Summary
 void compile(ClassFile cf)
          Called to generate the code implementing this OP.
 java.lang.Object eval()
          Called to evaluate this node and all its sub-nodes.
 
Methods inherited from class gnu.jel.OP
isWidening, isWidening, narrow, typeID, typeIDObject, widen
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

code

public int code
code of this operation

promotions

protected static final byte[][] promotions
binary promotions of base types
Constructor Detail

OPbinary

public OPbinary(java.util.Stack paramOPs,
                int opcode)
         throws CompilationException
Constructs a new binary operation.

Codes are following:

 0   --  addition
 1   --  substraction
 2   --  multiplication
 3   --  division
 4   --  remainder
 5   --  bitwise AND
 6   --  bitwise OR
 7   --  bitwise and logical XOR
 8   --  comparizon for equality
 9   --  comparizon for non-equality
 10  --  comparizon for "less" <
 11  --  comparizon for "greater or equal" >=
 12  --  comparizon for "greater" >
 13  --  comparizon for "less or equal" <=
 14  --  bitwise left shift <<
 15  --  bitwise right signed shift >>
 16  --  bitwise right unsigned shift >>>
 17  --  logical conjunction operator (AND)
 18  --  logical disjunction operator (OR)
 19  --  array element access operation
 20  --  reserved (used internally for string concatenation)
 
Parameters:
paramOPs - stack holding the operands
opcode - is the operation code
Method Detail

compile

public void compile(ClassFile cf)
Description copied from class: OP
Called to generate the code implementing this OP.
Overrides:
compile in class OP
Following copied from class: gnu.jel.OP
Parameters:
cf - class file with a new open method to write the code into.

eval

public java.lang.Object eval()
                      throws java.lang.Exception
Description copied from class: OP
Called to evaluate this node and all its sub-nodes.

Upon success this node is to be replaced by the constant node holding the returned object.

Overrides:
eval in class OP
Following copied from class: gnu.jel.OP
Returns:
an object to which this node evaluates
Throws:
if - can't evaluate, in this case the sub-nodes