#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: yes

---
snippet: "
  var x, a = [0,1,2,3];
  [x] = a;
"
frame size: 16
parameter count: 1
bytecode array length: 178
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   45 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
                B(Star), R(1),
  /*   60 S> */ B(LdaNamedProperty), R(1), U8(1), U8(1),
                B(Star), R(6),
                B(CallProperty0), R(6), R(1), U8(3),
                B(Mov), R(1), R(5),
                B(Mov), R(1), R(2),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(4),
                B(LdaNamedProperty), R(4), U8(2), U8(5),
                B(Star), R(3),
                B(LdaFalse),
                B(Star), R(7),
                B(Mov), R(context), R(10),
  /*   57 S> */ B(Ldar), R(7),
                B(JumpIfToBooleanTrue), U8(37),
                B(LdaTrue),
                B(Star), R(7),
                B(CallProperty0), R(3), R(4), U8(11),
                B(Star), R(11),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
                B(LdaNamedProperty), R(11), U8(3), U8(9),
                B(JumpIfToBooleanTrue), U8(15),
                B(LdaNamedProperty), R(11), U8(4), U8(7),
                B(Star), R(11),
                B(LdaFalse),
                B(Star), R(7),
                B(Ldar), R(11),
                B(Jump), U8(3),
                B(LdaUndefined),
                B(Star), R(0),
                B(LdaSmi), I8(-1),
                B(Star), R(9),
                B(Star), R(8),
                B(Jump), U8(7),
                B(Star), R(9),
                B(LdaZero),
                B(Star), R(8),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(10),
                B(Ldar), R(7),
                B(JumpIfToBooleanTrue), U8(60),
                B(LdaNamedProperty), R(4), U8(5), U8(13),
                B(Star), R(12),
                B(JumpIfUndefined), U8(52),
                B(JumpIfNull), U8(50),
                B(Mov), R(context), R(13),
                B(TestTypeOf), U8(6),
                B(JumpIfTrue), U8(18),
                B(Wide), B(LdaSmi), I16(159),
                B(Star), R(14),
                B(LdaConstant), U8(6),
                B(Star), R(15),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(14), U8(2),
                B(Throw),
                B(CallProperty0), R(12), R(4), U8(15),
                B(JumpIfJSReceiver), U8(21),
                B(Star), R(14),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(14), U8(1),
                B(Jump), U8(12),
                B(Star), R(13),
                B(LdaZero),
                B(TestReferenceEqual), R(8),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(13),
                B(ReThrow),
                B(Ldar), R(10),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestReferenceEqual), R(8),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(9),
                B(ReThrow),
                B(LdaUndefined),
  /*   65 S> */ B(Return),
]
constant pool: [
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
  [44, 86, 94],
  [120, 153, 155],
]

---
snippet: "
  var x, y, a = [0,1,2,3];
  [,x,...y] = a;
