#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: yes

---
snippet: "
  return; var a = 1; a();
"
frame size: 1
parameter count: 1
bytecode array length: 2
bytecodes: [
  /*   34 S> */ B(LdaUndefined),
  /*   41 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  if (false) { return; }; var a = 1;
"
frame size: 1
parameter count: 1
bytecode array length: 6
bytecodes: [
  /*   66 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
                B(LdaUndefined),
  /*   69 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  if (true) { return 1; } else { return 2; };
"
frame size: 0
parameter count: 1
bytecode array length: 3
bytecodes: [
  /*   46 S> */ B(LdaSmi), I8(1),
  /*   55 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = 1; if (a) { return 1; }; return 2;
"
frame size: 1
parameter count: 1
bytecode array length: 12
bytecodes: [
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(JumpIfToBooleanFalse), U8(5),
  /*   54 S> */ B(LdaSmi), I8(1),
  /*   63 S> */ B(Return),
  /*   67 S> */ B(LdaSmi), I8(2),
  /*   76 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

