#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: yes

---
snippet: "
  var a = 1; if (a || a < 0) { return 1; }
"
frame size: 1
parameter count: 1
bytecode array length: 18
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(JumpIfToBooleanTrue), U8(8),
                B(LdaZero),
  /*   56 E> */ B(TestLessThan), R(0), U8(0),
                B(JumpIfFalse), U8(5),
  /*   63 S> */ B(LdaSmi), I8(1),
  /*   72 S> */ B(Return),
                B(LdaUndefined),
  /*   75 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = 1; if (a && a < 0) { return 1; }
"
frame size: 1
parameter count: 1
bytecode array length: 18
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(JumpIfToBooleanFalse), U8(11),
                B(LdaZero),
  /*   56 E> */ B(TestLessThan), R(0), U8(0),
                B(JumpIfFalse), U8(5),
  /*   63 S> */ B(LdaSmi), I8(1),
  /*   72 S> */ B(Return),
                B(LdaUndefined),
  /*   75 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = 1; a = (a || a < 0) ? 2 : 3;
"
frame size: 1
parameter count: 1
bytecode array length: 23
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(JumpIfToBooleanTrue), U8(8),
                B(LdaZero),
  /*   57 E> */ B(TestLessThan), R(0), U8(0),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(2),
                B(Jump), U8(4),
                B(LdaSmi), I8(3),
                B(Star), R(0),
                B(LdaUndefined),
  /*   71 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

