#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f
async iteration: yes

---
snippet: "
  async function* f() { }
  f();
"
frame size: 8
parameter count: 1
bytecode array length: 148
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
                B(Mov), R(closure), R(1),
                B(Mov), R(this), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(1), U8(2),
                B(Star), R(0),
  /*   17 E> */ B(StackCheck),
                B(Mov), R(context), R(3),
                B(Mov), R(context), R(4),
                B(Ldar), R(0),
  /*   17 E> */ B(SuspendGenerator), R(0), R(0), U8(5), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(5),
                B(Star), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
                B(Ldar), R(5),
  /*   17 E> */ B(Throw),
                B(LdaSmi), I8(1),
                B(Star), R(1),
                B(Mov), R(5), R(2),
                B(Jump), U8(53),
                B(Ldar), R(5),
                B(Jump), U8(36),
                B(Star), R(5),
                B(CreateCatchContext), R(5), U8(3),
                B(Star), R(4),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(4),
                B(PushContext), R(5),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(7),
                B(Mov), R(0), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(6), U8(2),
                B(PopContext), R(5),
                B(Star), R(2),
                B(LdaSmi), I8(2),
                B(Star), R(1),
                B(Jump), U8(15),
                B(LdaSmi), I8(-1),
                B(Star), R(2),
                B(Star), R(1),
                B(Jump), U8(7),
                B(Star), R(2),
                B(LdaZero),
                B(Star), R(1),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
                B(Ldar), R(3),
                B(SetPendingMessage),
                B(Ldar), R(1),
                B(SwitchOnSmiNoFeedback), U8(4), U8(3), I8(0),
                B(Jump), U8(22),
                B(Ldar), R(2),
                B(ReThrow),
                B(LdaTrue),
                B(Star), R(6),
                B(Mov), R(0), R(4),
                B(Mov), R(2), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(4), U8(3),
  /*   22 S> */ B(Return),
                B(Ldar), R(2),
  /*   22 S> */ B(Return),
                B(LdaUndefined),
  /*   22 S> */ B(Return),
]
constant pool: [
  Smi [30],
  Smi [16],
  Smi [7],
  SCOPE_INFO_TYPE,
  Smi [6],
  Smi [9],
  Smi [23],
]
handlers: [
  [20, 94, 102],
  [23, 56, 60],
]

---
snippet: "
  async function* f() { yield 42 }
  f();
"
frame size: 8
parameter count: 1
bytecode array length: 193
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
                B(Mov), R(closure), R(1),
                B(Mov), R(this), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(1), U8(2),
                B(Star), R(0),
  /*   17 E> */ B(StackCheck),
                B(Mov), R(context), R(3),
                B(Mov), R(context), R(4),
                B(Ldar), R(0),
  /*   17 E> */ B(SuspendGenerator), R(0), R(0), U8(5), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(5),
                B(Star), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(5),
  /*   17 E> */ B(Throw),
                B(LdaSmi), I8(1),
                B(Star), R(1),
                B(Mov), R(5), R(2),
                B(Jump), U8(98),
  /*   22 S> */ B(LdaSmi), I8(42),
                B(Star), R(6),
                B(LdaFalse),
                B(Star), R(7),
                B(Mov), R(0), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorYield), R(5), U8(3),
  /*   22 E> */ B(SuspendGenerator), R(0), R(0), U8(5), U8(1),
                B(ResumeGenerator), R(0), R(0), U8(5),
                B(Star), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0),
                B(Ldar), R(5),
  /*   22 E> */ B(Throw),
                B(LdaSmi), I8(1),
                B(Star), R(1),
                B(Mov), R(5), R(2),
                B(Jump), U8(53),
                B(Ldar), R(5),
                B(Jump), U8(36),
                B(Star), R(5),
                B(CreateCatchContext), R(5), U8(6),
                B(Star), R(4),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(4),
                B(PushContext), R(5),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(7),
                B(Mov), R(0), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(6), U8(2),
                B(PopContext), R(5),
                B(Star), R(2),
                B(LdaSmi), I8(2),
                B(Star), R(1),
                B(Jump), U8(15),
                B(LdaSmi), I8(-1),
                B(Star), R(2),
                B(Star), R(1),
                B(Jump), U8(7),
                B(Star), R(2),
                B(LdaZero),
                B(Star), R(1),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
                B(Ldar), R(3),
                B(SetPendingMessage),
                B(Ldar), R(1),
                B(SwitchOnSmiNoFeedback), U8(7), U8(3), I8(0),
                B(Jump), U8(22),
                B(Ldar), R(2),
                B(ReThrow),
                B(LdaTrue),
                B(Star), R(6),
                B(Mov), R(0), R(4),
                B(Mov), R(2), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(4), U8(3),
  /*   31 S> */ B(Return),
                B(Ldar), R(2),
  /*   31 S> */ B(Return),
                B(LdaUndefined),
  /*   31 S> */ B(Return),
]
constant pool: [
  Smi [30],
  Smi [75],
  Smi [16],
  Smi [7],
  Smi [16],
  Smi [7],
  SCOPE_INFO_TYPE,
  Smi [6],
  Smi [9],
  Smi [23],
]
handlers: [
  [20, 139, 147],
  [23, 101, 105],
]

