home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / tools / tree / OrExpression.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  2.1 KB  |  48 lines

  1. package sun.tools.tree;
  2.  
  3. import java.util.Hashtable;
  4. import sun.tools.asm.Assembler;
  5. import sun.tools.asm.Label;
  6. import sun.tools.java.Environment;
  7. import sun.tools.java.Type;
  8.  
  9. public class OrExpression extends BinaryLogicalExpression {
  10.    public OrExpression(int var1, Expression var2, Expression var3) {
  11.       super(14, var1, var2, var3);
  12.    }
  13.  
  14.    public void checkCondition(Environment var1, Context var2, Vset var3, Hashtable var4, ConditionVars var5) {
  15.       super.left.checkCondition(var1, var2, var3, var4, var5);
  16.       super.left = ((Node)this).convert(var1, var2, Type.tBoolean, super.left);
  17.       Vset var6 = var5.vsTrue.copy();
  18.       Vset var7 = var5.vsFalse.copy();
  19.       super.right.checkCondition(var1, var2, var7, var4, var5);
  20.       super.right = ((Node)this).convert(var1, var2, Type.tBoolean, super.right);
  21.       var5.vsTrue = var5.vsTrue.join(var6);
  22.    }
  23.  
  24.    Expression eval(boolean var1, boolean var2) {
  25.       return new BooleanExpression(super.where, var1 || var2);
  26.    }
  27.  
  28.    Expression simplify() {
  29.       if (!super.left.equals(true) && !super.right.equals(false)) {
  30.          return (Expression)(!super.left.equals(false) && !super.right.equals(true) ? this : super.right);
  31.       } else {
  32.          return super.left;
  33.       }
  34.    }
  35.  
  36.    void codeBranch(Environment var1, Context var2, Assembler var3, Label var4, boolean var5) {
  37.       if (var5) {
  38.          super.left.codeBranch(var1, var2, var3, var4, true);
  39.          super.right.codeBranch(var1, var2, var3, var4, true);
  40.       } else {
  41.          Label var6 = new Label();
  42.          super.left.codeBranch(var1, var2, var3, var6, true);
  43.          super.right.codeBranch(var1, var2, var3, var4, false);
  44.          var3.add(var6);
  45.       }
  46.    }
  47. }
  48.