<s> package org . eclipse . jdt . internal . compiler . ast ; import org . eclipse . jdt . internal . compiler . flow . FlowInfo ; import org . eclipse . jdt . internal . compiler . util . Util ; public abstract class OperatorExpression extends Expression implements OperatorIds { public static int [ ] [ ] OperatorSignatures = new int [ NumberOfTables ] [ ] ; static { classInitialize ( ) ; } public OperatorExpression ( ) { super ( ) ; } public static final void classInitialize ( ) { OperatorSignatures [ AND ] = get_AND ( ) ; OperatorSignatures [ AND_AND ] = get_AND_AND ( ) ; OperatorSignatures [ DIVIDE ] = get_DIVIDE ( ) ; OperatorSignatures [ EQUAL_EQUAL ] = get_EQUAL_EQUAL ( ) ; OperatorSignatures [ GREATER ] = get_GREATER ( ) ; OperatorSignatures [ GREATER_EQUAL ] = get_GREATER_EQUAL ( ) ; OperatorSignatures [ LEFT_SHIFT ] = get_LEFT_SHIFT ( ) ; OperatorSignatures [ LESS ] = get_LESS ( ) ; OperatorSignatures [ LESS_EQUAL ] = get_LESS_EQUAL ( ) ; OperatorSignatures [ MINUS ] = get_MINUS ( ) ; OperatorSignatures [ MULTIPLY ] = get_MULTIPLY ( ) ; OperatorSignatures [ OR ] = get_OR ( ) ; OperatorSignatures [ OR_OR ] = get_OR_OR ( ) ; OperatorSignatures [ PLUS ] = get_PLUS ( ) ; OperatorSignatures [ REMAINDER ] = get_REMAINDER ( ) ; OperatorSignatures [ RIGHT_SHIFT ] = get_RIGHT_SHIFT ( ) ; OperatorSignatures [ UNSIGNED_RIGHT_SHIFT ] = get_UNSIGNED_RIGHT_SHIFT ( ) ; OperatorSignatures [ XOR ] = get_XOR ( ) ; } public static final String generateTableTestCase ( ) { int [ ] operators = new int [ ] { AND , AND_AND , DIVIDE , GREATER , GREATER_EQUAL , LEFT_SHIFT , LESS , LESS_EQUAL , MINUS , MULTIPLY , OR , OR_OR , PLUS , REMAINDER , RIGHT_SHIFT , UNSIGNED_RIGHT_SHIFT , XOR } ; class Decode { public final String constant ( int code ) { switch ( code ) { case T_boolean : return "true" ; case T_byte : return "((byte) 3)" ; case T_char : return "'A'" ; case T_double : return "300.0d" ; case T_float : return "100.0f" ; case T_int : return "1" ; case T_long : return "7L" ; case T_JavaLangString : return "" ; case T_null : return "null" ; case T_short : return "((short) 5)" ; case T_JavaLangObject : return "null" ; } return Util . EMPTY_STRING ; } public final String type ( int code ) { switch ( code ) { case T_boolean : return "z" ; case T_byte : return "b" ; case T_char : return "c" ; case T_double : return "d" ; case T_float : return "f" ; case T_int : return "i" ; case T_long : return "l" ; case T_JavaLangString : return "str" ; case T_null : return "null" ; case T_short : return "s" ; case T_JavaLangObject : return "obj" ; } return "xxx" ; } public final String operator ( int operator ) { switch ( operator ) { case EQUAL_EQUAL : return "==" ; case LESS_EQUAL : return "<=" ; case GREATER_EQUAL : return ">=" ; case LEFT_SHIFT : return "<<" ; case RIGHT_SHIFT : return ">>" ; case UNSIGNED_RIGHT_SHIFT : return ">>>" ; case OR_OR : return "||" ; case AND_AND : return "&&" ; case PLUS : return "+" ; case MINUS : return "-" ; case NOT : return "!" ; case REMAINDER : return "%" ; case XOR : return "^" ; case AND : return "&" ; case MULTIPLY : return "*" ; case OR : return "|" ; case TWIDDLE : return "~" ; case DIVIDE : return "/" ; case GREATER : return ">" ; case LESS : return "<" ; } return "????" ; } } Decode decode = new Decode ( ) ; String s ; s = "" + "" + "" + "" + "" + decode . constant ( T_JavaLangString ) + ";n" + "" + decode . constant ( T_int ) + ";n" + "" + decode . constant ( T_boolean ) + ";n" + "" + decode . constant ( T_char ) + ";n" + "" + decode . constant ( T_float ) + ";n" + "" + decode . constant ( T_double ) + ";n" + "" + decode . constant ( T_byte ) + ";n" + "" + decode . constant ( T_short ) + ";n" + "" + decode . constant ( T_long ) + ";n" + "" + decode . constant ( T_JavaLangObject ) + ";n" + "n" ; int error = 0 ; for ( int i = 0 ; i < operators . length ; i ++ ) { int operator = operators [ i ] ; for ( int left = 0 ; left < 16 ; left ++ ) for ( int right = 0 ; right < 16 ; right ++ ) { int result = ( OperatorSignatures [ operator ] [ ( left << 4 ) + right ] ) & 0x0000F ; if ( result != T_undefined ) { s += "tt" + decode . type ( result ) + "0" + " = " + decode . type ( left ) ; s += " " + decode . operator ( operator ) + " " + decode . type ( right ) + ";n" ; String begin = result == T_JavaLangString ? "ttif (! " : "ttif ( " ; String test = result == T_JavaLangString ? ".equals(" : " != (" ; s += begin + decode . type ( result ) + "0" + test + decode . constant ( left ) + " " + decode . operator ( operator ) + " " + decode . constant ( right ) + "))n" ; s += "" + ( ++ error ) + ");n" ; } } } return s += "" ; } public static final int [ ] get_AND ( ) { int [ ] table = new int [ 16 * 16 ] ; table [ ( T_byte << 4 ) + T_byte ] = ( Byte2Int << 12 ) + ( Byte2Int << 4 ) + T_int ; table [ ( T_byte << 4 ) + T_long ] = ( Byte2Long << 12 ) + ( Long2Long << 4 ) + T_long ; table [ ( T_byte << 4 ) + T_short ] = ( Byte2Int << 12 ) + ( Short2Int << 4 ) + T_int ; table [ ( T_byte << 4 ) + T_char ] = ( Byte2Int << 12 ) + ( Char2Int << 4 ) + T_int ; table [ ( T_byte << 4 ) + T_int ] = ( Byte2Int << 12 ) + ( Int2Int << 4 ) + T_int ; table [ ( T_long << 4 ) + T_byte ] = ( Long2Long << 12 ) + ( Byte2Long << 4 ) + T_long ; table [ ( T_long << 4 ) + T_long ] = ( Long2Long << 12 ) + ( Long2Long << 4 ) + T_long ; table [ ( T_long << 4 ) + T_short ] = ( Long2Long << 12 ) + ( Short2Long << 4 ) + T_long ; table [ ( T_long << 4 ) + T_char ] = ( Long2Long << 12 ) + ( Char2Long << 4 ) + T_long ; table [ ( T_long << 4 ) + T_int ] = ( Long2Long << 12 ) + ( Int2Long << 4 ) + T_long ; table [ ( T_short << 4 ) + T_byte ] = ( Short2Int << 12 ) + ( Byte2Int << 4 ) + T_int ; table [ ( T_short << 4 ) + T_long ] = ( Short2Long << 12 ) + ( Long2Long << 4 ) + T_long ; table [ ( T_short << 4 ) + T_short ] = ( Short2Int << 12 ) + ( Short2Int << 4 ) + T_int ; table [ ( T_short << 4 ) + T_char ] = ( Short2Int << 12 ) + ( Char2Int << 4 ) + T_int ; table [ ( T_short << 4 ) + T_int ] = ( Short2Int << 12 ) + ( Int2Int << 4 ) + T_int ; table [ ( T_boolean << 4 ) + T_boolean ] = ( Boolean2Boolean << 12 ) + ( Boolean2Boolean << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_byte ] = ( Char2Int << 12 ) + ( Byte2Int << 4 ) + T_int ; table [ ( T_char << 4 ) + T_long ] = ( Char2Long << 12 ) + ( Long2Long << 4 ) + T_long ; table [ ( T_char << 4 ) + T_short ] = ( Char2Int << 12 ) + ( Short2Int << 4 ) + T_int ; table [ ( T_char << 4 ) + T_char ] = ( Char2Int << 12 ) + ( Char2Int << 4 ) + T_int ; table [ ( T_char << 4 ) + T_int ] = ( Char2Int << 12 ) + ( Int2Int << 4 ) + T_int ; table [ ( T_int << 4 ) + T_byte ] = ( Int2Int << 12 ) + ( Byte2Int << 4 ) + T_int ; table [ ( T_int << 4 ) + T_long ] = ( Int2Long << 12 ) + ( Long2Long << 4 ) + T_long ; table [ ( T_int << 4 ) + T_short ] = ( Int2Int << 12 ) + ( Short2Int << 4 ) + T_int ; table [ ( T_int << 4 ) + T_char ] = ( Int2Int << 12 ) + ( Char2Int << 4 ) + T_int ; table [ ( T_int << 4 ) + T_int ] = ( Int2Int << 12 ) + ( Int2Int << 4 ) + T_int ; return table ; } public static final int [ ] get_AND_AND ( ) { int [ ] table = new int [ 16 * 16 ] ; table [ ( T_boolean << 4 ) + T_boolean ] = ( Boolean2Boolean << 12 ) + ( Boolean2Boolean << 4 ) + T_boolean ; return table ; } public static final int [ ] get_DIVIDE ( ) { return get_MINUS ( ) ; } public static final int [ ] get_EQUAL_EQUAL ( ) { int [ ] table = new int [ 16 * 16 ] ; table [ ( T_byte << 4 ) + T_byte ] = ( Byte2Int << 12 ) + ( Byte2Int << 4 ) + T_boolean ; table [ ( T_byte << 4 ) + T_long ] = ( Byte2Long << 12 ) + ( Long2Long << 4 ) + T_boolean ; table [ ( T_byte << 4 ) + T_short ] = ( Byte2Int << 12 ) + ( Short2Int << 4 ) + T_boolean ; table [ ( T_byte << 4 ) + T_double ] = ( Byte2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_byte << 4 ) + T_float ] = ( Byte2Float << 12 ) + ( Float2Float << 4 ) + T_boolean ; table [ ( T_byte << 4 ) + T_char ] = ( Byte2Int << 12 ) + ( Char2Int << 4 ) + T_boolean ; table [ ( T_byte << 4 ) + T_int ] = ( Byte2Int << 12 ) + ( Int2Int << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_byte ] = ( Long2Long << 12 ) + ( Byte2Long << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_long ] = ( Long2Long << 12 ) + ( Long2Long << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_short ] = ( Long2Long << 12 ) + ( Short2Long << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_double ] = ( Long2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_float ] = ( Long2Float << 12 ) + ( Float2Float << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_char ] = ( Long2Long << 12 ) + ( Char2Long << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_int ] = ( Long2Long << 12 ) + ( Int2Long << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_byte ] = ( Short2Int << 12 ) + ( Byte2Int << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_long ] = ( Short2Long << 12 ) + ( Long2Long << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_short ] = ( Short2Int << 12 ) + ( Short2Int << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_double ] = ( Short2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_float ] = ( Short2Float << 12 ) + ( Float2Float << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_char ] = ( Short2Int << 12 ) + ( Char2Int << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_int ] = ( Short2Int << 12 ) + ( Int2Int << 4 ) + T_boolean ; table [ ( T_JavaLangString << 4 ) + T_JavaLangString ] = ( T_JavaLangObject << 16 ) + ( T_JavaLangString << 12 ) + ( T_JavaLangObject << 8 ) + ( T_JavaLangString << 4 ) + T_boolean ; table [ ( T_JavaLangString << 4 ) + T_JavaLangObject ] = ( T_JavaLangObject << 16 ) + ( T_JavaLangString << 12 ) + ( T_JavaLangObject << 8 ) + ( T_JavaLangObject << 4 ) + T_boolean ; table [ ( T_JavaLangString << 4 ) + T_null ] = ( T_JavaLangObject << 16 ) + ( T_JavaLangString << 12 ) + ( T_JavaLangObject << 8 ) + ( T_null << 4 ) + T_boolean ; table [ ( T_JavaLangObject << 4 ) + T_JavaLangString ] = ( T_JavaLangObject << 16 ) + ( T_JavaLangObject << 12 ) + ( T_JavaLangObject << 8 ) + ( T_JavaLangString << 4 ) + T_boolean ; table [ ( T_JavaLangObject << 4 ) + T_JavaLangObject ] = ( T_JavaLangObject << 16 ) + ( T_JavaLangObject << 12 ) + ( T_JavaLangObject << 8 ) + ( T_JavaLangObject << 4 ) + T_boolean ; table [ ( T_JavaLangObject << 4 ) + T_null ] = ( T_JavaLangObject << 16 ) + ( T_JavaLangObject << 12 ) + ( T_JavaLangObject << 8 ) + ( T_null << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_byte ] = ( Double2Double << 12 ) + ( Byte2Double << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_long ] = ( Double2Double << 12 ) + ( Long2Double << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_short ] = ( Double2Double << 12 ) + ( Short2Double << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_double ] = ( Double2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_float ] = ( Double2Double << 12 ) + ( Float2Double << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_char ] = ( Double2Double << 12 ) + ( Char2Double << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_int ] = ( Double2Double << 12 ) + ( Int2Double << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_byte ] = ( Float2Float << 12 ) + ( Byte2Float << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_long ] = ( Float2Float << 12 ) + ( Long2Float << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_short ] = ( Float2Float << 12 ) + ( Short2Float << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_double ] = ( Float2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_float ] = ( Float2Float << 12 ) + ( Float2Float << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_char ] = ( Float2Float << 12 ) + ( Char2Float << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_int ] = ( Float2Float << 12 ) + ( Int2Float << 4 ) + T_boolean ; table [ ( T_boolean << 4 ) + T_boolean ] = ( Boolean2Boolean << 12 ) + ( Boolean2Boolean << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_byte ] = ( Char2Int << 12 ) + ( Byte2Int << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_long ] = ( Char2Long << 12 ) + ( Long2Long << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_short ] = ( Char2Int << 12 ) + ( Short2Int << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_double ] = ( Char2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_float ] = ( Char2Float << 12 ) + ( Float2Float << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_char ] = ( Char2Int << 12 ) + ( Char2Int << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_int ] = ( Char2Int << 12 ) + ( Int2Int << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_byte ] = ( Int2Int << 12 ) + ( Byte2Int << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_long ] = ( Int2Long << 12 ) + ( Long2Long << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_short ] = ( Int2Int << 12 ) + ( Short2Int << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_double ] = ( Int2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_float ] = ( Int2Float << 12 ) + ( Float2Float << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_char ] = ( Int2Int << 12 ) + ( Char2Int << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_int ] = ( Int2Int << 12 ) + ( Int2Int << 4 ) + T_boolean ; table [ ( T_null << 4 ) + T_JavaLangString ] = ( T_JavaLangObject << 16 ) + ( T_null << 12 ) + ( T_JavaLangObject << 8 ) + ( T_JavaLangString << 4 ) + T_boolean ; table [ ( T_null << 4 ) + T_JavaLangObject ] = ( T_JavaLangObject << 16 ) + ( T_null << 12 ) + ( T_JavaLangObject << 8 ) + ( T_JavaLangObject << 4 ) + T_boolean ; table [ ( T_null << 4 ) + T_null ] = ( T_JavaLangObject << 16 ) + ( T_null << 12 ) + ( T_JavaLangObject << 8 ) + ( T_null << 4 ) + T_boolean ; return table ; } public static final int [ ] get_GREATER ( ) { return get_LESS ( ) ; } public static final int [ ] get_GREATER_EQUAL ( ) { return get_LESS ( ) ; } public static final int [ ] get_LEFT_SHIFT ( ) { int [ ] table = new int [ 16 * 16 ] ; table [ ( T_byte << 4 ) + T_byte ] = ( Byte2Int << 12 ) + ( Byte2Int << 4 ) + T_int ; table [ ( T_byte << 4 ) + T_long ] = ( Byte2Int << 12 ) + ( Long2Int << 4 ) + T_int ; table [ ( T_byte << 4 ) + T_short ] = ( Byte2Int << 12 ) + ( Short2Int << 4 ) + T_int ; table [ ( T_byte << 4 ) + T_char ] = ( Byte2Int << 12 ) + ( Char2Int << 4 ) + T_int ; table [ ( T_byte << 4 ) + T_int ] = ( Byte2Int << 12 ) + ( Int2Int << 4 ) + T_int ; table [ ( T_long << 4 ) + T_byte ] = ( Long2Long << 12 ) + ( Byte2Int << 4 ) + T_long ; table [ ( T_long << 4 ) + T_long ] = ( Long2Long << 12 ) + ( Long2Int << 4 ) + T_long ; table [ ( T_long << 4 ) + T_short ] = ( Long2Long << 12 ) + ( Short2Int << 4 ) + T_long ; table [ ( T_long << 4 ) + T_char ] = ( Long2Long << 12 ) + ( Char2Int << 4 ) + T_long ; table [ ( T_long << 4 ) + T_int ] = ( Long2Long << 12 ) + ( Int2Int << 4 ) + T_long ; table [ ( T_short << 4 ) + T_byte ] = ( Short2Int << 12 ) + ( Byte2Int << 4 ) + T_int ; table [ ( T_short << 4 ) + T_long ] = ( Short2Int << 12 ) + ( Long2Int << 4 ) + T_int ; table [ ( T_short << 4 ) + T_short ] = ( Short2Int << 12 ) + ( Short2Int << 4 ) + T_int ; table [ ( T_short << 4 ) + T_char ] = ( Short2Int << 12 ) + ( Char2Int << 4 ) + T_int ; table [ ( T_short << 4 ) + T_int ] = ( Short2Int << 12 ) + ( Int2Int << 4 ) + T_int ; table [ ( T_char << 4 ) + T_byte ] = ( Char2Int << 12 ) + ( Byte2Int << 4 ) + T_int ; table [ ( T_char << 4 ) + T_long ] = ( Char2Int << 12 ) + ( Long2Int << 4 ) + T_int ; table [ ( T_char << 4 ) + T_short ] = ( Char2Int << 12 ) + ( Short2Int << 4 ) + T_int ; table [ ( T_char << 4 ) + T_char ] = ( Char2Int << 12 ) + ( Char2Int << 4 ) + T_int ; table [ ( T_char << 4 ) + T_int ] = ( Char2Int << 12 ) + ( Int2Int << 4 ) + T_int ; table [ ( T_int << 4 ) + T_byte ] = ( Int2Int << 12 ) + ( Byte2Int << 4 ) + T_int ; table [ ( T_int << 4 ) + T_long ] = ( Int2Int << 12 ) + ( Long2Int << 4 ) + T_int ; table [ ( T_int << 4 ) + T_short ] = ( Int2Int << 12 ) + ( Short2Int << 4 ) + T_int ; table [ ( T_int << 4 ) + T_char ] = ( Int2Int << 12 ) + ( Char2Int << 4 ) + T_int ; table [ ( T_int << 4 ) + T_int ] = ( Int2Int << 12 ) + ( Int2Int << 4 ) + T_int ; return table ; } public static final int [ ] get_LESS ( ) { int [ ] table = new int [ 16 * 16 ] ; table [ ( T_byte << 4 ) + T_byte ] = ( Byte2Int << 12 ) + ( Byte2Int << 4 ) + T_boolean ; table [ ( T_byte << 4 ) + T_long ] = ( Byte2Long << 12 ) + ( Long2Long << 4 ) + T_boolean ; table [ ( T_byte << 4 ) + T_short ] = ( Byte2Int << 12 ) + ( Short2Int << 4 ) + T_boolean ; table [ ( T_byte << 4 ) + T_double ] = ( Byte2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_byte << 4 ) + T_float ] = ( Byte2Float << 12 ) + ( Float2Float << 4 ) + T_boolean ; table [ ( T_byte << 4 ) + T_char ] = ( Byte2Int << 12 ) + ( Char2Int << 4 ) + T_boolean ; table [ ( T_byte << 4 ) + T_int ] = ( Byte2Int << 12 ) + ( Int2Int << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_byte ] = ( Long2Long << 12 ) + ( Byte2Long << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_long ] = ( Long2Long << 12 ) + ( Long2Long << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_short ] = ( Long2Long << 12 ) + ( Short2Long << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_double ] = ( Long2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_float ] = ( Long2Float << 12 ) + ( Float2Float << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_char ] = ( Long2Long << 12 ) + ( Char2Long << 4 ) + T_boolean ; table [ ( T_long << 4 ) + T_int ] = ( Long2Long << 12 ) + ( Int2Long << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_byte ] = ( Short2Int << 12 ) + ( Byte2Int << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_long ] = ( Short2Long << 12 ) + ( Long2Long << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_short ] = ( Short2Int << 12 ) + ( Short2Int << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_double ] = ( Short2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_float ] = ( Short2Float << 12 ) + ( Float2Float << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_char ] = ( Short2Int << 12 ) + ( Char2Int << 4 ) + T_boolean ; table [ ( T_short << 4 ) + T_int ] = ( Short2Int << 12 ) + ( Int2Int << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_byte ] = ( Double2Double << 12 ) + ( Byte2Double << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_long ] = ( Double2Double << 12 ) + ( Long2Double << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_short ] = ( Double2Double << 12 ) + ( Short2Double << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_double ] = ( Double2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_float ] = ( Double2Double << 12 ) + ( Float2Double << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_char ] = ( Double2Double << 12 ) + ( Char2Double << 4 ) + T_boolean ; table [ ( T_double << 4 ) + T_int ] = ( Double2Double << 12 ) + ( Int2Double << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_byte ] = ( Float2Float << 12 ) + ( Byte2Float << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_long ] = ( Float2Float << 12 ) + ( Long2Float << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_short ] = ( Float2Float << 12 ) + ( Short2Float << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_double ] = ( Float2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_float ] = ( Float2Float << 12 ) + ( Float2Float << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_char ] = ( Float2Float << 12 ) + ( Char2Float << 4 ) + T_boolean ; table [ ( T_float << 4 ) + T_int ] = ( Float2Float << 12 ) + ( Int2Float << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_byte ] = ( Char2Int << 12 ) + ( Byte2Int << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_long ] = ( Char2Long << 12 ) + ( Long2Long << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_short ] = ( Char2Int << 12 ) + ( Short2Int << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_double ] = ( Char2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_float ] = ( Char2Float << 12 ) + ( Float2Float << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_char ] = ( Char2Int << 12 ) + ( Char2Int << 4 ) + T_boolean ; table [ ( T_char << 4 ) + T_int ] = ( Char2Int << 12 ) + ( Int2Int << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_byte ] = ( Int2Int << 12 ) + ( Byte2Int << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_long ] = ( Int2Long << 12 ) + ( Long2Long << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_short ] = ( Int2Int << 12 ) + ( Short2Int << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_double ] = ( Int2Double << 12 ) + ( Double2Double << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_float ] = ( Int2Float << 12 ) + ( Float2Float << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_char ] = ( Int2Int << 12 ) + ( Char2Int << 4 ) + T_boolean ; table [ ( T_int << 4 ) + T_int ] = ( Int2Int << 12 ) + ( Int2Int << 4 ) + T_boolean ; return table ; } public static final int [ ] get_LESS_EQUAL ( ) { return get_LESS ( ) ; } public static final int [ ] get_MINUS ( ) { int [ ] table = ( int [ ] ) get_PLUS ( ) . clone ( ) ; table [ ( T_JavaLangString << 4 ) + T_byte ] = T_undefined ; table [ ( T_JavaLangString << 4 ) + T_long ] = T_undefined ; table [ ( T_JavaLangString << 4 ) + T_short ] = T_undefined ; table [ ( T_JavaLangString << 4 ) + T_void ] = T_undefined ; table [ ( T_JavaLangString << 4 ) + T_JavaLangString ] = T_undefined ; table [ ( T_JavaLangString << 4 ) + T_JavaLangObject ] = T_undefined ; table [ ( T_JavaLangString << 4 ) + T_double ] = T_undefined ; table [ ( T_JavaLangString << 4 ) + T_float ] = T_undefined ; table [ ( T_JavaLangString << 4 ) + T_boolean ] = T_undefined ; table [ ( T_JavaLangString << 4 ) + T_char ] = T_undefined ; table [ ( T_JavaLangString << 4 ) + T_int ] = T_undefined ; table [ ( T_JavaLangString << 4 ) + T_null ] = T_undefined ; table [ ( T_byte << 4 ) + T_JavaLangString ] = T_undefined ; table [ ( T_long << 4 ) + T_JavaLangString ] = T_undefined ; table [ ( T_short << 4 ) + T_JavaLangString ] = T_undefined ; table [ ( T_void << 4 ) + T_JavaLangString ] = T_undefined ; table [ ( T_JavaLangObject << 4 ) + T_JavaLangString ] = T_undefined ; table [ ( T_double << 4 ) + T_JavaLangString ] = T_undefined ; table [ ( T_float << 4 ) + T_JavaLangString ] = T_undefined ; table [ ( T_boolean << 4 ) + T_JavaLangString ] = T_undefined ; table [ ( T_char << 4 ) + T_JavaLangString ] = T_undefined ; table [ ( T_int << 4 ) + T_JavaLangString ] = T_undefined ; table [ ( T_null << 4 ) + T_JavaLangString ] = T_undefined ; table [ ( T_null << 4 ) + T_null ] = T_undefined ; return table ; } public static final int [ ] get_MULTIPLY ( ) { return get_MINUS ( ) ; } public static final int [ ] get_OR ( ) { return get_AND ( ) ; } public static final int [ ] get_OR_OR ( ) { return get_AND_AND ( ) ; } public static final int [ ] get_PLUS ( ) { int [ ] table = new int [ 16 * 16 ] ; table [ ( T_byte << 4 ) + T_byte ] = ( Byte2Int << 12 ) + ( Byte2Int << 4 ) + T_int ; table [ ( T_byte << 4 ) + T_long ] = ( Byte2Long << 12 ) + ( Long2Long << 4 ) + T_long ; table [ ( T_byte << 4 ) + T_short ] = ( Byte2Int << 12 ) + ( Short2Int << 4 ) + T_int ; table [ ( T_byte << 4 ) + T_JavaLangString ] = ( Byte2Byte << 12 ) + ( String2String << 4 ) + T_JavaLangString ; table [ ( T_byte << 4 ) + T_double ] = ( Byte2Double << 12 ) + ( Double2Double << 4 ) + T_double ; table [ ( T_byte << 4 ) + T_float ] = ( Byte2Float << 12 ) + ( Float2Float << 4 ) + T_float ; table [ ( T_byte << 4 ) + T_char ] = ( Byte2Int << 12 ) + ( Char2Int << 4 ) + T_int ; table [ ( T_byte << 4 ) + T_int ] = ( Byte2Int << 12 ) + ( Int2Int << 4 ) + T_int ; table [ ( T_long << 4 ) + T_byte ] = ( Long2Long << 12 ) + ( Byte2Long << 4 ) + T_long ; table [ ( T_long << 4 ) + T_long ] = ( Long2Long << 12 ) + ( Long2Long << 4 ) + T_long ; table [ ( T_long << 4 ) + T_short ] = ( Long2Long << 12 ) + ( Short2Long << 4 ) + T_long ; table [ ( T_long << 4 ) + T_JavaLangString ] = ( Long2Long << 12 ) + ( String2String << 4 ) + T_JavaLangString ; table [ ( T_long << 4 ) + T_double ] = ( Long2Double << 12 ) + ( Double2Double << 4 ) + T_double ; table [ ( T_long << 4 ) + T_float ] = ( Long2Float << 12 ) + ( Float2Float << 4 ) + T_float ; table [ ( T_long << 4 ) + T_char ] = ( Long2Long << 12 ) + ( Char2Long << 4 ) + T_long ; table [ ( T_long << 4 ) + T_int ] = ( Long2Long << 12 ) + ( Int2Long << 4 ) + T_long ; table [ ( T_short << 4 ) + T_byte ] = ( Short2Int << 12 ) + ( Byte2Int << 4 ) + T_int ; table [ ( T_short << 4 ) + T_long ] = ( Short2Long << 12 ) + ( Long2Long << 4 ) + T_long ; table [ ( T_short << 4 ) + T_short ] = ( Short2Int << 12 ) + ( Short2Int << 4 ) + T_int ; table [ ( T_short << 4 ) + T_JavaLangString ] = ( Short2Short << 12 ) + ( String2String << 4 ) + T_JavaLangString ; table [ ( T_short << 4 ) + T_double ] = ( Short2Double << 12 ) + ( Double2Double << 4 ) + T_double ; table [ ( T_short << 4 ) + T_float ] = ( Short2Float << 12 ) + ( Float2Float << 4 ) + T_float ; table [ ( T_short << 4 ) + T_char ] = ( Short2Int << 12 ) + ( Char2Int << 4 ) + T_int ; table [ ( T_short << 4 ) + T_int ] = ( Short2Int << 12 ) + ( Int2Int << 4 ) + T_int ; table [ ( T_JavaLangString << 4 ) + T_byte ] = ( String2String << 12 ) + ( Byte2Byte << 4 ) + T_JavaLangString ; table [ ( T_JavaLangString << 4 ) + T_long ] = ( String2String << 12 ) + ( Long2Long << 4 ) + T_JavaLangString ; table [ ( T_JavaLangString << 4 ) + T_short ] = ( String2String << 12 ) + ( Short2Short << 4 ) + T_JavaLangString ; table [ ( T_JavaLangString << 4 ) + T_JavaLangString ] = ( String2String << 12 ) + ( String2String << 4 ) + T_JavaLangString ; table [ ( T_JavaLangString << 4 ) + T_JavaLangObject ] = ( String2String << 12 ) + ( Object2Object << 4 ) + T_JavaLangString ; table [ ( T_JavaLangString << 4 ) + T_double ] = ( String2String << 12 ) + ( Double2Double << 4 ) + T_JavaLangString ; table [ ( T_JavaLangString << 4 ) + T_float ] = ( String2String << 12 ) + ( Float2Float << 4 ) + T_JavaLangString ; table [ ( T_JavaLangString << 4 ) + T_boolean ] = ( String2String << 12 ) + ( Boolean2Boolean << 4 ) + T_JavaLangString ; table [ ( T_JavaLangString << 4 ) + T_char ] = ( String2String << 12 ) + ( Char2Char << 4 ) + T_JavaLangString ; table [ ( T_JavaLangString << 4 ) + T_int ] = ( String2String << 12 ) + ( Int2Int << 4 ) + T_JavaLangString ; table [ ( T_JavaLangString << 4 ) + T_null ] = ( String2String << 12 ) + ( T_null << 8 ) + ( T_null << 4 ) + T_JavaLangString ; table [ ( T_JavaLangObject << 4 ) + T_JavaLangString ] = ( Object2Object << 12 ) + ( String2String << 4 ) + T_JavaLangString ; table [ ( T_double << 4 ) + T_byte ] = ( Double2Double << 12 ) + ( Byte2Double << 4 ) + T_double ; table [ ( T_double << 4 ) + T_long ] = ( Double2Double << 12 ) + ( Long2Double << 4 ) + T_double ; table [ ( T_double << 4 ) + T_short ] = ( Double2Double << 12 ) + ( Short2Double << 4 ) + T_double ; table [ ( T_double << 4 ) + T_JavaLangString ] = ( Double2Double << 12 ) + ( String2String << 4 ) + T_JavaLangString ; table [ ( T_double << 4 ) + T_double ] = ( Double2Double << 12 ) + ( Double2Double << 4 ) + T_double ; table [ ( T_double << 4 ) + T_float ] = ( Double2Double << 12 ) + ( Float2Double << 4 ) + T_double ; table [ ( T_double << 4 ) + T_char ] = ( Double2Double << 12 ) + ( Char2Double << 4 ) + T_double ; table [ ( T_double << 4 ) + T_int ] = ( Double2Double << 12 ) + ( Int2Double << 4 ) + T_double ; table [ ( T_float << 4 ) + T_byte ] = ( Float2Float << 12 ) + ( Byte2Float << 4 ) + T_float ; table [ ( T_float << 4 ) + T_long ] = ( Float2Float << 12 ) + ( Long2Float << 4 ) + T_float ; table [ ( T_float << 4 ) + T_short ] = ( Float2Float << 12 ) + ( Short2Float << 4 ) + T_float ; table [ ( T_float << 4 ) + T_JavaLangString ] = ( Float2Float << 12 ) + ( String2String << 4 ) + T_JavaLangString ; table [ ( T_float << 4 ) + T_double ] = ( Float2Double << 12 ) + ( Double2Double << 4 ) + T_double ; table [ ( T_float << 4 ) + T_float ] = ( Float2Float << 12 ) + ( Float2Float << 4 ) + T_float ; table [ ( T_float << 4 ) + T_char ] = ( Float2Float << 12 ) + ( Char2Float << 4 ) + T_float ; table [ ( T_float << 4 ) + T_int ] = ( Float2Float << 12 ) + ( Int2Float << 4 ) + T_float ; table [ ( T_boolean << 4 ) + T_JavaLangString ] = ( Boolean2Boolean << 12 ) + ( String2String << 4 ) + T_JavaLangString ; table [ ( T_char << 4 ) + T_byte ] = ( Char2Int << 12 ) + ( Byte2Int << 4 ) + T_int ; table [ ( T_char << 4 ) + T_long ] = ( Char2Long << 12 ) + ( Long2Long << 4 ) + T_long ; table [ ( T_char << 4 ) + T_short ] = ( Char2Int << 12 ) + ( Short2Int << 4 ) + T_int ; table [ ( T_char << 4 ) + T_JavaLangString ] = ( Char2Char << 12 ) + ( String2String << 4 ) + T_JavaLangString ; table [ ( T_char << 4 ) + T_double ] = ( Char2Double << 12 ) + ( Double2Double << 4 ) + T_double ; table [ ( T_char << 4 ) + T_float ] = ( Char2Float << 12 ) + ( Float2Float << 4 ) + T_float ; table [ ( T_char << 4 ) + T_char ] = ( Char2Int << 12 ) + ( Char2Int << 4 ) + T_int ; table [ ( T_char << 4 ) + T_int ] = ( Char2Int << 12 ) + ( Int2Int << 4 ) + T_int ; table [ ( T_int << 4 ) + T_byte ] = ( Int2Int << 12 ) + ( Byte2Int << 4 ) + T_int ; table [ ( T_int << 4 ) + T_long ] = ( Int2Long << 12 ) + ( Long2Long << 4 ) + T_long ; table [ ( T_int << 4 ) + T_short ] = ( Int2Int << 12 ) + ( Short2Int << 4 ) + T_int ; table [ ( T_int << 4 ) + T_JavaLangString ] = ( Int2Int << 12 ) + ( String2String << 4 ) + T_JavaLangString ; table [ ( T_int << 4 ) + T_double ] = ( Int2Double << 12 ) + ( Double2Double << 4 ) + T_double ; table [ ( T_int << 4 ) + T_float ] = ( Int2Float << 12 ) + ( Float2Float << 4 ) + T_float ; table [ ( T_int << 4 ) + T_char ] = ( Int2Int << 12 ) + ( Char2Int << 4 ) + T_int ; table [ ( T_int << 4 ) + T_int ] = ( Int2Int << 12 ) + ( Int2Int << 4 ) + T_int ; table [ ( T_null << 4 ) + T_JavaLangString ] = ( T_null << 16 ) + ( T_null << 12 ) + ( String2String << 4 ) + T_JavaLangString ; return table ; } public static final int [ ] get_REMAINDER ( ) { return get_MINUS ( ) ; } public static final int [ ] get_RIGHT_SHIFT ( ) { return get_LEFT_SHIFT ( ) ; } public static final int [ ] get_UNSIGNED_RIGHT_SHIFT ( ) { return get_LEFT_SHIFT ( ) ; } public static final int [ ] get_XOR ( ) { return get_AND ( ) ; } public String operatorToString ( ) { switch ( ( this . bits & OperatorMASK ) >> OperatorSHIFT ) { case EQUAL_EQUAL : return "==" ; case LESS_EQUAL : return "<=" ; case GREATER_EQUAL : return ">=" ; case NOT_EQUAL : return "!=" ; case LEFT_SHIFT : return "<<" ; case RIGHT_SHIFT : return ">>" ; case UNSIGNED_RIGHT_SHIFT : return ">>>" ; case OR_OR : return "||" ; case AND_AND : return "&&" ; case PLUS : return "+" ; case MINUS : return "-" ; case NOT : return "!" ; case REMAINDER : return "%" ; case XOR : return "^" ; case AND : return "&" ; case MULTIPLY : return "*" ; case OR : return "|" ; case TWIDDLE : return "~" ; case DIVIDE : return "/" ; case GREATER : return ">" ; case LESS : return "<" ; case QUESTIONCOLON : return "?:" ; case EQUAL : return "=" ; } return "" ; } public int nullStatus ( FlowInfo flowInfo ) { return FlowInfo . NON_NULL ; } public StringBuffer printExpression ( int indent , StringBuffer output ) { output . append ( '(' ) ; return printExpressionNoParenthesis ( 0 , output ) . append ( ')' ) ; } public abstract StringBuffer printExpressionNoParenthesis ( int indent , StringBuffer output ) ; } </s>