#
# Autogenerated by generate-bytecode-expectations.
#

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

---
snippet: "
  async function f() {
    for await (let x of [1, 2, 3]) {}
  }
  f();
"
frame size: 25
parameter count: 1
bytecode array length: 646
bytecodes: [
                B(Mov), R(new_target), R(11),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(11), U8(1),
                B(PushContext), R(13),
                B(RestoreGeneratorState), R(11),
                B(Star), R(12),
                B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0),
                B(LdaSmi), I8(81),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(Mov), R(closure), R(13),
                B(Mov), R(this), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2),
                B(Star), R(2),
  /*   16 E> */ B(StackCheck),
                B(LdaUndefined),
                B(Star), R(13),
                B(CallJSRuntime), U8(%async_function_promise_create), R(13), U8(1),
                B(Star), R(10),
                B(Mov), R(2), R(11),
                B(Mov), R(context), R(15),
                B(Mov), R(context), R(16),
                B(LdaZero),
                B(Star), R(6),
                B(Mov), R(context), R(19),
                B(Mov), R(context), R(20),
  /*   43 S> */ B(CreateArrayLiteral), U8(3), U8(4), U8(37),
                B(Star), R(21),
                B(LdaNamedProperty), R(21), U8(4), U8(9),
                B(JumpIfUndefined), U8(17),
                B(JumpIfNull), U8(15),
                B(Star), R(22),
                B(CallProperty0), R(22), R(21), U8(11),
                B(JumpIfJSReceiver), U8(23),
                B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
                B(LdaNamedProperty), R(21), U8(5), U8(5),
                B(Star), R(22),
                B(CallProperty0), R(22), R(21), U8(7),
                B(Star), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(22), U8(1),
                B(Star), R(4),
                B(Ldar), R(12),
                B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(0),
                B(LdaSmi), I8(-2),
  /*   43 E> */ B(TestEqualStrictNoFeedback), R(12),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(81),
                B(Star), R(21),
                B(CallRuntime), U16(Runtime::kAbort), R(21), U8(1),
  /*   40 S> */ B(LdaNamedProperty), R(4), U8(7), U8(15),
                B(Star), R(21),
                B(CallProperty0), R(21), R(4), U8(13),
                B(Star), R(21),
                B(Mov), R(11), R(22),
                B(Mov), R(21), R(23),
                B(Mov), R(10), R(24),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(22), U8(3),
                B(Star), R(21),
                B(LdaZero),
                B(SuspendGenerator), R(11), R(0), U8(21), U8(2),
                B(Ldar), R(21),
  /*   57 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(11), R(0), U8(21),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
                B(Star), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
                B(Star), R(23),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(23),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(22),
  /*   40 E> */ B(ReThrow),
                B(Mov), R(22), R(5),
  /*   40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
                B(LdaNamedProperty), R(5), U8(8), U8(17),
                B(JumpIfToBooleanTrue), U8(25),
                B(LdaNamedProperty), R(5), U8(9), U8(19),
                B(Star), R(7),
                B(LdaSmi), I8(2),
                B(Star), R(6),
                B(Mov), R(7), R(3),
  /*   23 E> */ B(StackCheck),
                B(Mov), R(3), R(0),
                B(LdaZero),
                B(Star), R(6),
                B(JumpLoop), U8(126), I8(0),
                B(Jump), U8(40),
                B(Star), R(21),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(21), U8(10), U8(11),
                B(Star), R(20),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(PushContext), R(21),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(6), U8(21),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(6),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(22),
                B(CallRuntime), U16(Runtime::kReThrow), R(22), U8(1),
                B(PopContext), R(21),
                B(LdaSmi), I8(-1),
                B(Star), R(17),
                B(Jump), U8(7),
                B(Star), R(18),
                B(LdaZero),
                B(Star), R(17),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(19),
                B(LdaZero),
                B(TestEqualStrict), R(6), U8(22),
                B(JumpIfTrue), U8(217),
                B(LdaNamedProperty), R(4), U8(12), U8(23),
                B(Star), R(8),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(206),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(6), U8(26),
                B(JumpIfFalse), U8(118),
                B(Ldar), R(8),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(131),
                B(Star), R(20),
                B(LdaConstant), U8(13),
                B(Star), R(21),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2),
                B(Throw),
                B(Mov), R(context), R(20),
                B(Mov), R(8), R(21),
                B(Mov), R(4), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2),
                B(Star), R(21),
                B(Mov), R(11), R(22),
                B(Mov), R(21), R(23),
                B(Mov), R(10), R(24),
                B(CallJSRuntime), U8(%async_function_await_caught), R(22), U8(3),
                B(Star), R(21),
                B(LdaSmi), I8(1),
                B(SuspendGenerator), R(11), R(0), U8(21), U8(2),
                B(Ldar), R(21),
  /*   57 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(11), R(0), U8(21),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
                B(Star), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
                B(Star), R(23),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(23),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(22),
                B(ReThrow),
                B(Ldar), R(22),
                B(Jump), U8(20),
                B(Star), R(21),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(21), U8(10), U8(14),
                B(Star), R(20),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(PushContext), R(21),
                B(PopContext), R(21),
                B(Jump), U8(83),
                B(Mov), R(8), R(20),
                B(Mov), R(4), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(20), U8(2),
                B(Star), R(20),
                B(Mov), R(11), R(21),
                B(Mov), R(20), R(22),
                B(Mov), R(10), R(23),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(3),
                B(Star), R(20),
                B(LdaSmi), I8(2),
                B(SuspendGenerator), R(11), R(0), U8(20), U8(2),
                B(Ldar), R(20),
  /*   57 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(11), R(0), U8(20),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
                B(Star), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
                B(Star), R(22),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(22),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(21),
                B(ReThrow),
                B(Mov), R(21), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1),
                B(Ldar), R(19),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(17),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(18),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(17),
                B(LdaUndefined),
                B(Star), R(19),
                B(Mov), R(10), R(18),
                B(CallJSRuntime), U8(%promise_resolve), R(17), U8(3),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(10), R(14),
                B(Jump), U8(59),
                B(Jump), U8(45),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(10), U8(15),
                B(Star), R(16),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(16),
                B(PushContext), R(17),
                B(LdaUndefined),
                B(Star), R(18),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(20),
                B(LdaFalse),
                B(Star), R(21),
                B(Mov), R(10), R(19),
                B(CallJSRuntime), U8(%promise_internal_reject), R(18), U8(4),
                B(PopContext), R(17),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(10), R(14),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(13),
                B(Jump), U8(8),
                B(Star), R(14),
                B(LdaSmi), I8(1),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(15),
                B(LdaUndefined),
                B(Star), R(16),
                B(Mov), R(10), R(17),
                B(CallJSRuntime), U8(%async_function_promise_release), R(16), U8(2),
                B(Ldar), R(15),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(14),
  /*   57 S> */ B(Return),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaUndefined),
  /*   57 S> */ B(Return),
]
constant pool: [
  Smi [102],
  Smi [374],
  Smi [463],
  TUPLE2_TYPE,
  SYMBOL_TYPE,
  SYMBOL_TYPE,
  Smi [55],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [62, 601, 607],
  [65, 556, 558],
  [71, 288, 294],
  [74, 248, 250],
  [354, 421, 423],
]

