#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
module: yes
top level: yes

---
snippet: "
  import \"bar\";
"
frame size: 5
parameter count: 2
bytecode array length: 120
bytecodes: [
                B(Mov), R(new_target), R(0),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(2),
                B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(2),
                B(Mov), R(closure), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
                B(PushContext), R(2),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(StaCurrentContextSlot), U8(4),
  /*    0 E> */ B(StackCheck),
                B(Star), R(0),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(3),
                B(LdaZero),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(Ldar), R(3),
  /*   13 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(3),
  /*    0 E> */ B(Throw),
                B(Ldar), R(3),
  /*   13 S> */ B(Return),
                B(Ldar), R(3),
                B(StaCurrentContextSlot), U8(5),
                B(LdaCurrentContextSlot), U8(5),
                B(Star), R(3),
                B(LdaTrue),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
  /*   13 S> */ B(Return),
]
constant pool: [
  Smi [59],
  FIXED_ARRAY_TYPE,
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  import {foo} from \"bar\";
"
frame size: 5
parameter count: 2
bytecode array length: 120
bytecodes: [
                B(Mov), R(new_target), R(0),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(2),
                B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(2),
                B(Mov), R(closure), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
                B(PushContext), R(2),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(StaCurrentContextSlot), U8(4),
  /*    0 E> */ B(StackCheck),
                B(Star), R(0),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(3),
                B(LdaZero),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(Ldar), R(3),
  /*   24 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(3),
  /*    0 E> */ B(Throw),
                B(Ldar), R(3),
  /*   24 S> */ B(Return),
                B(Ldar), R(3),
                B(StaCurrentContextSlot), U8(5),
                B(LdaCurrentContextSlot), U8(5),
                B(Star), R(3),
                B(LdaTrue),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
  /*   24 S> */ B(Return),
]
constant pool: [
  Smi [59],
  FIXED_ARRAY_TYPE,
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  import {foo as goo} from \"bar\";
  goo(42);
  { let x; { goo(42) } };
"
frame size: 6
parameter count: 2
bytecode array length: 164
bytecodes: [
                B(Mov), R(new_target), R(0),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(2),
                B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(2),
                B(Mov), R(closure), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
                B(PushContext), R(2),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(StaCurrentContextSlot), U8(4),
  /*    0 E> */ B(StackCheck),
                B(Star), R(0),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(3),
                B(LdaZero),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(Ldar), R(3),
  /*   64 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(3),
  /*    0 E> */ B(Throw),
                B(Ldar), R(3),
  /*   64 S> */ B(Return),
  /*   32 S> */ B(LdaModuleVariable), I8(-1), U8(0),
                B(ThrowReferenceErrorIfHole), U8(4),
                B(Star), R(3),
                B(LdaSmi), I8(42),
                B(Star), R(4),
  /*   32 E> */ B(CallUndefinedReceiver1), R(3), R(4), U8(3),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(5),
                B(PushContext), R(3),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
  /*   47 S> */ B(LdaUndefined),
  /*   47 E> */ B(StaCurrentContextSlot), U8(4),
  /*   52 S> */ B(LdaModuleVariable), I8(-1), U8(1),
                B(ThrowReferenceErrorIfHole), U8(4),
                B(Star), R(4),
                B(LdaSmi), I8(42),
                B(Star), R(5),
  /*   52 E> */ B(CallUndefinedReceiver1), R(4), R(5), U8(5),
                B(StaContextSlot), R(3), U8(5), U8(0),
                B(PopContext), R(3),
                B(LdaCurrentContextSlot), U8(5),
                B(Star), R(3),
                B(LdaTrue),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
  /*   64 S> */ B(Return),
]
constant pool: [
  Smi [59],
  FIXED_ARRAY_TYPE,
  Smi [10],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["goo"],
  FIXED_ARRAY_TYPE,
]
handlers: [
]

---
snippet: "
  export var foo = 42;
  foo++;
  { let x; { foo++ } };
"
frame size: 5
parameter count: 2
bytecode array length: 162
bytecodes: [
                B(Mov), R(new_target), R(0),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(2),
                B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(2),
                B(Mov), R(closure), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
                B(PushContext), R(2),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(StaCurrentContextSlot), U8(4),
  /*    0 E> */ B(StackCheck),
                B(Star), R(0),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(3),
                B(LdaZero),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(Ldar), R(3),
  /*   49 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(3),
  /*    0 E> */ B(Throw),
                B(Ldar), R(3),
  /*   49 S> */ B(Return),
  /*   17 S> */ B(LdaSmi), I8(42),
  /*   17 E> */ B(StaModuleVariable), I8(1), U8(0),
  /*   21 S> */ B(LdaModuleVariable), I8(1), U8(0),
                B(Inc), U8(3),
  /*   24 E> */ B(StaModuleVariable), I8(1), U8(0),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(4),
                B(PushContext), R(3),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
  /*   34 S> */ B(LdaUndefined),
  /*   34 E> */ B(StaCurrentContextSlot), U8(4),
  /*   39 S> */ B(LdaModuleVariable), I8(1), U8(1),
                B(ToNumber), R(4), U8(4),
                B(Ldar), R(4),
                B(Inc), U8(4),
  /*   42 E> */ B(StaModuleVariable), I8(1), U8(1),
                B(Ldar), R(4),
                B(StaContextSlot), R(3), U8(5), U8(0),
                B(PopContext), R(3),
                B(LdaCurrentContextSlot), U8(5),
                B(Star), R(3),
                B(LdaTrue),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
  /*   49 S> */ B(Return),
]
constant pool: [
  Smi [59],
  FIXED_ARRAY_TYPE,
  Smi [10],
  Smi [7],
  FIXED_ARRAY_TYPE,
]
handlers: [
]

---
snippet: "
  export let foo = 42;
  foo++;
  { let x; { foo++ } };
"
frame size: 5
parameter count: 2
bytecode array length: 166
bytecodes: [
                B(Mov), R(new_target), R(0),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(2),
                B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(2),
                B(Mov), R(closure), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
                B(PushContext), R(2),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(StaCurrentContextSlot), U8(4),
                B(Star), R(0),
                B(LdaTheHole),
                B(StaModuleVariable), I8(1), U8(0),
  /*    0 E> */ B(StackCheck),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(3),
                B(LdaZero),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(Ldar), R(3),
  /*   49 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(3),
  /*    0 E> */ B(Throw),
                B(Ldar), R(3),
  /*   49 S> */ B(Return),
  /*   17 S> */ B(LdaSmi), I8(42),
  /*   17 E> */ B(StaModuleVariable), I8(1), U8(0),
  /*   21 S> */ B(LdaModuleVariable), I8(1), U8(0),
                B(Inc), U8(3),
  /*   24 E> */ B(StaModuleVariable), I8(1), U8(0),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(4),
                B(PushContext), R(3),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
  /*   34 S> */ B(LdaUndefined),
  /*   34 E> */ B(StaCurrentContextSlot), U8(4),
  /*   39 S> */ B(LdaModuleVariable), I8(1), U8(1),
                B(ToNumber), R(4), U8(4),
                B(Ldar), R(4),
                B(Inc), U8(4),
  /*   42 E> */ B(StaModuleVariable), I8(1), U8(1),
                B(Ldar), R(4),
                B(StaContextSlot), R(3), U8(5), U8(0),
                B(PopContext), R(3),
                B(LdaCurrentContextSlot), U8(5),
                B(Star), R(3),
                B(LdaTrue),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
  /*   49 S> */ B(Return),
]
constant pool: [
  Smi [63],
  FIXED_ARRAY_TYPE,
  Smi [10],
  Smi [7],
  FIXED_ARRAY_TYPE,
]
handlers: [
]

---
snippet: "
  export const foo = 42;
  foo++;
  { let x; { foo++ } };
"
frame size: 5
parameter count: 2
bytecode array length: 170
bytecodes: [
                B(Mov), R(new_target), R(0),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(2),
                B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(2),
                B(Mov), R(closure), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
                B(PushContext), R(2),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(StaCurrentContextSlot), U8(4),
                B(Star), R(0),
                B(LdaTheHole),
                B(StaModuleVariable), I8(1), U8(0),
  /*    0 E> */ B(StackCheck),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(3),
                B(LdaZero),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(Ldar), R(3),
  /*   51 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(3),
  /*    0 E> */ B(Throw),
                B(Ldar), R(3),
  /*   51 S> */ B(Return),
  /*   19 S> */ B(LdaSmi), I8(42),
  /*   19 E> */ B(StaModuleVariable), I8(1), U8(0),
  /*   23 S> */ B(LdaModuleVariable), I8(1), U8(0),
                B(Inc), U8(3),
  /*   26 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(4),
                B(PushContext), R(3),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
  /*   36 S> */ B(LdaUndefined),
  /*   36 E> */ B(StaCurrentContextSlot), U8(4),
  /*   41 S> */ B(LdaModuleVariable), I8(1), U8(1),
                B(ToNumber), R(4), U8(4),
                B(Ldar), R(4),
                B(Inc), U8(4),
  /*   44 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
                B(Ldar), R(4),
                B(StaContextSlot), R(3), U8(5), U8(0),
                B(PopContext), R(3),
                B(LdaCurrentContextSlot), U8(5),
                B(Star), R(3),
                B(LdaTrue),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
  /*   51 S> */ B(Return),
]
constant pool: [
  Smi [63],
  FIXED_ARRAY_TYPE,
  Smi [10],
  Smi [7],
  FIXED_ARRAY_TYPE,
]
handlers: [
]

---
snippet: "
  export default (function () {});
"
frame size: 5
parameter count: 2
bytecode array length: 131
bytecodes: [
                B(Mov), R(new_target), R(0),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(2),
                B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(2),
                B(Mov), R(closure), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
                B(PushContext), R(2),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(StaCurrentContextSlot), U8(4),
                B(Star), R(0),
                B(LdaTheHole),
                B(StaModuleVariable), I8(1), U8(0),
  /*    0 E> */ B(StackCheck),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(3),
                B(LdaZero),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(Ldar), R(3),
  /*   32 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(3),
  /*    0 E> */ B(Throw),
                B(Ldar), R(3),
  /*   32 S> */ B(Return),
                B(Ldar), R(3),
                B(StaCurrentContextSlot), U8(5),
                B(CreateClosure), U8(4), U8(3), U8(0),
                B(StaModuleVariable), I8(1), U8(0),
                B(LdaCurrentContextSlot), U8(5),
                B(Star), R(3),
                B(LdaTrue),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
  /*   32 S> */ B(Return),
]
constant pool: [
  Smi [63],
  FIXED_ARRAY_TYPE,
  Smi [10],
  Smi [7],
  SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

---
snippet: "
  export default (class {});
"
frame size: 8
parameter count: 2
bytecode array length: 164
bytecodes: [
                B(Mov), R(new_target), R(0),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(2),
                B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(2),
                B(Mov), R(closure), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
                B(PushContext), R(2),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(StaCurrentContextSlot), U8(4),
                B(Star), R(0),
                B(LdaTheHole),
                B(StaModuleVariable), I8(1), U8(0),
  /*    0 E> */ B(StackCheck),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(3),
                B(LdaZero),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(Ldar), R(3),
  /*   26 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(3),
  /*    0 E> */ B(Throw),
                B(Ldar), R(3),
  /*   26 S> */ B(Return),
                B(Ldar), R(3),
                B(StaCurrentContextSlot), U8(5),
                B(CreateClosure), U8(4), U8(3), U8(0),
                B(Star), R(3),
                B(LdaTheHole),
                B(Star), R(4),
                B(LdaSmi), I8(16),
                B(Star), R(6),
                B(LdaSmi), I8(24),
                B(Star), R(7),
                B(Mov), R(3), R(5),
                B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4),
                B(Star), R(4),
                B(CallRuntime), U16(Runtime::kInstallClassNameAccessor), R(3), U8(1),
                B(CallRuntime), U16(Runtime::kToFastProperties), R(3), U8(1),
                B(StaModuleVariable), I8(1), U8(0),
                B(LdaCurrentContextSlot), U8(5),
                B(Star), R(3),
                B(LdaTrue),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
  /*   26 S> */ B(Return),
]
constant pool: [
  Smi [63],
  FIXED_ARRAY_TYPE,
  Smi [10],
  Smi [7],
  SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

---
snippet: "
  export {foo as goo} from \"bar\"
"
frame size: 5
parameter count: 2
bytecode array length: 120
bytecodes: [
                B(Mov), R(new_target), R(0),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(2),
                B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(2),
                B(Mov), R(closure), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
                B(PushContext), R(2),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(StaCurrentContextSlot), U8(4),
  /*    0 E> */ B(StackCheck),
                B(Star), R(0),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(3),
                B(LdaZero),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(Ldar), R(3),
  /*   30 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(3),
  /*    0 E> */ B(Throw),
                B(Ldar), R(3),
  /*   30 S> */ B(Return),
                B(Ldar), R(3),
                B(StaCurrentContextSlot), U8(5),
                B(LdaCurrentContextSlot), U8(5),
                B(Star), R(3),
                B(LdaTrue),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
  /*   30 S> */ B(Return),
]
constant pool: [
  Smi [59],
  FIXED_ARRAY_TYPE,
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  export * from \"bar\"
"
frame size: 5
parameter count: 2
bytecode array length: 120
bytecodes: [
                B(Mov), R(new_target), R(0),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(2),
                B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(2),
                B(Mov), R(closure), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
                B(PushContext), R(2),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(StaCurrentContextSlot), U8(4),
  /*    0 E> */ B(StackCheck),
                B(Star), R(0),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(3),
                B(LdaZero),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(Ldar), R(3),
  /*   19 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(3),
  /*    0 E> */ B(Throw),
                B(Ldar), R(3),
  /*   19 S> */ B(Return),
                B(Ldar), R(3),
                B(StaCurrentContextSlot), U8(5),
                B(LdaCurrentContextSlot), U8(5),
                B(Star), R(3),
                B(LdaTrue),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
  /*   19 S> */ B(Return),
]
constant pool: [
  Smi [59],
  FIXED_ARRAY_TYPE,
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  import * as foo from \"bar\"
  foo.f(foo, foo.x);
"
frame size: 7
parameter count: 2
bytecode array length: 158
bytecodes: [
                B(Mov), R(new_target), R(0),
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(0), U8(1),
                B(PushContext), R(2),
                B(RestoreGeneratorState), R(0),
                B(Star), R(1),
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
                B(LdaSmi), I8(79),
                B(Star), R(2),
                B(CallRuntime), U16(Runtime::kAbort), R(2), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(2),
                B(Mov), R(closure), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(3),
                B(PushContext), R(2),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(StaCurrentContextSlot), U8(4),
                B(Star), R(0),
                B(LdaZero),
                B(Star), R(3),
                B(CallRuntime), U16(Runtime::kGetModuleNamespace), R(3), U8(1),
                B(StaCurrentContextSlot), U8(5),
  /*    0 E> */ B(StackCheck),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(3),
                B(LdaZero),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(Ldar), R(3),
  /*   45 S> */ B(Return),
                B(RestoreGeneratorRegisters), R(0), R(0), U8(3),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(0), U8(1),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(3),
  /*    0 E> */ B(Throw),
                B(Ldar), R(3),
  /*   45 S> */ B(Return),
  /*   27 S> */ B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(4),
  /*   30 E> */ B(LdaNamedProperty), R(4), U8(4), U8(5),
                B(Star), R(3),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(5),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(6),
  /*   41 E> */ B(LdaNamedProperty), R(6), U8(5), U8(7),
                B(Star), R(6),
  /*   31 E> */ B(CallProperty2), R(3), R(4), R(5), R(6), U8(3),
                B(StaCurrentContextSlot), U8(6),
                B(LdaCurrentContextSlot), U8(6),
                B(Star), R(3),
                B(LdaTrue),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(3), U8(2),
  /*   45 S> */ B(Return),
]
constant pool: [
  Smi [69],
  FIXED_ARRAY_TYPE,
  Smi [10],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["f"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
]
handlers: [
]

