#
# Autogenerated by generate-bytecode-expectations.
#

---
pool type: string
execute: yes
wrap: yes

---
snippet: "
  const x = 10;
"
frame size: 1
parameter count: 1
bytecode array length: 10
bytecodes: [
                B(LdaTheHole),
                B(Star), R(0),
  /*   30 E> */ B(StackCheck),
  /*   44 S> */ B(LdaSmi), U8(10),
                B(Star), R(0),
                B(LdaUndefined),
  /*   48 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  const x = 10; return x;
"
frame size: 2
parameter count: 1
bytecode array length: 20
bytecodes: [
                B(LdaTheHole),
                B(Star), R(0),
  /*   30 E> */ B(StackCheck),
  /*   44 S> */ B(LdaSmi), U8(10),
                B(Star), R(0),
  /*   48 S> */ B(JumpIfNotHole), U8(11),
                B(LdaConstant), U8(0),
                B(Star), R(1),
                B(CallRuntime), U16(Runtime::kThrowReferenceError), R(1), U8(1),
  /*   58 S> */ B(Return),
]
constant pool: [
  "x",
]
handlers: [
]

---
snippet: "
  const x = ( x = 20);
"
frame size: 3
parameter count: 1
bytecode array length: 31
bytecodes: [
                B(LdaTheHole),
                B(Star), R(0),
  /*   30 E> */ B(StackCheck),
  /*   48 S> */ B(LdaSmi), U8(20),
                B(Star), R(1),
                B(Ldar), R(0),
                B(JumpIfNotHole), U8(11),
                B(LdaConstant), U8(0),
                B(Star), R(2),
  /*   48 E> */ B(CallRuntime), U16(Runtime::kThrowReferenceError), R(2), U8(1),
                B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
                B(Mov), R(1), R(0),
                B(LdaUndefined),
  /*   55 S> */ B(Return),
]
constant pool: [
  "x",
]
handlers: [
]

---
snippet: "
  const x = 10; x = 20;
"
frame size: 3
parameter count: 1
bytecode array length: 35
bytecodes: [
                B(LdaTheHole),
                B(Star), R(0),
  /*   30 E> */ B(StackCheck),
  /*   44 S> */ B(LdaSmi), U8(10),
                B(Star), R(0),
  /*   48 S> */ B(LdaSmi), U8(20),
                B(Star), R(1),
                B(Ldar), R(0),
                B(JumpIfNotHole), U8(11),
                B(LdaConstant), U8(0),
                B(Star), R(2),
  /*   50 E> */ B(CallRuntime), U16(Runtime::kThrowReferenceError), R(2), U8(1),
                B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
                B(Mov), R(1), R(0),
                B(LdaUndefined),
  /*   56 S> */ B(Return),
]
constant pool: [
  "x",
]
handlers: [
]

