#
# Autogenerated by generate-bytecode-expectations.
#

---
pool type: number
execute: yes
wrap: yes

---
snippet: "
  var a = 1; if (a || a < 0) { return 1; }
"
frame size: 1
parameter count: 1
bytecode array length: 17
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), U8(1),
                B(Star), R(0),
  /*   45 S> */ B(JumpIfToBooleanTrue), U8(5),
                B(LdaZero),
  /*   56 E> */ B(TestLessThan), R(0),
                B(JumpIfToBooleanFalse), U8(5),
  /*   63 S> */ B(LdaSmi), U8(1),
  /*   75 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: 17
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), U8(1),
                B(Star), R(0),
  /*   45 S> */ B(JumpIfToBooleanFalse), U8(5),
                B(LdaZero),
  /*   56 E> */ B(TestLessThan), R(0),
                B(JumpIfToBooleanFalse), U8(5),
  /*   63 S> */ B(LdaSmi), U8(1),
  /*   75 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: 22
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), U8(1),
                B(Star), R(0),
  /*   45 S> */ B(JumpIfToBooleanTrue), U8(5),
                B(LdaZero),
  /*   57 E> */ B(TestLessThan), R(0),
                B(JumpIfToBooleanFalse), U8(6),
                B(LdaSmi), U8(2),
                B(Jump), U8(4),
                B(LdaSmi), U8(3),
                B(Star), R(0),
                B(LdaUndefined),
  /*   71 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

