#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f

---
snippet: "
  function f() {
    for (let x = 0; x < 10; ++x) { let y = x; }
  }
  f();
"
frame size: 2
parameter count: 1
bytecode array length: 26
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   30 S> */ B(LdaZero),
                B(Star), R(1),
  /*   35 S> */ B(LdaSmi), I8(10),
  /*   35 E> */ B(TestLessThan), R(1), U8(0),
                B(JumpIfFalse), U8(15),
  /*   17 E> */ B(StackCheck),
  /*   56 S> */ B(Mov), R(1), R(0),
  /*   43 S> */ B(Ldar), R(0),
                B(Inc), U8(1),
                B(Star), R(1),
                B(JumpLoop), U8(17), I8(0),
                B(LdaUndefined),
  /*   61 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  function f() {
    for (let x = 0; x < 10; ++x) { eval('1'); }
  }
  f();
"
frame size: 15
parameter count: 1
bytecode array length: 168
bytecodes: [
                B(CreateFunctionContext), U8(3),
                B(PushContext), R(4),
                B(Ldar), R(this),
                B(StaCurrentContextSlot), U8(4),
                B(CreateMappedArguments),
                B(StaCurrentContextSlot), U8(6),
                B(Ldar), R(3),
                B(StaCurrentContextSlot), U8(5),
  /*   10 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(0),
                B(PushContext), R(5),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
  /*   30 S> */ B(LdaZero),
  /*   30 E> */ B(StaCurrentContextSlot), U8(4),
                B(LdaCurrentContextSlot), U8(4),
                B(Star), R(0),
                B(LdaSmi), I8(1),
                B(Star), R(1),
  /*   59 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(1),
                B(PushContext), R(6),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(Ldar), R(0),
                B(StaCurrentContextSlot), U8(4),
                B(LdaSmi), I8(1),
                B(TestEqual), R(1), U8(0),
                B(JumpIfFalse), U8(7),
                B(LdaZero),
                B(Star), R(1),
                B(Jump), U8(8),
  /*   43 S> */ B(LdaCurrentContextSlot), U8(4),
                B(Inc), U8(1),
  /*   43 E> */ B(StaCurrentContextSlot), U8(4),
                B(LdaSmi), I8(1),
                B(Star), R(2),
  /*   35 S> */ B(LdaCurrentContextSlot), U8(4),
                B(Star), R(7),
                B(LdaSmi), I8(10),
  /*   35 E> */ B(TestLessThan), R(7), U8(2),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(6),
                B(PopContext), R(6),
                B(Jump), U8(77),
                B(LdaSmi), I8(1),
                B(TestEqual), R(2), U8(3),
                B(JumpIfFalse), U8(54),
  /*   17 E> */ B(StackCheck),
  /*   48 S> */ B(LdaLookupGlobalSlot), U8(2), U8(4), U8(3),
                B(Star), R(7),
                B(LdaConstant), U8(3),
                B(Star), R(8),
                B(LdaZero),
                B(Star), R(12),
                B(LdaSmi), I8(31),
                B(Star), R(13),
                B(LdaSmi), I8(48),
                B(Star), R(14),
                B(Mov), R(7), R(9),
                B(Mov), R(8), R(10),
                B(Mov), R(closure), R(11),
                B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(9), U8(6),
                B(Star), R(7),
  /*   48 E> */ B(CallUndefinedReceiver1), R(7), R(8), U8(6),
                B(LdaZero),
                B(Star), R(2),
                B(LdaCurrentContextSlot), U8(4),
                B(Star), R(0),
                B(JumpLoop), U8(56), I8(1),
                B(LdaSmi), I8(1),
  /*   59 E> */ B(TestEqual), R(2), U8(8),
                B(JumpIfFalse), U8(6),
                B(PopContext), R(6),
                B(Jump), U8(7),
                B(PopContext), R(6),
                B(JumpLoop), U8(125), I8(0),
                B(PopContext), R(5),
                B(LdaUndefined),
  /*   61 S> */ B(Return),
]
constant pool: [
  SCOPE_INFO_TYPE,
  SCOPE_INFO_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["eval"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["1"],
]
handlers: [
]

---
snippet: "
  function f() {
    for (let x = 0; x < 10; ++x) { (function() { return x; })(); }
  }
  f();
"
frame size: 6
parameter count: 1
bytecode array length: 108
bytecodes: [
  /*   10 E> */ B(StackCheck),
  /*   30 S> */ B(LdaZero),
                B(Star), R(0),
                B(Star), R(1),
                B(LdaSmi), I8(1),
                B(Star), R(2),
  /*   78 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(0),
                B(PushContext), R(4),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(Ldar), R(1),
                B(StaCurrentContextSlot), U8(4),
                B(LdaSmi), I8(1),
                B(TestEqual), R(2), U8(0),
                B(JumpIfFalse), U8(7),
                B(LdaZero),
                B(Star), R(2),
                B(Jump), U8(8),
  /*   43 S> */ B(LdaCurrentContextSlot), U8(4),
                B(Inc), U8(1),
  /*   43 E> */ B(StaCurrentContextSlot), U8(4),
                B(LdaSmi), I8(1),
                B(Star), R(3),
  /*   35 S> */ B(LdaCurrentContextSlot), U8(4),
                B(Star), R(5),
                B(LdaSmi), I8(10),
  /*   35 E> */ B(TestLessThan), R(5), U8(2),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(6),
                B(PopContext), R(4),
                B(Jump), U8(45),
                B(LdaSmi), I8(1),
                B(TestEqual), R(3), U8(3),
                B(JumpIfFalse), U8(22),
  /*   17 E> */ B(StackCheck),
  /*   48 S> */ B(CreateClosure), U8(1), U8(4), U8(2),
                B(Star), R(5),
  /*   74 E> */ B(CallUndefinedReceiver0), R(5), U8(5),
                B(LdaZero),
                B(Star), R(3),
                B(LdaCurrentContextSlot), U8(4),
                B(Star), R(1),
                B(JumpLoop), U8(24), I8(1),
                B(LdaSmi), I8(1),
  /*   78 E> */ B(TestEqual), R(3), U8(7),
                B(JumpIfFalse), U8(6),
                B(PopContext), R(4),
                B(Jump), U8(7),
                B(PopContext), R(4),
                B(JumpLoop), U8(93), I8(0),
                B(LdaUndefined),
  /*   80 S> */ B(Return),
]
constant pool: [
  SCOPE_INFO_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

---
snippet: "
  function f() {
    for (let { x, y } = { x: 0, y: 3 }; y > 0; --y) { let z = x + y; }
  }
  f();
"
frame size: 6
parameter count: 1
bytecode array length: 68
bytecodes: [
  /*   10 E> */ B(StackCheck),
                B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(4),
                B(Mov), R(4), R(3),
                B(Ldar), R(3),
                B(JumpIfUndefined), U8(6),
                B(Ldar), R(3),
                B(JumpIfNotNull), U8(16),
                B(LdaSmi), I8(77),
                B(Star), R(4),
                B(LdaConstant), U8(1),
                B(Star), R(5),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(4), U8(2),
  /*   28 E> */ B(Throw),
  /*   37 S> */ B(LdaNamedProperty), R(3), U8(1), U8(1),
                B(Star), R(1),
  /*   37 S> */ B(LdaNamedProperty), R(3), U8(2), U8(3),
                B(Star), R(2),
  /*   55 S> */ B(LdaZero),
  /*   55 E> */ B(TestGreaterThan), R(2), U8(5),
                B(JumpIfFalse), U8(19),
  /*   17 E> */ B(StackCheck),
  /*   75 S> */ B(Ldar), R(2),
  /*   77 E> */ B(Add), R(1), U8(6),
                B(Star), R(0),
  /*   62 S> */ B(Ldar), R(2),
                B(Dec), U8(7),
                B(Star), R(2),
                B(JumpLoop), U8(20), I8(0),
                B(LdaUndefined),
  /*   84 S> */ B(Return),
]
constant pool: [
  BOILERPLATE_DESCRIPTION_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["y"],
]
handlers: [
]

---
snippet: "
  function* f() {
    for (let x = 0; x < 10; ++x) { let y = x; }
  }
  f();
"
frame size: 5
parameter count: 1
bytecode array length: 67
bytecodes: [
                B(SwitchOnGeneratorState), R(2), U8(0), U8(1),
                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(2),
  /*   11 E> */ B(StackCheck),
  /*   11 E> */ B(SuspendGenerator), R(2), R(0), U8(3), U8(0),
                B(ResumeGenerator), R(2), R(0), U8(3),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(2), U8(1),
                B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
                B(Ldar), R(3),
  /*   11 E> */ B(Throw),
                B(Ldar), R(3),
  /*   62 S> */ B(Return),
  /*   31 S> */ B(LdaZero),
                B(Star), R(1),
  /*   36 S> */ B(LdaSmi), I8(10),
  /*   36 E> */ B(TestLessThan), R(1), U8(0),
                B(JumpIfFalse), U8(15),
  /*   18 E> */ B(StackCheck),
  /*   57 S> */ B(Mov), R(1), R(0),
  /*   44 S> */ B(Ldar), R(0),
                B(Inc), U8(1),
                B(Star), R(1),
                B(JumpLoop), U8(17), I8(0),
                B(LdaUndefined),
  /*   62 S> */ B(Return),
]
constant pool: [
  Smi [22],
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  function* f() {
    for (let x = 0; x < 10; ++x) yield x;
  }
  f();
"
frame size: 4
parameter count: 1
bytecode array length: 99
bytecodes: [
                B(SwitchOnGeneratorState), R(1), U8(0), U8(2),
                B(Mov), R(closure), R(2),
                B(Mov), R(this), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(2), U8(2),
                B(Star), R(1),
  /*   11 E> */ B(StackCheck),
  /*   11 E> */ B(SuspendGenerator), R(1), R(0), U8(2), U8(0),
                B(ResumeGenerator), R(1), R(0), U8(2),
                B(Star), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Ldar), R(2),
  /*   11 E> */ B(Throw),
                B(Ldar), R(2),
  /*   56 S> */ B(Return),
  /*   31 S> */ B(LdaZero),
                B(Star), R(0),
  /*   36 S> */ B(LdaSmi), I8(10),
  /*   36 E> */ B(TestLessThan), R(0), U8(0),
                B(JumpIfFalse), U8(47),
  /*   18 E> */ B(StackCheck),
  /*   47 S> */ B(LdaFalse),
                B(Star), R(3),
                B(Mov), R(0), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(2), U8(2),
  /*   47 E> */ B(SuspendGenerator), R(1), R(0), U8(2), U8(1),
                B(ResumeGenerator), R(1), R(0), U8(2),
                B(Star), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
                B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0),
                B(Ldar), R(2),
  /*   47 E> */ B(Throw),
                B(Ldar), R(2),
  /*   56 S> */ B(Return),
  /*   44 S> */ B(Ldar), R(0),
                B(Inc), U8(1),
                B(Star), R(0),
                B(JumpLoop), U8(49), I8(0),
                B(LdaUndefined),
  /*   56 S> */ B(Return),
]
constant pool: [
  Smi [22],
  Smi [68],
  Smi [10],
  Smi [7],
  Smi [10],
  Smi [7],
]
handlers: [
]

---
snippet: "
  async function f() {
    for (let x = 0; x < 10; ++x) { let y = x; }
  }
  f();
"
frame size: 12
parameter count: 1
bytecode array length: 137
bytecodes: [
  /*   16 E> */ B(StackCheck),
                B(CallJSRuntime), U8(%async_function_promise_create), R(0), U8(0),
                B(Star), R(3),
                B(Mov), R(context), R(6),
                B(Mov), R(context), R(7),
  /*   36 S> */ B(LdaZero),
                B(Star), R(1),
  /*   41 S> */ B(LdaSmi), I8(10),
  /*   41 E> */ B(TestLessThan), R(1), U8(0),
                B(JumpIfFalse), U8(15),
  /*   23 E> */ B(StackCheck),
  /*   62 S> */ B(Mov), R(1), R(0),
  /*   49 S> */ B(Ldar), R(0),
                B(Inc), U8(1),
                B(Star), R(1),
                B(JumpLoop), U8(17), I8(0),
                B(LdaUndefined),
                B(Star), R(9),
                B(Mov), R(3), R(8),
  /*   49 E> */ B(InvokeIntrinsic), U8(Runtime::k_ResolvePromise), R(8), U8(2),
                B(LdaZero),
                B(Star), R(4),
                B(Mov), R(3), R(5),
                B(Jump), U8(58),
                B(Jump), U8(42),
                B(Star), R(8),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(8), U8(0), U8(1),
                B(Star), R(7),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(7),
                B(PushContext), R(8),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(10),
                B(LdaFalse),
                B(Star), R(11),
                B(Mov), R(3), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_RejectPromise), R(9), U8(3),
                B(PopContext), R(8),
                B(LdaZero),
                B(Star), R(4),
                B(Mov), R(3), R(5),
                B(Jump), U8(16),
                B(LdaSmi), I8(-1),
                B(Star), R(5),
                B(Star), R(4),
                B(Jump), U8(8),
                B(Star), R(5),
                B(LdaSmi), I8(1),
                B(Star), R(4),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(6),
                B(CallJSRuntime), U8(%async_function_promise_release), R(3), U8(1),
                B(Ldar), R(6),
                B(SetPendingMessage),
                B(Ldar), R(4),
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(5),
  /*   67 S> */ B(Return),
                B(Ldar), R(5),
                B(ReThrow),
                B(LdaUndefined),
  /*   67 S> */ B(Return),
]
constant pool: [
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  SCOPE_INFO_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [10, 96, 104],
  [13, 54, 56],
]

