#
# Autogenerated by generate-bytecode-expectations.
#

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

---
snippet: "
  import \"bar\";
"
frame size: 5
parameter count: 2
bytecode array length: 62
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
                B(LdaConstant), U8(1),
                B(Star), R(3),
                B(Mov), R(arg0), R(2),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(2),
                B(PushContext), R(2),
                B(Mov), R(closure), R(3),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(Star), R(0),
  /*    0 E> */ B(StackCheck),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(3),
                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),
  /*   14 S> */ B(Return),
                B(Mov), R(3), R(1),
                B(Ldar), R(1),
  /*   14 S> */ B(Return),
]
constant pool: [
  Smi [36],
  SCOPE_INFO_TYPE,
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  import {foo} from \"bar\";
"
frame size: 5
parameter count: 2
bytecode array length: 62
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
                B(LdaConstant), U8(1),
                B(Star), R(3),
                B(Mov), R(arg0), R(2),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(2),
                B(PushContext), R(2),
                B(Mov), R(closure), R(3),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(Star), R(0),
  /*    0 E> */ B(StackCheck),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(3),
                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),
  /*   25 S> */ B(Return),
                B(Mov), R(3), R(1),
                B(Ldar), R(1),
  /*   25 S> */ B(Return),
]
constant pool: [
  Smi [36],
  SCOPE_INFO_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: 92
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(2),
                B(PushContext), R(3),
                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),
  /*    0 E> */ B(StackCheck),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(4),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(4),
  /*    0 E> */ B(Throw),
                B(Ldar), R(4),
  /*   65 S> */ B(Return),
  /*   32 S> */ B(LdaModuleVariable), I8(-1), U8(0),
                B(ThrowReferenceErrorIfHole), U8(4),
                B(Star), R(4),
                B(LdaSmi), I8(42),
                B(Star), R(5),
  /*   32 E> */ B(CallUndefinedReceiver1), R(4), R(5), U8(0),
  /*   47 S> */ B(LdaUndefined),
                B(Star), R(2),
  /*   52 S> */ B(LdaModuleVariable), I8(-1), U8(0),
                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(2),
                B(Star), R(1),
  /*   65 S> */ B(Return),
]
constant pool: [
  Smi [36],
  SCOPE_INFO_TYPE,
  Smi [10],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["goo"],
]
handlers: [
]

---
snippet: "
  export var foo = 42;
  foo++;
  { let x; { foo++ } };