"
frame size: 17
parameter count: 1
bytecode array length: 264
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   48 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
                B(Star), R(2),
  /*   69 S> */ B(LdaNamedProperty), R(2), U8(1), U8(1),
                B(Star), R(7),
                B(CallProperty0), R(7), R(2), U8(3),
                B(Mov), R(2), R(6),
                B(Mov), R(2), R(3),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(5),
                B(LdaNamedProperty), R(5), U8(2), U8(5),
                B(Star), R(4),
                B(LdaFalse),
                B(Star), R(8),
                B(Mov), R(context), R(11),
                B(Ldar), R(8),
                B(JumpIfToBooleanTrue), U8(35),
                B(LdaTrue),
                B(Star), R(8),
                B(CallProperty0), R(4), R(5), U8(11),
                B(Star), R(12),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
                B(LdaNamedProperty), R(12), U8(3), U8(9),
                B(JumpIfToBooleanTrue), U8(13),
                B(LdaNamedProperty), R(12), U8(4), U8(7),
                B(Star), R(12),
                B(LdaFalse),
                B(Star), R(8),
                B(Ldar), R(12),
  /*   61 S> */ B(Ldar), R(8),
                B(JumpIfToBooleanTrue), U8(37),
                B(LdaTrue),
                B(Star), R(8),
                B(CallProperty0), R(4), R(5), U8(13),
                B(Star), R(12),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
                B(LdaNamedProperty), R(12), U8(3), U8(9),
                B(JumpIfToBooleanTrue), U8(15),
                B(LdaNamedProperty), R(12), U8(4), U8(7),
                B(Star), R(12),
                B(LdaFalse),
                B(Star), R(8),
                B(Ldar), R(12),
                B(Jump), U8(3),
                B(LdaUndefined),
                B(Star), R(0),
  /*   63 S> */ B(CreateEmptyArrayLiteral), U8(15),
                B(Star), R(13),
                B(LdaZero),
                B(Star), R(14),
                B(LdaTrue),
                B(Star), R(8),
                B(CallProperty0), R(4), R(5), U8(19),
                B(Star), R(12),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
                B(LdaNamedProperty), R(12), U8(3), U8(21),
                B(JumpIfToBooleanTrue), U8(19),
                B(LdaNamedProperty), R(12), U8(4), U8(7),
                B(StaInArrayLiteral), R(13), R(14), U8(16),
                B(Ldar), R(14),
                B(Inc), U8(18),
                B(Star), R(14),
                B(JumpLoop), U8(33), I8(0),
                B(Mov), R(13), R(1),
                B(LdaSmi), I8(-1),
                B(Star), R(10),
                B(Star), R(9),
                B(Jump), U8(7),
                B(Star), R(10),
                B(LdaZero),
                B(Star), R(9),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(11),
                B(Ldar), R(8),
                B(JumpIfToBooleanTrue), U8(60),
                B(LdaNamedProperty), R(5), U8(5), U8(23),
                B(Star), R(13),
                B(JumpIfUndefined), U8(52),
                B(JumpIfNull), U8(50),
                B(Mov), R(context), R(14),
                B(TestTypeOf), U8(6),
                B(JumpIfTrue), U8(18),
                B(Wide), B(LdaSmi), I16(159),
                B(Star), R(15),
                B(LdaConstant), U8(6),
                B(Star), R(16),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(15), U8(2),
                B(Throw),
                B(CallProperty0), R(13), R(5), U8(25),
                B(JumpIfJSReceiver), U8(21),
                B(Star), R(15),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(15), U8(1),
                B(Jump), U8(12),
                B(Star), R(14),
                B(LdaZero),
                B(TestReferenceEqual), R(9),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(14),
                B(ReThrow),
                B(Ldar), R(11),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestReferenceEqual), R(9),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(10),
                B(ReThrow),
                B(LdaUndefined),
  /*   74 S> */ B(Return),
]
constant pool: [
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
  [44, 172, 180],
  [206, 239, 241],
]

---
snippet: "
  var x={}, y, a = [0];
  [x.foo,y=4] = a;