---
snippet: "
  async function f() {
    for await (let x of [1, 2, 3]) { return x; }
  }
  f();
"
frame size: 25
parameter count: 1
bytecode array length: 678
bytecodes: [
                B(Mov), R(new_target), R(11),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(11), U8(1),
                B(PushContext), R(13),
                B(RestoreGeneratorState), R(11),
                B(Star), R(12),
                B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0),
                B(LdaSmi), I8(81),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(Mov), R(closure), R(13),
                B(Mov), R(this), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2),
                B(Star), R(2),
  /*   16 E> */ B(StackCheck),
                B(LdaUndefined),
                B(Star), R(13),
                B(CallJSRuntime), U8(%async_function_promise_create), R(13), U8(1),
                B(Star), R(10),
                B(Mov), R(2), R(11),
                B(Mov), R(context), R(15),
                B(Mov), R(context), R(16),
                B(LdaZero),
                B(Star), R(6),
                B(Mov), R(context), R(19),
                B(Mov), R(context), R(20),
  /*   43 S> */ B(CreateArrayLiteral), U8(3), U8(4), U8(37),
                B(Star), R(21),
                B(LdaNamedProperty), R(21), U8(4), U8(9),
                B(JumpIfUndefined), U8(17),
                B(JumpIfNull), U8(15),
                B(Star), R(22),
                B(CallProperty0), R(22), R(21), U8(11),
                B(JumpIfJSReceiver), U8(23),
                B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
                B(LdaNamedProperty), R(21), U8(5), U8(5),
                B(Star), R(22),
                B(CallProperty0), R(22), R(21), U8(7),
                B(Star), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(22), U8(1),
                B(Star), R(4),
                B(Ldar), R(12),
                B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(0),
                B(LdaSmi), I8(-2),
  /*   43 E> */ B(TestEqualStrictNoFeedback), R(12),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(81),
                B(Star), R(21),
                B(CallRuntime), U16(Runtime::kAbort), R(21), U8(1),
  /*   40 S> */ B(LdaNamedProperty), R(4), U8(7), U8(15),
                B(Star), R(21),
                B(CallProperty0), R(21), R(4), U8(13),
                B(Star), R(21),
                B(Mov), R(11), R(22),
                B(Mov), R(21), R(23),
                B(Mov), R(10), R(24),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(22), U8(3),
                B(Star), R(21),
                B(LdaZero),
                B(SuspendGenerator), R(11), R(0), U8(21), U8(2),
                B(Ldar), R(21),
  /*   68 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(11), R(0), U8(21),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
                B(Star), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
                B(Star), R(23),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(23),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(22),
  /*   40 E> */ B(ReThrow),
                B(Mov), R(22), R(5),
  /*   40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
                B(LdaNamedProperty), R(5), U8(8), U8(17),
                B(JumpIfToBooleanTrue), U8(27),
                B(LdaNamedProperty), R(5), U8(9), U8(19),
                B(Star), R(7),
                B(LdaSmi), I8(2),
                B(Star), R(6),
                B(Mov), R(7), R(3),
  /*   23 E> */ B(StackCheck),
                B(Mov), R(3), R(0),
  /*   56 S> */ B(LdaZero),
                B(Star), R(17),
                B(Mov), R(7), R(18),
                B(Jump), U8(54),
                B(Jump), U8(40),
                B(Star), R(21),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(21), U8(10), U8(11),
                B(Star), R(20),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(PushContext), R(21),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(6), U8(21),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(6),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(22),
                B(CallRuntime), U16(Runtime::kReThrow), R(22), U8(1),
                B(PopContext), R(21),
                B(LdaSmi), I8(-1),
                B(Star), R(17),
                B(Jump), U8(8),
                B(Star), R(18),
                B(LdaSmi), I8(1),
                B(Star), R(17),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(19),
                B(LdaZero),
                B(TestEqualStrict), R(6), U8(22),
                B(JumpIfTrue), U8(217),
                B(LdaNamedProperty), R(4), U8(12), U8(23),
                B(Star), R(8),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(206),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(6), U8(26),
                B(JumpIfFalse), U8(118),
                B(Ldar), R(8),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(131),
                B(Star), R(20),
                B(LdaConstant), U8(13),
                B(Star), R(21),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2),
                B(Throw),
                B(Mov), R(context), R(20),
                B(Mov), R(8), R(21),
                B(Mov), R(4), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2),
                B(Star), R(21),
                B(Mov), R(11), R(22),
                B(Mov), R(21), R(23),
                B(Mov), R(10), R(24),
                B(CallJSRuntime), U8(%async_function_await_caught), R(22), U8(3),
                B(Star), R(21),
                B(LdaSmi), I8(1),
                B(SuspendGenerator), R(11), R(0), U8(21), U8(2),
                B(Ldar), R(21),
  /*   68 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(11), R(0), U8(21),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
                B(Star), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
                B(Star), R(23),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(23),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(22),
                B(ReThrow),
                B(Ldar), R(22),
                B(Jump), U8(20),
                B(Star), R(21),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(21), U8(10), U8(14),
                B(Star), R(20),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(PushContext), R(21),
                B(PopContext), R(21),
                B(Jump), U8(83),
                B(Mov), R(8), R(20),
                B(Mov), R(4), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(20), U8(2),
                B(Star), R(20),
                B(Mov), R(11), R(21),
                B(Mov), R(20), R(22),
                B(Mov), R(10), R(23),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(3),
                B(Star), R(20),
                B(LdaSmi), I8(2),
                B(SuspendGenerator), R(11), R(0), U8(20), U8(2),
                B(Ldar), R(20),
  /*   68 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(11), R(0), U8(20),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
                B(Star), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
                B(Star), R(22),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(22),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(21),
                B(ReThrow),
                B(Mov), R(21), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1),
                B(Ldar), R(19),
                B(SetPendingMessage),
                B(Ldar), R(17),
                B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
                B(Jump), U8(13),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(18), R(14),
                B(Jump), U8(85),
                B(Ldar), R(18),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(17),
                B(LdaUndefined),
                B(Star), R(19),
                B(Mov), R(10), R(18),
                B(CallJSRuntime), U8(%promise_resolve), R(17), U8(3),
                B(LdaSmi), I8(1),
                B(Star), R(13),
                B(Mov), R(10), R(14),
                B(Jump), U8(60),
                B(Jump), U8(46),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(10), U8(17),
                B(Star), R(16),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(16),
                B(PushContext), R(17),
                B(LdaUndefined),
                B(Star), R(18),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(20),
                B(LdaFalse),
                B(Star), R(21),
                B(Mov), R(10), R(19),
                B(CallJSRuntime), U8(%promise_internal_reject), R(18), U8(4),
                B(PopContext), R(17),
                B(LdaSmi), I8(1),
                B(Star), R(13),
                B(Mov), R(10), R(14),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(13),
                B(Jump), U8(8),
                B(Star), R(14),
                B(LdaSmi), I8(2),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(15),
                B(LdaUndefined),
                B(Star), R(16),
                B(Mov), R(10), R(17),
                B(CallJSRuntime), U8(%async_function_promise_release), R(16), U8(2),
                B(Ldar), R(15),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(SwitchOnSmiNoFeedback), U8(18), U8(3), I8(0),
                B(Jump), U8(24),
                B(LdaUndefined),
                B(Star), R(16),
                B(Mov), R(10), R(17),
                B(Mov), R(14), R(18),
                B(CallJSRuntime), U8(%promise_resolve), R(16), U8(3),
                B(Ldar), R(10),
  /*   68 S> */ B(Return),
                B(Ldar), R(14),
  /*   68 S> */ B(Return),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaUndefined),
  /*   68 S> */ B(Return),
]
constant pool: [
  Smi [102],
  Smi [377],
  Smi [466],
  TUPLE2_TYPE,
  SYMBOL_TYPE,
  SYMBOL_TYPE,
  Smi [55],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [14],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [22],
  Smi [25],
]
handlers: [
  [62, 617, 623],
  [65, 571, 573],
  [71, 290, 296],
  [74, 250, 252],
  [357, 424, 426],
]