"
frame size: 6
parameter count: 2
bytecode array length: 90
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(2),
                B(PushContext), R(3),
                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),
  /*    0 E> */ B(StackCheck),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(4),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(4),
  /*    0 E> */ B(Throw),
                B(Ldar), R(4),
  /*   50 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(0),
  /*   24 E> */ B(StaModuleVariable), I8(1), U8(0),
  /*   34 S> */ B(LdaUndefined),
                B(Star), R(2),
  /*   39 S> */ B(LdaModuleVariable), I8(1), U8(0),
                B(ToNumeric), U8(1),
                B(Star), R(4),
                B(Inc), U8(1),
  /*   42 E> */ B(StaModuleVariable), I8(1), U8(0),
                B(Mov), R(4), R(1),
                B(Ldar), R(1),
  /*   50 S> */ B(Return),
]
constant pool: [
  Smi [36],
  SCOPE_INFO_TYPE,
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  export let foo = 42;
  foo++;
  { let x; { foo++ } };
"
frame size: 6
parameter count: 2
bytecode array length: 96
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(2),
                B(PushContext), R(3),
                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),
                B(LdaTheHole),
                B(StaModuleVariable), I8(1), U8(0),
  /*    0 E> */ B(StackCheck),
                B(Ldar), R(0),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(4),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(4),
  /*    0 E> */ B(Throw),
                B(Ldar), R(4),
  /*   50 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(0),
  /*   24 E> */ B(StaModuleVariable), I8(1), U8(0),
  /*   34 S> */ B(LdaUndefined),
                B(Star), R(2),
  /*   39 S> */ B(LdaModuleVariable), I8(1), U8(0),
                B(ToNumeric), U8(1),
                B(Star), R(4),
                B(Inc), U8(1),
  /*   42 E> */ B(StaModuleVariable), I8(1), U8(0),
                B(Mov), R(4), R(1),
                B(Ldar), R(1),
  /*   50 S> */ B(Return),
]
constant pool: [
  Smi [42],
  SCOPE_INFO_TYPE,
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  export const foo = 42;
  foo++;
  { let x; { foo++ } };
"
frame size: 6
parameter count: 2
bytecode array length: 100
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(2),
                B(PushContext), R(3),
                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),
                B(LdaTheHole),
                B(StaModuleVariable), I8(1), U8(0),
  /*    0 E> */ B(StackCheck),
                B(Ldar), R(0),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(4),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(4),
  /*    0 E> */ B(Throw),
                B(Ldar), R(4),
  /*   52 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(0),
  /*   26 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
  /*   36 S> */ B(LdaUndefined),
                B(Star), R(2),
  /*   41 S> */ B(LdaModuleVariable), I8(1), U8(0),
                B(ToNumeric), U8(1),
                B(Star), R(4),
                B(Inc), U8(1),
  /*   44 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
                B(Mov), R(4), R(1),
                B(Ldar), R(1),
  /*   52 S> */ B(Return),
]
constant pool: [
  Smi [42],
  SCOPE_INFO_TYPE,
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  export default (function () {});
"
frame size: 5
parameter count: 2
bytecode array length: 75
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
                B(LdaConstant), U8(1),
                B(Star), R(3),
                B(Mov), R(arg0), R(2),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(2),
                B(PushContext), R(2),
                B(Mov), R(closure), R(3),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(Star), R(0),
                B(LdaTheHole),
                B(StaModuleVariable), I8(1), U8(0),
  /*    0 E> */ B(StackCheck),
                B(Ldar), R(0),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(3),
                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),
  /*   33 S> */ B(Return),
                B(Mov), R(3), R(1),
                B(CreateClosure), U8(4), U8(0), U8(0),
                B(StaModuleVariable), I8(1), U8(0),
                B(Ldar), R(1),
  /*   33 S> */ B(Return),
]
constant pool: [
  Smi [42],
  SCOPE_INFO_TYPE,
  Smi [10],
  Smi [7],
  SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

---
snippet: "
  export default (class {});
"
frame size: 7
parameter count: 2
bytecode array length: 96
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
                B(LdaConstant), U8(1),
                B(Star), R(3),
                B(Mov), R(arg0), R(2),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(2),
                B(PushContext), R(2),
                B(Mov), R(closure), R(3),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(Star), R(0),
                B(LdaTheHole),
                B(StaModuleVariable), I8(1), U8(0),
  /*    0 E> */ B(StackCheck),
                B(Ldar), R(0),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(3),
                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),
  /*   27 S> */ B(Return),
                B(Mov), R(3), R(1),
                B(LdaTheHole),
                B(Star), R(6),
                B(CreateClosure), U8(5), U8(0), U8(0),
                B(Star), R(3),
                B(LdaConstant), U8(4),
                B(Star), R(4),
                B(Mov), R(3), R(5),
                B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(3),
                B(Star), R(4),
                B(Ldar), R(5),
                B(StaModuleVariable), I8(1), U8(0),
                B(Ldar), R(1),
  /*   27 S> */ B(Return),
]
constant pool: [
  Smi [42],
  SCOPE_INFO_TYPE,
  Smi [10],
  Smi [7],
  FIXED_ARRAY_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

---
snippet: "
  export {foo as goo} from \"bar\"
"
frame size: 5
parameter count: 2
bytecode array length: 62
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
                B(LdaConstant), U8(1),
                B(Star), R(3),
                B(Mov), R(arg0), R(2),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(2),
                B(PushContext), R(2),
                B(Mov), R(closure), R(3),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(Star), R(0),
  /*    0 E> */ B(StackCheck),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(3),
                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),
  /*   31 S> */ B(Return),
                B(Mov), R(3), R(1),
                B(Ldar), R(1),
  /*   31 S> */ B(Return),
]
constant pool: [
  Smi [36],
  SCOPE_INFO_TYPE,
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  export * from \"bar\"
"
frame size: 5
parameter count: 2
bytecode array length: 62
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
                B(LdaConstant), U8(1),
                B(Star), R(3),
                B(Mov), R(arg0), R(2),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(2), U8(2),
                B(PushContext), R(2),
                B(Mov), R(closure), R(3),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
                B(Star), R(0),
  /*    0 E> */ B(StackCheck),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(3), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(3),
                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),
  /*   20 S> */ B(Return),
                B(Mov), R(3), R(1),
                B(Ldar), R(1),
  /*   20 S> */ B(Return),
]
constant pool: [
  Smi [36],
  SCOPE_INFO_TYPE,
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  import * as foo from \"bar\"
  foo.f(foo, foo.x);
"
frame size: 8
parameter count: 2
bytecode array length: 89
bytecodes: [
                B(SwitchOnGeneratorState), R(0), U8(0), U8(1),
                B(LdaConstant), U8(1),
                B(Star), R(4),
                B(Mov), R(arg0), R(3),
                B(CallRuntime), U16(Runtime::kPushModuleContext), R(3), U8(2),
                B(PushContext), R(3),
                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),
                B(LdaZero),
                B(Star), R(4),
                B(CallRuntime), U16(Runtime::kGetModuleNamespace), R(4), U8(1),
                B(Star), R(1),
  /*    0 E> */ B(StackCheck),
                B(Ldar), R(0),
  /*    0 E> */ B(SuspendGenerator), R(0), R(0), U8(4), U8(0),
                B(ResumeGenerator), R(0), R(0), U8(4),
                B(Star), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(0), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(4),
  /*    0 E> */ B(Throw),
                B(Ldar), R(4),
  /*   46 S> */ B(Return),
  /*   31 S> */ B(LdaNamedProperty), R(1), U8(4), U8(0),
                B(Star), R(4),
  /*   42 E> */ B(LdaNamedProperty), R(1), U8(5), U8(2),
                B(Star), R(7),
  /*   31 E> */ B(CallProperty2), R(4), R(1), R(1), R(7), U8(4),
                B(Star), R(2),
  /*   46 S> */ B(Return),
]
constant pool: [
  Smi [48],
  SCOPE_INFO_TYPE,
  Smi [10],
  Smi [7],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["f"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
]
handlers: [
]