---
snippet: "
  async function* f() { for (let x of [42]) yield x }
  f();
"
frame size: 21
parameter count: 1
bytecode array length: 372
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
                B(Mov), R(closure), R(4),
                B(Mov), R(this), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(4), U8(2),
                B(Star), R(0),
  /*   17 E> */ B(StackCheck),
                B(Mov), R(context), R(6),
                B(Mov), R(context), R(7),
                B(Ldar), R(0),
  /*   17 E> */ B(SuspendGenerator), R(0), R(0), U8(8), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(8),
                B(Star), R(8),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(8),
  /*   17 E> */ B(Throw),
                B(LdaSmi), I8(1),
                B(Star), R(4),
                B(Mov), R(8), R(5),
                B(JumpConstant), U8(16),
  /*   36 S> */ B(CreateArrayLiteral), U8(4), U8(0), U8(37),
                B(Star), R(10),
                B(LdaNamedProperty), R(10), U8(5), U8(1),
                B(Star), R(11),
                B(CallProperty0), R(11), R(10), U8(3),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(9),
                B(LdaNamedProperty), R(9), U8(6), U8(5),
                B(Star), R(8),
                B(LdaFalse),
                B(Star), R(12),
                B(Mov), R(context), R(15),
                B(LdaTrue),
                B(Star), R(12),
  /*   31 S> */ B(CallProperty0), R(8), R(9), U8(7),
                B(Star), R(16),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(16), U8(1),
                B(LdaNamedProperty), R(16), U8(7), U8(9),
                B(JumpIfToBooleanTrue), U8(67),
                B(LdaNamedProperty), R(16), U8(8), U8(11),
                B(Star), R(16),
                B(LdaFalse),
                B(Star), R(12),
                B(Mov), R(16), R(1),
  /*   22 E> */ B(StackCheck),
  /*   31 S> */ B(Mov), R(1), R(3),
  /*   42 S> */ B(LdaFalse),
                B(Star), R(19),
                B(Mov), R(0), R(17),
                B(Mov), R(3), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorYield), R(17), U8(3),
  /*   42 E> */ B(SuspendGenerator), R(0), R(0), U8(17), U8(1),
                B(ResumeGenerator), R(0), R(0), U8(17),
                B(Star), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(9), U8(2), I8(0),
                B(Ldar), R(17),
  /*   42 E> */ B(Throw),
                B(LdaSmi), I8(1),
                B(Star), R(13),
                B(Mov), R(17), R(14),
                B(Jump), U8(20),
                B(Ldar), R(17),
                B(JumpLoop), U8(84), I8(0),
                B(LdaSmi), I8(-1),
                B(Star), R(14),
                B(Star), R(13),
                B(Jump), U8(7),
                B(Star), R(14),
                B(LdaZero),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(15),
                B(Ldar), R(12),
                B(JumpIfToBooleanTrue), U8(60),
                B(LdaNamedProperty), R(9), U8(11), U8(13),
                B(Star), R(17),
                B(JumpIfUndefined), U8(52),
                B(JumpIfNull), U8(50),
                B(Mov), R(context), R(18),
                B(TestTypeOf), U8(6),
                B(JumpIfTrue), U8(18),
                B(Wide), B(LdaSmi), I16(159),
                B(Star), R(19),
                B(LdaConstant), U8(12),
                B(Star), R(20),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(19), U8(2),
                B(Throw),
                B(CallProperty0), R(17), R(9), U8(15),
                B(JumpIfJSReceiver), U8(21),
                B(Star), R(19),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(19), U8(1),
                B(Jump), U8(12),
                B(Star), R(18),
                B(LdaZero),
                B(TestReferenceEqual), R(13),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(18),
                B(ReThrow),
                B(Ldar), R(15),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
                B(Jump), U8(14),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaSmi), I8(1),
                B(Star), R(4),
                B(Mov), R(14), R(5),
                B(Jump), U8(51),
                B(Jump), U8(36),
                B(Star), R(8),
                B(CreateCatchContext), R(8), U8(15),
                B(Star), R(7),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(7),
                B(PushContext), R(8),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(10),
                B(Mov), R(0), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(9), U8(2),
                B(PopContext), R(8),
                B(Star), R(5),
                B(LdaSmi), I8(2),
                B(Star), R(4),
                B(Jump), U8(15),
                B(LdaSmi), I8(-1),
                B(Star), R(5),
                B(Star), R(4),
                B(Jump), U8(7),
                B(Star), R(5),
                B(LdaZero),
                B(Star), R(4),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
                B(Ldar), R(6),
                B(SetPendingMessage),
                B(Ldar), R(4),
                B(SwitchOnSmiNoFeedback), U8(17), U8(3), I8(0),
                B(Jump), U8(22),
                B(Ldar), R(5),
                B(ReThrow),
                B(LdaTrue),
                B(Star), R(9),
                B(Mov), R(0), R(7),
                B(Mov), R(5), R(8),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(7), U8(3),
  /*   50 S> */ B(Return),
                B(Ldar), R(5),
  /*   50 S> */ B(Return),
                B(LdaUndefined),
  /*   50 S> */ B(Return),
]
constant pool: [
  Smi [30],
  Smi [149],
  Smi [16],
  Smi [7],
  ARRAY_BOILERPLATE_DESCRIPTION_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  Smi [16],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  Smi [6],
  Smi [9],
  SCOPE_INFO_TYPE,
  Smi [277],
  Smi [6],
  Smi [9],
  Smi [23],
]
handlers: [
  [20, 318, 326],
  [23, 282, 284],
  [93, 180, 188],
  [214, 247, 249],
]

