/* */ private boolean booleanExpr(boolean branchIf, ASTree expr)
/* */ throws CompileError
/* */ {
/* 1098 */ int op = getCompOperator(expr);
/* 1099 */ if (op == 358) {
/* 1100 */ BinExpr bexpr = (BinExpr)expr;
/* 1101 */ int type1 = compileOprands(bexpr);
/* */
/* 1104 */ compareExpr(branchIf, bexpr.getOperator(), type1, bexpr);
/* */ }
/* 1106 */ else if (op == 33) {
/* 1107 */ booleanExpr(!branchIf, ((Expr)expr).oprand1());
/* */ }
/* */ else
/* */ {
/* */ boolean isAndAnd;
/* 1108 */ if (((isAndAnd = op == 369 ? 1 : 0) != 0) || (op == 368)) {
/* 1109 */ BinExpr bexpr = (BinExpr)expr;
/* 1110 */ booleanExpr(!isAndAnd, bexpr.oprand1());
/* 1111 */ int pc = this.bytecode.currentPc();
/* 1112 */ this.bytecode.addIndex(0);
/* */
/* 1114 */ booleanExpr(isAndAnd, bexpr.oprand2());
/* 1115 */ this.bytecode.write16bit(pc, this.bytecode.currentPc() - pc + 3);
/* 1116 */ if (branchIf != isAndAnd) {
/* 1117 */ this.bytecode.addIndex(6);
/* 1118 */ this.bytecode.addOpcode(167);
/* */ }