---
snippet: "
  async function f() {
    for await (let x of [10, 20, 30]) {
      if (x == 10) continue;
      if (x == 20) break;
    }
  }
  f();
"
frame size: 25
parameter count: 1
bytecode array length: 664
bytecodes: [
                B(Mov), R(new_target), R(11),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(11), U8(1),
                B(PushContext), R(13),
                B(RestoreGeneratorState), R(11),
                B(Star), R(12),
                B(SwitchOnSmiNoFeedback), U8(0), U8(3), I8(0),
                B(LdaSmi), I8(81),
                B(Star), R(13),
                B(CallRuntime), U16(Runtime::kAbort), R(13), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(Mov), R(closure), R(13),
                B(Mov), R(this), R(14),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(13), U8(2),
                B(Star), R(2),
  /*   16 E> */ B(StackCheck),
                B(LdaUndefined),
                B(Star), R(13),
                B(CallJSRuntime), U8(%async_function_promise_create), R(13), U8(1),
                B(Star), R(10),
                B(Mov), R(2), R(11),
                B(Mov), R(context), R(15),
                B(Mov), R(context), R(16),
                B(LdaZero),
                B(Star), R(6),
                B(Mov), R(context), R(19),
                B(Mov), R(context), R(20),
  /*   43 S> */ B(CreateArrayLiteral), U8(3), U8(4), U8(37),
                B(Star), R(21),
                B(LdaNamedProperty), R(21), U8(4), U8(9),
                B(JumpIfUndefined), U8(17),
                B(JumpIfNull), U8(15),
                B(Star), R(22),
                B(CallProperty0), R(22), R(21), U8(11),
                B(JumpIfJSReceiver), U8(23),
                B(CallRuntime), U16(Runtime::kThrowSymbolAsyncIteratorInvalid), R(0), U8(0),
                B(LdaNamedProperty), R(21), U8(5), U8(5),
                B(Star), R(22),
                B(CallProperty0), R(22), R(21), U8(7),
                B(Star), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_CreateAsyncFromSyncIterator), R(22), U8(1),
                B(Star), R(4),
                B(Ldar), R(12),
                B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(0),
                B(LdaSmi), I8(-2),
  /*   43 E> */ B(TestEqualStrictNoFeedback), R(12),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(81),
                B(Star), R(21),
                B(CallRuntime), U16(Runtime::kAbort), R(21), U8(1),
  /*   40 S> */ B(LdaNamedProperty), R(4), U8(7), U8(15),
                B(Star), R(21),
                B(CallProperty0), R(21), R(4), U8(13),
                B(Star), R(21),
                B(Mov), R(11), R(22),
                B(Mov), R(21), R(23),
                B(Mov), R(10), R(24),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(22), U8(3),
                B(Star), R(21),
                B(LdaZero),
                B(SuspendGenerator), R(11), R(0), U8(21), U8(2),
                B(Ldar), R(21),
  /*  114 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(11), R(0), U8(21),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
                B(Star), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
                B(Star), R(23),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(23),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(22),
  /*   40 E> */ B(ReThrow),
                B(Mov), R(22), R(5),
  /*   40 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
                B(LdaNamedProperty), R(5), U8(8), U8(17),
                B(JumpIfToBooleanTrue), U8(43),
                B(LdaNamedProperty), R(5), U8(9), U8(19),
                B(Star), R(7),
                B(LdaSmi), I8(2),
                B(Star), R(6),
                B(Mov), R(7), R(3),
  /*   23 E> */ B(StackCheck),
                B(Mov), R(3), R(0),
  /*   63 S> */ B(LdaSmi), I8(10),
  /*   69 E> */ B(TestEqual), R(0), U8(21),
                B(JumpIfFalse), U8(4),
  /*   76 S> */ B(Jump), U8(14),
  /*   90 S> */ B(LdaSmi), I8(20),
  /*   96 E> */ B(TestEqual), R(0), U8(22),
                B(JumpIfFalse), U8(4),
  /*  103 S> */ B(Jump), U8(8),
                B(LdaZero),
                B(Star), R(6),
                B(JumpLoop), U8(144), I8(0),
                B(Jump), U8(40),
                B(Star), R(21),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(21), U8(10), U8(11),
                B(Star), R(20),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(PushContext), R(21),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(6), U8(23),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(6),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(22),
                B(CallRuntime), U16(Runtime::kReThrow), R(22), U8(1),
                B(PopContext), R(21),
                B(LdaSmi), I8(-1),
                B(Star), R(17),
                B(Jump), U8(7),
                B(Star), R(18),
                B(LdaZero),
                B(Star), R(17),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(19),
                B(LdaZero),
                B(TestEqualStrict), R(6), U8(24),
                B(JumpIfTrue), U8(217),
                B(LdaNamedProperty), R(4), U8(12), U8(25),
                B(Star), R(8),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(206),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(6), U8(28),
                B(JumpIfFalse), U8(118),
                B(Ldar), R(8),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(131),
                B(Star), R(20),
                B(LdaConstant), U8(13),
                B(Star), R(21),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2),
                B(Throw),
                B(Mov), R(context), R(20),
                B(Mov), R(8), R(21),
                B(Mov), R(4), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(21), U8(2),
                B(Star), R(21),
                B(Mov), R(11), R(22),
                B(Mov), R(21), R(23),
                B(Mov), R(10), R(24),
                B(CallJSRuntime), U8(%async_function_await_caught), R(22), U8(3),
                B(Star), R(21),
                B(LdaSmi), I8(1),
                B(SuspendGenerator), R(11), R(0), U8(21), U8(2),
                B(Ldar), R(21),
  /*  114 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(11), R(0), U8(21),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
                B(Star), R(22),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
                B(Star), R(23),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(23),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(22),
                B(ReThrow),
                B(Ldar), R(22),
                B(Jump), U8(20),
                B(Star), R(21),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(21), U8(10), U8(14),
                B(Star), R(20),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(20),
                B(PushContext), R(21),
                B(PopContext), R(21),
                B(Jump), U8(83),
                B(Mov), R(8), R(20),
                B(Mov), R(4), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(20), U8(2),
                B(Star), R(20),
                B(Mov), R(11), R(21),
                B(Mov), R(20), R(22),
                B(Mov), R(10), R(23),
                B(CallJSRuntime), U8(%async_function_await_uncaught), R(21), U8(3),
                B(Star), R(20),
                B(LdaSmi), I8(2),
                B(SuspendGenerator), R(11), R(0), U8(20), U8(2),
                B(Ldar), R(20),
  /*  114 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(11), R(0), U8(20),
                B(LdaSmi), I8(-2),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
                B(Star), R(21),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
                B(Star), R(22),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(22),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(21),
                B(ReThrow),
                B(Mov), R(21), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1),
                B(Ldar), R(19),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(17),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(18),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(17),
                B(LdaUndefined),
                B(Star), R(19),
                B(Mov), R(10), R(18),
                B(CallJSRuntime), U8(%promise_resolve), R(17), U8(3),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(10), R(14),
                B(Jump), U8(59),
                B(Jump), U8(45),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(10), U8(15),
                B(Star), R(16),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(16),
                B(PushContext), R(17),
                B(LdaUndefined),
                B(Star), R(18),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(20),
                B(LdaFalse),
                B(Star), R(21),
                B(Mov), R(10), R(19),
                B(CallJSRuntime), U8(%promise_internal_reject), R(18), U8(4),
                B(PopContext), R(17),
                B(LdaZero),
                B(Star), R(13),
                B(Mov), R(10), R(14),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(13),
                B(Jump), U8(8),
                B(Star), R(14),
                B(LdaSmi), I8(1),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(15),
                B(LdaUndefined),
                B(Star), R(16),
                B(Mov), R(10), R(17),
                B(CallJSRuntime), U8(%async_function_promise_release), R(16), U8(2),
                B(Ldar), R(15),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(14),
  /*  114 S> */ B(Return),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaUndefined),
  /*  114 S> */ B(Return),
]
constant pool: [
  Smi [102],
  Smi [392],
  Smi [481],
  TUPLE2_TYPE,
  SYMBOL_TYPE,
  SYMBOL_TYPE,
  Smi [55],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [62, 619, 625],
  [65, 574, 576],
  [71, 306, 312],
  [74, 266, 268],
  [372, 439, 441],
]