---
snippet: "
  async function f() {
    for (let x = 0; x < 10; ++x) await x;
  }
  f();
"
frame size: 11
parameter count: 1
bytecode array length: 188
bytecodes: [
                B(SwitchOnGeneratorState), R(1), U8(0), U8(1),
                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(1),
  /*   16 E> */ B(StackCheck),
                B(CallJSRuntime), U8(%async_function_promise_create), R(0), U8(0),
                B(Star), R(2),
                B(Mov), R(context), R(5),
                B(Mov), R(context), R(6),
  /*   36 S> */ B(LdaZero),
                B(Star), R(0),
  /*   41 S> */ B(LdaSmi), I8(10),
  /*   41 E> */ B(TestLessThan), R(0), U8(0),
                B(JumpIfFalse), U8(50),
  /*   23 E> */ B(StackCheck),
  /*   52 S> */ B(Mov), R(1), R(7),
                B(Mov), R(0), R(8),
                B(Mov), R(2), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_AsyncFunctionAwaitUncaught), R(7), U8(3),
  /*   52 E> */ B(SuspendGenerator), R(1), R(0), U8(7), U8(0),
                B(ResumeGenerator), R(1), R(0), U8(7),
                B(Star), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
                B(Star), R(8),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(8),
                B(JumpIfTrue), U8(5),
                B(Ldar), R(7),
                B(ReThrow),
  /*   49 S> */ B(Ldar), R(0),
                B(Inc), U8(1),
                B(Star), R(0),
                B(JumpLoop), U8(52), I8(0),
                B(LdaUndefined),
                B(Star), R(8),
                B(Mov), R(2), R(7),
  /*   49 E> */ B(InvokeIntrinsic), U8(Runtime::k_ResolvePromise), R(7), U8(2),
                B(LdaZero),
                B(Star), R(3),
                B(Mov), R(2), R(4),
                B(Jump), U8(58),
                B(Jump), U8(42),
                B(Star), R(7),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(7), U8(1), U8(2),
                B(Star), R(6),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(6),
                B(PushContext), R(7),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(9),
                B(LdaFalse),
                B(Star), R(10),
                B(Mov), R(2), R(8),
                B(InvokeIntrinsic), U8(Runtime::k_RejectPromise), R(8), U8(3),
                B(PopContext), R(7),
                B(LdaZero),
                B(Star), R(3),
                B(Mov), R(2), R(4),
                B(Jump), U8(16),
                B(LdaSmi), I8(-1),
                B(Star), R(4),
                B(Star), R(3),
                B(Jump), U8(8),
                B(Star), R(4),
                B(LdaSmi), I8(1),
                B(Star), R(3),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(5),
                B(CallJSRuntime), U8(%async_function_promise_release), R(2), U8(1),
                B(Ldar), R(5),
                B(SetPendingMessage),
                B(Ldar), R(3),
                B(SwitchOnSmiNoFeedback), U8(3), U8(2), I8(0),
                B(Jump), U8(8),
                B(Ldar), R(4),
  /*   61 S> */ B(Return),
                B(Ldar), R(4),
                B(ReThrow),
                B(LdaUndefined),
  /*   61 S> */ B(Return),
]
constant pool: [
  Smi [58],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  SCOPE_INFO_TYPE,
  Smi [6],
  Smi [9],
]
handlers: [
  [26, 147, 155],
  [29, 105, 107],
]

