#
# Autogenerated by generate-bytecode-expectations.
#

---
pool type: mixed
execute: yes
wrap: yes

---
snippet: "
  var x = 0;
  label: {
    x = x + 1;
    break label;
    x = x + 1;
  }
  return x;
"
frame size: 2
parameter count: 1
bytecode array length: 17
bytecodes: [
  B(StackCheck),
  B(LdaZero),
  B(Star), R(0),
  B(Star), R(1),
  B(LdaSmi), U8(1),
  B(Add), R(1),
  B(Star), R(0),
  B(Jump), U8(2),
  B(Ldar), R(0),
  B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var sum = 0;
  outer: {
    for (var x = 0; x < 10; ++x) {
      for (var y = 0; y < 3; ++y) {
        ++sum;
        if (x + y == 12) { break outer; }
      }
    }
  }
  return sum;
"
frame size: 5
parameter count: 1
bytecode array length: 75
bytecodes: [
  B(StackCheck),
  B(LdaZero),
  B(Star), R(0),
  B(LdaZero),
  B(Star), R(1),
  B(Ldar), R(1),
  B(Star), R(3),
  B(LdaSmi), U8(10),
  B(TestLessThan), R(3),
  B(JumpIfFalse), U8(57),
  B(StackCheck),
  B(LdaZero),
  B(Star), R(2),
  B(Ldar), R(2),
  B(Star), R(3),
  B(LdaSmi), U8(3),
  B(TestLessThan), R(3),
  B(JumpIfFalse), U8(35),
  B(StackCheck),
  B(Ldar), R(0),
  B(ToNumber),
  B(Inc),
  B(Star), R(0),
  B(Ldar), R(1),
  B(Star), R(3),
  B(Ldar), R(2),
  B(Add), R(3),
  B(Star), R(4),
  B(LdaSmi), U8(12),
  B(TestEqual), R(4),
  B(JumpIfFalse), U8(4),
  B(Jump), U8(18),
  B(Ldar), R(2),
  B(ToNumber),
  B(Inc),
  B(Star), R(2),
  B(Jump), U8(-41),
  B(Ldar), R(1),
  B(ToNumber),
  B(Inc),
  B(Star), R(1),
  B(Jump), U8(-63),
  B(Ldar), R(0),
  B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  outer: {
    let y = 10;
    function f() { return y; }
    break outer;
  }
"
frame size: 5
parameter count: 1
bytecode array length: 51
bytecodes: [
  B(StackCheck),
  B(LdaConstant), U8(0),
  B(Star), R(3),
  B(Ldar), R(closure),
  B(Star), R(4),
  B(CallRuntime), U16(Runtime::kPushBlockContext), R(3), U8(2),
  B(PushContext), R(2),
  B(LdaTheHole),
  B(StaContextSlot), R(context), U8(4),
  B(CreateClosure), U8(1), U8(0),
  B(Star), R(0),
  B(LdaSmi), U8(10),
  B(StaContextSlot), R(context), U8(4),
  B(Ldar), R(0),
  B(JumpIfNotHole), U8(11),
  B(LdaConstant), U8(2),
  B(Star), R(3),
  B(CallRuntime), U16(Runtime::kThrowReferenceError), R(3), U8(1),
  B(Star), R(1),
  B(Jump), U8(2),
  B(PopContext), R(2),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
  InstanceType::FIXED_ARRAY_TYPE,
  InstanceType::SHARED_FUNCTION_INFO_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
]
handlers: [
]

---
snippet: "
  let x = 1;
  outer: {
    inner: {
     let y = 2;
      function f() { return x + y; }
      if (y) break outer;
      y = 3;
    }
  }
  x = 4;
"
frame size: 6
parameter count: 1
bytecode array length: 131
bytecodes: [
  B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), U8(1),
  B(PushContext), R(2),
  B(LdaTheHole),
  B(StaContextSlot), R(context), U8(4),
  B(StackCheck),
  B(LdaSmi), U8(1),
  B(StaContextSlot), R(context), U8(4),
  B(LdaConstant), U8(0),
  B(Star), R(4),
  B(Ldar), R(closure),
  B(Star), R(5),
  B(CallRuntime), U16(Runtime::kPushBlockContext), R(4), U8(2),
  B(PushContext), R(3),
  B(LdaTheHole),
  B(StaContextSlot), R(context), U8(4),
  B(CreateClosure), U8(1), U8(0),
  B(Star), R(0),
  B(LdaSmi), U8(2),
  B(StaContextSlot), R(context), U8(4),
  B(Ldar), R(0),
  B(JumpIfNotHole), U8(11),
  B(LdaConstant), U8(2),
  B(Star), R(4),
  B(CallRuntime), U16(Runtime::kThrowReferenceError), R(4), U8(1),
  B(Star), R(1),
  B(LdaContextSlot), R(context), U8(4),
  B(JumpIfNotHole), U8(11),
  B(LdaConstant), U8(3),
  B(Star), R(4),
  B(CallRuntime), U16(Runtime::kThrowReferenceError), R(4), U8(1),
  B(JumpIfToBooleanFalse), U8(6),
  B(PopContext), R(3),
  B(Jump), U8(27),
  B(LdaSmi), U8(3),
  B(Star), R(4),
  B(LdaContextSlot), R(context), U8(4),
  B(JumpIfNotHole), U8(11),
  B(LdaConstant), U8(3),
  B(Star), R(5),
  B(CallRuntime), U16(Runtime::kThrowReferenceError), R(5), U8(1),
  B(Ldar), R(4),
  B(StaContextSlot), R(context), U8(4),
  B(PopContext), R(3),
  B(LdaSmi), U8(4),
  B(Star), R(4),
  B(LdaContextSlot), R(context), U8(4),
  B(JumpIfNotHole), U8(11),
  B(LdaConstant), U8(4),
  B(Star), R(5),
  B(CallRuntime), U16(Runtime::kThrowReferenceError), R(5), U8(1),
  B(Ldar), R(4),
  B(StaContextSlot), R(context), U8(4),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
  InstanceType::FIXED_ARRAY_TYPE,
  InstanceType::SHARED_FUNCTION_INFO_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
]
handlers: [
]