---
snippet: "
  async function f() {
    var x = { 'a': 1, 'b': 2 };
    for (x['a'] of [1,2,3]) { return x['a']; }
  }
  f();
"
frame size: 19
parameter count: 1
bytecode array length: 432
bytecodes: [
  /*   16 E> */ B(StackCheck),
                B(LdaUndefined),
                B(Star), R(9),
                B(CallJSRuntime), U8(%async_function_promise_create), R(9), U8(1),
                B(Star), R(8),
                B(Mov), R(context), R(11),
                B(Mov), R(context), R(12),
  /*   31 S> */ B(CreateObjectLiteral), U8(0), U8(4), U8(41), R(13),
                B(Mov), R(13), R(1),
                B(LdaZero),
                B(Star), R(4),
                B(Mov), R(context), R(15),
                B(Mov), R(context), R(16),
  /*   68 S> */ B(CreateArrayLiteral), U8(1), U8(5), U8(37),
                B(Star), R(17),
                B(LdaNamedProperty), R(17), U8(2), U8(6),
                B(Star), R(18),
                B(CallProperty0), R(18), R(17), U8(8),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
                B(Star), R(2),
  /*   59 S> */ B(LdaNamedProperty), R(2), U8(3), U8(12),
                B(Star), R(17),
                B(CallProperty0), R(17), R(2), U8(10),
                B(Star), R(3),
  /*   59 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(3), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
                B(LdaNamedProperty), R(3), U8(4), U8(14),
                B(JumpIfToBooleanTrue), U8(31),
  /*   58 E> */ B(LdaNamedProperty), R(3), U8(5), U8(16),
                B(Star), R(5),
                B(LdaSmi), I8(2),
                B(Star), R(4),
                B(Ldar), R(5),
                B(StaNamedPropertySloppy), R(1), U8(6), U8(18),
  /*   53 E> */ B(StackCheck),
  /*   79 S> */ B(Nop),
  /*   87 E> */ B(LdaNamedProperty), R(1), U8(6), U8(20),
                B(Star), R(14),
                B(LdaZero),
                B(Star), R(13),
                B(Jump), U8(54),
                B(Jump), U8(40),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(7), U8(8),
                B(Star), R(16),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(16),
                B(PushContext), R(17),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(4), U8(22),
                B(JumpIfFalse), U8(6),
                B(LdaSmi), I8(1),
                B(Star), R(4),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(18),
                B(CallRuntime), U16(Runtime::kReThrow), R(18), U8(1),
                B(PopContext), R(17),
                B(LdaSmi), I8(-1),
                B(Star), R(13),
                B(Jump), U8(8),
                B(Star), R(14),
                B(LdaSmi), I8(1),
                B(Star), R(13),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(15),
                B(LdaZero),
                B(TestEqualStrict), R(4), U8(23),
                B(JumpIfTrue), U8(104),
                B(LdaNamedProperty), R(2), U8(9), U8(24),
                B(Star), R(6),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(93),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(4), U8(27),
                B(JumpIfFalse), U8(61),
                B(Ldar), R(6),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(131),
                B(Star), R(16),
                B(LdaConstant), U8(10),
                B(Star), R(17),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2),
                B(Throw),
                B(Mov), R(context), R(16),
                B(Mov), R(6), R(17),
                B(Mov), R(2), R(18),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(17), U8(2),
                B(Jump), U8(20),
                B(Star), R(17),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(17), U8(7), U8(11),
                B(Star), R(16),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(16),
                B(PushContext), R(17),
                B(PopContext), R(17),
                B(Jump), U8(27),
                B(Mov), R(6), R(16),
                B(Mov), R(2), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(2),
                B(Star), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(7), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(7), U8(1),
                B(Ldar), R(15),
                B(SetPendingMessage),
                B(Ldar), R(13),
                B(SwitchOnSmiNoFeedback), U8(12), U8(2), I8(0),
                B(Jump), U8(13),
                B(LdaZero),
                B(Star), R(9),
                B(Mov), R(14), R(10),
                B(Jump), U8(85),
                B(Ldar), R(14),
                B(ReThrow),
                B(LdaUndefined),
                B(Star), R(13),
                B(LdaUndefined),
                B(Star), R(15),
                B(Mov), R(8), R(14),
                B(CallJSRuntime), U8(%promise_resolve), R(13), U8(3),
                B(LdaSmi), I8(1),
                B(Star), R(9),
                B(Mov), R(8), R(10),
                B(Jump), U8(60),
                B(Jump), U8(46),
                B(Star), R(13),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(13), U8(7), U8(14),
                B(Star), R(12),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(12),
                B(PushContext), R(13),
                B(LdaUndefined),
                B(Star), R(14),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(16),
                B(LdaFalse),
                B(Star), R(17),
                B(Mov), R(8), R(15),
                B(CallJSRuntime), U8(%promise_internal_reject), R(14), U8(4),
                B(PopContext), R(13),
                B(LdaSmi), I8(1),
                B(Star), R(9),
                B(Mov), R(8), R(10),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(9),
                B(Jump), U8(8),
                B(Star), R(10),
                B(LdaSmi), I8(2),
                B(Star), R(9),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(11),
                B(LdaUndefined),
                B(Star), R(12),
                B(Mov), R(8), R(13),
                B(CallJSRuntime), U8(%async_function_promise_release), R(12), U8(2),
                B(Ldar), R(11),
                B(SetPendingMessage),
                B(Ldar), R(9),
                B(SwitchOnSmiNoFeedback), U8(15), U8(3), I8(0),
                B(Jump), U8(24),
                B(LdaUndefined),
                B(Star), R(12),
                B(Mov), R(8), R(13),
                B(Mov), R(10), R(14),
                B(CallJSRuntime), U8(%promise_resolve), R(12), U8(3),
                B(Ldar), R(8),
  /*   96 S> */ B(Return),
                B(Ldar), R(10),
  /*   96 S> */ B(Return),
                B(Ldar), R(10),
                B(ReThrow),
                B(LdaUndefined),
  /*   96 S> */ B(Return),
]
constant pool: [
  FIXED_ARRAY_TYPE,
  TUPLE2_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 ["a"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [14],
  FIXED_ARRAY_TYPE,
  Smi [6],
  Smi [22],
  Smi [25],
]
handlers: [
  [13, 371, 377],
  [16, 325, 327],
  [30, 157, 163],
  [33, 117, 119],
  [224, 234, 236],
]