"
frame size: 18
parameter count: 1
bytecode array length: 229
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   40 S> */ B(CreateEmptyObjectLiteral),
                B(Star), R(0),
  /*   51 S> */ B(CreateArrayLiteral), U8(0), U8(0), U8(37),
                B(Star), R(2),
  /*   68 S> */ B(LdaNamedProperty), R(2), U8(1), U8(1),
                B(Star), R(7),
                B(CallProperty0), R(7), R(2), U8(3),
                B(Mov), R(2), R(6),
                B(Mov), R(2), R(3),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(5),
                B(LdaNamedProperty), R(5), U8(2), U8(5),
                B(Star), R(4),
                B(LdaFalse),
                B(Star), R(8),
                B(Mov), R(context), R(11),
  /*   59 S> */ B(Ldar), R(8),
                B(Mov), R(0), R(13),
                B(JumpIfToBooleanTrue), U8(37),
                B(LdaTrue),
                B(Star), R(8),
                B(CallProperty0), R(4), R(5), U8(11),
                B(Star), R(12),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
                B(LdaNamedProperty), R(12), U8(3), U8(9),
                B(JumpIfToBooleanTrue), U8(15),
                B(LdaNamedProperty), R(12), U8(4), U8(7),
                B(Star), R(12),
                B(LdaFalse),
                B(Star), R(8),
                B(Ldar), R(12),
                B(Jump), U8(3),
                B(LdaUndefined),
                B(StaNamedProperty), R(13), U8(5), U8(13),
  /*   63 S> */ B(Ldar), R(8),
                B(JumpIfToBooleanTrue), U8(37),
                B(LdaTrue),
                B(Star), R(8),
                B(CallProperty0), R(4), R(5), U8(15),
                B(Star), R(12),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
                B(LdaNamedProperty), R(12), U8(3), U8(9),
                B(JumpIfToBooleanTrue), U8(15),
                B(LdaNamedProperty), R(12), U8(4), U8(7),
                B(Star), R(12),
                B(LdaFalse),
                B(Star), R(8),
                B(Ldar), R(12),
                B(JumpIfNotUndefined), U8(4),
                B(LdaSmi), I8(4),
                B(Star), R(1),
                B(LdaSmi), I8(-1),
                B(Star), R(10),
                B(Star), R(9),
                B(Jump), U8(7),
                B(Star), R(10),
                B(LdaZero),
                B(Star), R(9),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(11),
                B(Ldar), R(8),
                B(JumpIfToBooleanTrue), U8(60),
                B(LdaNamedProperty), R(5), U8(6), U8(17),
                B(Star), R(14),
                B(JumpIfUndefined), U8(52),
                B(JumpIfNull), U8(50),
                B(Mov), R(context), R(15),
                B(TestTypeOf), U8(6),
                B(JumpIfTrue), U8(18),
                B(Wide), B(LdaSmi), I16(159),
                B(Star), R(16),
                B(LdaConstant), U8(7),
                B(Star), R(17),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2),
                B(Throw),
                B(CallProperty0), R(14), R(5), U8(19),
                B(JumpIfJSReceiver), U8(21),
                B(Star), R(16),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(16), U8(1),
                B(Jump), U8(12),
                B(Star), R(15),
                B(LdaZero),
                B(TestReferenceEqual), R(9),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(15),
                B(ReThrow),
                B(Ldar), R(11),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestReferenceEqual), R(9),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(10),
                B(ReThrow),
                B(LdaUndefined),
  /*   73 S> */ B(Return),
]
constant pool: [
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["foo"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
  [47, 137, 145],
  [171, 204, 206],
]

---
snippet: "
  var x, a = {x:1};
  ({x} = a);
"
frame size: 3
parameter count: 1
bytecode array length: 26
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   45 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
                B(Star), R(1),
  /*   52 S> */ B(JumpIfNull), U8(4),
                B(JumpIfNotUndefined), U8(7),
  /*   53 E> */ B(CallRuntime), U16(Runtime::kThrowPatternAssignmentNonCoercible), R(0), U8(0),
                B(Star), R(2),
  /*   54 S> */ B(LdaNamedProperty), R(2), U8(1), U8(1),
                B(Star), R(0),
                B(LdaUndefined),
  /*   63 S> */ B(Return),
]
constant pool: [
  OBJECT_BOILERPLATE_DESCRIPTION_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
]
handlers: [
]

---
snippet: "
  var x={}, a = {y:1};
  ({y:x.foo} = a);
"
frame size: 3
parameter count: 1
bytecode array length: 31
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   40 S> */ B(CreateEmptyObjectLiteral),
                B(Star), R(0),
  /*   48 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
                B(Star), R(1),
  /*   55 S> */ B(JumpIfNull), U8(4),
                B(JumpIfNotUndefined), U8(7),
  /*   56 E> */ B(CallRuntime), U16(Runtime::kThrowPatternAssignmentNonCoercible), R(0), U8(0),
  /*   61 S> */ B(Star), R(2),
                B(LdaNamedProperty), R(2), U8(1), U8(1),
                B(StaNamedProperty), R(0), U8(2), U8(3),
                B(LdaUndefined),
  /*   72 S> */ B(Return),
]
constant pool: [
  OBJECT_BOILERPLATE_DESCRIPTION_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["y"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["foo"],
]
handlers: [
]

---
snippet: "
  var x, a = {y:1, w:2, v:3};
  ({x=0,...y} = a);
"
frame size: 4
parameter count: 1
bytecode array length: 41
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   45 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
                B(Star), R(1),
  /*   62 S> */ B(JumpIfNull), U8(4),
                B(JumpIfNotUndefined), U8(7),
  /*   63 E> */ B(CallRuntime), U16(Runtime::kThrowPatternAssignmentNonCoercible), R(0), U8(0),
                B(Star), R(2),
  /*   64 S> */ B(LdaConstant), U8(1),
                B(Star), R(3),
                B(LdaNamedProperty), R(2), U8(1), U8(1),
                B(JumpIfNotUndefined), U8(3),
                B(LdaZero),
                B(Star), R(0),
  /*   71 S> */ B(CallRuntime), U16(Runtime::kCopyDataPropertiesWithExcludedProperties), R(2), U8(2),
                B(StaGlobal), U8(2), U8(3),
                B(LdaUndefined),
  /*   80 S> */ B(Return),
]
constant pool: [
  OBJECT_BOILERPLATE_DESCRIPTION_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["y"],
]
handlers: [
]

