org.codehaus.groovy.classgen.asm
Class BinaryExpressionWriter

java.lang.Object
  extended by org.codehaus.groovy.classgen.asm.BinaryExpressionWriter
Direct Known Subclasses:
BinaryFloatExpressionHelper, BinaryIntExpressionHelper, BinaryLongExpressionHelper, BinaryObjectExpressionHelper

public abstract class BinaryExpressionWriter
extends Object

Author:
Jochen "blackdrag" Theodorou

Field Summary
protected static int[] stdCompareCodes
           
 
Constructor Summary
BinaryExpressionWriter(WriterController controller)
           
 
Method Summary
 boolean arrayGet(int operation, boolean simulate)
           
 boolean arraySet(boolean simulate)
           
protected abstract  void doubleTwoOperands(org.objectweb.asm.MethodVisitor mv)
           
protected abstract  MethodCaller getArrayGetCaller()
           
protected  ClassNode getArrayGetResultType()
           
protected abstract  MethodCaller getArraySetCaller()
           
protected abstract  int getBitwiseOperationBytecode(int type)
           
protected abstract  int getCompareCode()
           
protected abstract  ClassNode getDevisionOpResultType()
           
protected abstract  ClassNode getNormalOpResultType()
           
protected abstract  int getShiftOperationBytecode(int type)
           
protected abstract  int getStandardOperationBytecode(int type)
           
protected abstract  void removeTwoOperands(org.objectweb.asm.MethodVisitor mv)
           
protected  boolean supportsDivision()
           
 boolean write(int operation, boolean simulate)
           
protected  boolean writeBitwiseOp(int type, boolean simulate)
          writes some the bitwise operations. type is one of BITWISE_OR, BITWISE_AND, BIWISE_XOR
protected  boolean writeDivision(boolean simulate)
           
protected abstract  void writeMinusMinus(org.objectweb.asm.MethodVisitor mv)
           
protected abstract  void writePlusPlus(org.objectweb.asm.MethodVisitor mv)
           
 boolean writePostOrPrefixMethod(int operation, boolean simulate)
           
protected  boolean writeShiftOp(int type, boolean simulate)
          Write shifting operations.
protected  boolean writeSpaceship(int type, boolean simulate)
           
protected  boolean writeStdCompare(int type, boolean simulate)
          writes some int standard operations. type is one of IADD, ISUB, IMUL, IDIV or IREM
protected  boolean writeStdOperators(int type, boolean simulate)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

stdCompareCodes

protected static final int[] stdCompareCodes
Constructor Detail

BinaryExpressionWriter

public BinaryExpressionWriter(WriterController controller)
Method Detail

getCompareCode

protected abstract int getCompareCode()

writeStdCompare

protected boolean writeStdCompare(int type,
                                  boolean simulate)
writes some int standard operations. type is one of IADD, ISUB, IMUL, IDIV or IREM

Parameters:
type - the token type
Returns:
true if a successful std operator write

doubleTwoOperands

protected abstract void doubleTwoOperands(org.objectweb.asm.MethodVisitor mv)

removeTwoOperands

protected abstract void removeTwoOperands(org.objectweb.asm.MethodVisitor mv)

writeSpaceship

protected boolean writeSpaceship(int type,
                                 boolean simulate)

getNormalOpResultType

protected abstract ClassNode getNormalOpResultType()

getStandardOperationBytecode

protected abstract int getStandardOperationBytecode(int type)

writeStdOperators

protected boolean writeStdOperators(int type,
                                    boolean simulate)

writeDivision

protected boolean writeDivision(boolean simulate)

supportsDivision

protected boolean supportsDivision()

getDevisionOpResultType

protected abstract ClassNode getDevisionOpResultType()

getBitwiseOperationBytecode

protected abstract int getBitwiseOperationBytecode(int type)

writeBitwiseOp

protected boolean writeBitwiseOp(int type,
                                 boolean simulate)
writes some the bitwise operations. type is one of BITWISE_OR, BITWISE_AND, BIWISE_XOR

Parameters:
type - the token type
Returns:
true if a successful bitwise operation write

getShiftOperationBytecode

protected abstract int getShiftOperationBytecode(int type)

writeShiftOp

protected boolean writeShiftOp(int type,
                               boolean simulate)
Write shifting operations. Type is one of LEFT_SHIFT, RIGHT_SHIFT, or RIGHT_SHIFT_UNSIGNED

Parameters:
type - the token type
Returns:
true on a successful shift operation write

write

public boolean write(int operation,
                     boolean simulate)

getArrayGetCaller

protected abstract MethodCaller getArrayGetCaller()

getArrayGetResultType

protected ClassNode getArrayGetResultType()

getArraySetCaller

protected abstract MethodCaller getArraySetCaller()

arrayGet

public boolean arrayGet(int operation,
                        boolean simulate)

arraySet

public boolean arraySet(boolean simulate)

writePostOrPrefixMethod

public boolean writePostOrPrefixMethod(int operation,
                                       boolean simulate)

writePlusPlus

protected abstract void writePlusPlus(org.objectweb.asm.MethodVisitor mv)

writeMinusMinus

protected abstract void writeMinusMinus(org.objectweb.asm.MethodVisitor mv)

Copyright © 2003-2012 The Codehaus. All rights reserved.