home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.tree;
-
- import java.io.PrintStream;
- import java.util.Hashtable;
- import sun.tools.asm.Assembler;
- import sun.tools.java.ClassNotFound;
- import sun.tools.java.CompilerError;
- import sun.tools.java.Constants;
- import sun.tools.java.Environment;
- import sun.tools.java.Type;
-
- public class ConvertExpression extends UnaryExpression {
- public ConvertExpression(int var1, Type var2, Expression var3) {
- super(55, var1, var2, var3);
- }
-
- public Vset checkValue(Environment var1, Context var2, Vset var3, Hashtable var4) {
- return super.right.checkValue(var1, var2, var3, var4);
- }
-
- Expression simplify() {
- switch (super.right.op) {
- case 62:
- case 63:
- case 64:
- case 65:
- int var5 = ((IntegerExpression)super.right).value;
- switch (super.type.getTypeCode()) {
- case 1:
- return new ByteExpression(super.right.where, (byte)var5);
- case 2:
- return new CharExpression(super.right.where, (char)var5);
- case 3:
- return new ShortExpression(super.right.where, (short)var5);
- case 4:
- return new IntExpression(super.right.where, var5);
- case 5:
- return new LongExpression(super.right.where, (long)var5);
- case 6:
- return new FloatExpression(super.right.where, (float)var5);
- case 7:
- return new DoubleExpression(super.right.where, (double)var5);
- default:
- return this;
- }
- case 66:
- long var4 = ((LongExpression)super.right).value;
- switch (super.type.getTypeCode()) {
- case 1:
- return new ByteExpression(super.right.where, (byte)((int)var4));
- case 2:
- return new CharExpression(super.right.where, (char)((int)var4));
- case 3:
- return new ShortExpression(super.right.where, (short)((int)var4));
- case 4:
- return new IntExpression(super.right.where, (int)var4);
- case 5:
- default:
- return this;
- case 6:
- return new FloatExpression(super.right.where, (float)var4);
- case 7:
- return new DoubleExpression(super.right.where, (double)var4);
- }
- case 67:
- float var3 = ((FloatExpression)super.right).value;
- switch (super.type.getTypeCode()) {
- case 1:
- return new ByteExpression(super.right.where, (byte)((int)var3));
- case 2:
- return new CharExpression(super.right.where, (char)((int)var3));
- case 3:
- return new ShortExpression(super.right.where, (short)((int)var3));
- case 4:
- return new IntExpression(super.right.where, (int)var3);
- case 5:
- return new LongExpression(super.right.where, (long)var3);
- case 6:
- default:
- return this;
- case 7:
- return new DoubleExpression(super.right.where, (double)var3);
- }
- case 68:
- double var1 = ((DoubleExpression)super.right).value;
- switch (super.type.getTypeCode()) {
- case 1:
- return new ByteExpression(super.right.where, (byte)((int)var1));
- case 2:
- return new CharExpression(super.right.where, (char)((int)var1));
- case 3:
- return new ShortExpression(super.right.where, (short)((int)var1));
- case 4:
- return new IntExpression(super.right.where, (int)var1);
- case 5:
- return new LongExpression(super.right.where, (long)var1);
- case 6:
- return new FloatExpression(super.right.where, (float)var1);
- }
- }
-
- return this;
- }
-
- public boolean equals(int var1) {
- return super.right.equals(var1);
- }
-
- public boolean equals(boolean var1) {
- return super.right.equals(var1);
- }
-
- public Expression inline(Environment var1, Context var2) {
- if (super.right.type.inMask(1792) && super.type.inMask(1792)) {
- try {
- if (!var1.implicitCast(super.right.type, super.type)) {
- return ((UnaryExpression)this).inlineValue(var1, var2);
- }
- } catch (ClassNotFound var4) {
- throw new CompilerError(var4);
- }
- }
-
- return super.inline(var1, var2);
- }
-
- public void codeValue(Environment var1, Context var2, Assembler var3) {
- super.right.codeValue(var1, var2, var3);
- ((Expression)this).codeConversion(var1, var2, var3, super.right.type, super.type);
- }
-
- public void print(PrintStream var1) {
- var1.print("(" + Constants.opNames[super.op] + " " + super.type.toString() + " ");
- super.right.print(var1);
- var1.print(")");
- }
- }
-