#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: yes

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

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

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

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