---
snippet: "
  function* g() { yield 42 }
  async function* f() { yield* g() }
  f();
"
frame size: 19
parameter count: 1
bytecode array length: 475
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(5),
                B(Mov), R(closure), R(1),
                B(Mov), R(this), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(1), U8(2),
                B(Star), R(0),
  /*   44 E> */ B(StackCheck),
                B(Mov), R(context), R(3),
                B(Mov), R(context), R(4),
                B(Ldar), R(0),
  /*   44 E> */ B(SuspendGenerator), R(0), R(0), U8(5), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(5),
                B(Star), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(5), U8(2), I8(0),
                B(Ldar), R(5),
  /*   44 E> */ B(Throw),
                B(LdaSmi), I8(1),
                B(Star), R(1),
                B(Mov), R(5), R(2),
                B(JumpConstant), U8(18),
  /*   49 S> */ B(LdaGlobal), U8(7), U8(0),
                B(Star), R(9),
  /*   56 E> */ B(CallUndefinedReceiver0), R(9), U8(2),
                B(Star), R(10),
                B(LdaNamedProperty), R(10), U8(8), U8(4),
                B(JumpIfUndefined), U8(17),
                B(JumpIfNull), U8(15),
                B(Star), R(11),
                B(CallProperty0), R(11), R(10), U8(6),
                B(JumpIfJSReceiver), U8(23),
                B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
                B(LdaNamedProperty), R(10), U8(9), U8(8),
                B(Star), R(11),
                B(CallProperty0), R(11), R(10), U8(10),
                B(Star), R(11),
                B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(11), U8(1),
                B(Star), R(7),
                B(LdaNamedProperty), R(7), U8(10), U8(12),
                B(Star), R(9),
                B(LdaUndefined),
                B(Star), R(8),
                B(LdaZero),
                B(Star), R(6),
                B(Ldar), R(6),
                B(SwitchOnSmiNoFeedback), U8(11), U8(2), I8(1),
                B(CallProperty1), R(9), R(7), R(8), U8(14),
                B(Jump), U8(146),
                B(LdaNamedProperty), R(7), U8(13), U8(16),
                B(JumpIfUndefined), U8(13),
                B(JumpIfNull), U8(11),
                B(Star), R(12),
                B(CallProperty1), R(12), R(7), R(8), U8(18),
                B(Jump), U8(129),
                B(Mov), R(0), R(12),
                B(Mov), R(8), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorAwaitUncaught), R(12), U8(2),
  /*   49 E> */ B(SuspendGenerator), R(0), R(0), U8(12), U8(1),
                B(ResumeGenerator), R(0), R(0), U8(12),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(13),
                B(LdaZero),
                B(TestReferenceEqual), R(13),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(12),
                B(ReThrow),
                B(LdaSmi), I8(1),
                B(Star), R(1),
                B(Mov), R(12), R(2),
                B(Jump), U8(245),
                B(LdaNamedProperty), R(7), U8(14), U8(20),
                B(JumpIfUndefined), U8(13),
                B(JumpIfNull), U8(11),
                B(Star), R(14),
                B(CallProperty1), R(14), R(7), R(8), U8(22),
                B(Jump), U8(68),
                B(LdaNamedProperty), R(7), U8(13), U8(24),
                B(JumpIfUndefined), U8(57),
                B(JumpIfNull), U8(55),
                B(Star), R(14),
                B(CallProperty0), R(14), R(7), U8(26),
                B(Jump), U8(2),
                B(Star), R(15),
                B(Mov), R(0), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorAwaitUncaught), R(14), U8(2),
  /*   49 E> */ B(SuspendGenerator), R(0), R(0), U8(14), U8(2),
                B(ResumeGenerator), R(0), R(0), U8(14),
                B(Star), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(15),
                B(LdaZero),
                B(TestReferenceEqual), R(15),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(14),
                B(ReThrow),
                B(Ldar), R(14),
                B(JumpIfJSReceiver), U8(9),
                B(Star), R(16),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(16), U8(1),
                B(CallRuntime), U16(Runtime::kThrowThrowMethodMissing), R(0), U8(0),
                B(Star), R(15),
                B(Mov), R(0), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorAwaitUncaught), R(14), U8(2),
  /*   49 E> */ B(SuspendGenerator), R(0), R(0), U8(14), U8(3),
                B(ResumeGenerator), R(0), R(0), U8(14),
                B(Star), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(15),
                B(LdaZero),
                B(TestReferenceEqual), R(15),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(14),
                B(ReThrow),
                B(Ldar), R(14),
                B(Mov), R(14), R(5),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
                B(LdaNamedProperty), R(5), U8(15), U8(28),
                B(JumpIfToBooleanTrue), U8(38),
                B(LdaNamedProperty), R(5), U8(16), U8(30),
                B(Star), R(17),
                B(LdaFalse),
                B(Star), R(18),
                B(Mov), R(0), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorYield), R(16), U8(3),
  /*   49 E> */ B(SuspendGenerator), R(0), R(0), U8(16), U8(4),
                B(ResumeGenerator), R(0), R(0), U8(16),
                B(Star), R(8),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(Star), R(6),
                B(JumpLoop), U8(242), I8(0),
                B(LdaNamedProperty), R(5), U8(16), U8(32),
                B(Star), R(7),
                B(LdaSmi), I8(1),
                B(TestReferenceEqual), R(6),
                B(JumpIfFalse), U8(11),
                B(LdaSmi), I8(1),
                B(Star), R(1),
                B(Mov), R(7), R(2),
                B(Jump), U8(53),
                B(Ldar), R(7),
                B(Jump), U8(36),
                B(Star), R(5),
                B(CreateCatchContext), R(5), U8(17),
                B(Star), R(4),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(4),
                B(PushContext), R(5),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(7),
                B(Mov), R(0), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorReject), R(6), U8(2),
                B(PopContext), R(5),
                B(Star), R(2),
                B(LdaSmi), I8(2),
                B(Star), R(1),
                B(Jump), U8(15),
                B(LdaSmi), I8(-1),
                B(Star), R(2),
                B(Star), R(1),
                B(Jump), U8(7),
                B(Star), R(2),
                B(LdaZero),
                B(Star), R(1),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(0), U8(1),
                B(Ldar), R(3),
                B(SetPendingMessage),
                B(Ldar), R(1),
                B(SwitchOnSmiNoFeedback), U8(19), U8(3), I8(0),
                B(Jump), U8(22),
                B(Ldar), R(2),
                B(ReThrow),
                B(LdaTrue),
                B(Star), R(6),
                B(Mov), R(0), R(4),
                B(Mov), R(2), R(5),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncGeneratorResolve), R(4), U8(3),
  /*   60 S> */ B(Return),
                B(Ldar), R(2),
  /*   60 S> */ B(Return),
                B(LdaUndefined),
  /*   60 S> */ B(Return),
]
constant pool: [
  Smi [30],
  Smi [162],
  Smi [238],
  Smi [288],
  Smi [347],
  Smi [16],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["g"],
  SYMBOL_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  Smi [11],
  Smi [72],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["throw"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  SCOPE_INFO_TYPE,
  Smi [380],
  Smi [6],
  Smi [9],
  Smi [23],
]
handlers: [
  [20, 421, 429],
  [23, 383, 387],
]

