#
# Autogenerated by generate-bytecode-expectations.
#

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

---
snippet: "
  var x = 0;
  while (false) { x = 99; break; continue; }
  return x;
"
frame size: 1
parameter count: 1
bytecode array length: 6
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(0),
  /*   88 S> */ B(Nop),
  /*   98 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var x = 0;
  while (false) {
    x = x + 1;
  };
  return x;
"
frame size: 1
parameter count: 1
bytecode array length: 6
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(0),
  /*   77 S> */ B(Nop),
  /*   87 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var x = 0;
  var y = 1;
  while (x < 10) {
    y = y * 12;
    x = x + 1;
    if (x == 3) continue;
    if (x == 4) break;
  }
  return y;
"
frame size: 2
parameter count: 1
bytecode array length: 48
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(0),
  /*   53 S> */ B(LdaSmi), U8(1),
                B(Star), R(1),
  /*   65 S> */ B(LdaSmi), U8(10),
  /*   65 E> */ B(TestLessThan), R(0),
                B(JumpIfFalse), U8(33),
  /*   56 E> */ B(StackCheck),
  /*   75 S> */ B(LdaSmi), U8(12),
                B(Mul), R(1),
                B(Star), R(1),
  /*   89 S> */ B(LdaSmi), U8(1),
                B(Add), R(0),
                B(Star), R(0),
  /*  102 S> */ B(LdaSmi), U8(3),
  /*  108 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*  114 S> */ B(Jump), U8(10),
  /*  126 S> */ B(LdaSmi), U8(4),
  /*  132 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*  138 S> */ B(Jump), U8(4),
                B(Jump), U8(-35),
  /*  147 S> */ B(Ldar), R(1),
  /*  157 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var i = 0;
  while (true) {
    if (i < 0) continue;
    if (i == 3) break;
    if (i == 4) break;
    if (i == 10) continue;
    if (i == 5) break;
    i = i + 1;
  }
  return i;
"
frame size: 1
parameter count: 1
bytecode array length: 55
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(0),
  /*   45 E> */ B(StackCheck),
  /*   62 S> */ B(LdaZero),
  /*   68 E> */ B(TestLessThan), R(0),
                B(JumpIfFalse), U8(4),
  /*   73 S> */ B(Jump), U8(40),
  /*   85 S> */ B(LdaSmi), U8(3),
  /*   91 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*   97 S> */ B(Jump), U8(34),
  /*  106 S> */ B(LdaSmi), U8(4),
  /*  112 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*  118 S> */ B(Jump), U8(26),
  /*  127 S> */ B(LdaSmi), U8(10),
  /*  133 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*  140 S> */ B(Jump), U8(16),
  /*  152 S> */ B(LdaSmi), U8(5),
  /*  158 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*  164 S> */ B(Jump), U8(10),
  /*  173 S> */ B(LdaSmi), U8(1),
                B(Add), R(0),
                B(Star), R(0),
                B(Jump), U8(-46),
  /*  186 S> */ B(Ldar), R(0),
  /*  196 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var i = 0;
  while (true) {
    while (i < 3) {
      if (i == 2) break;
      i = i + 1;
    }
    i = i + 1;
    break;
  }
  return i;
"
frame size: 1
parameter count: 1
bytecode array length: 41
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(0),
  /*   45 E> */ B(StackCheck),
  /*   71 S> */ B(LdaSmi), U8(3),
  /*   71 E> */ B(TestLessThan), R(0),
                B(JumpIfFalse), U8(19),
  /*   62 E> */ B(StackCheck),
  /*   82 S> */ B(LdaSmi), U8(2),
  /*   88 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*   94 S> */ B(Jump), U8(10),
  /*  105 S> */ B(LdaSmi), U8(1),
                B(Add), R(0),
                B(Star), R(0),
                B(Jump), U8(-21),
  /*  122 S> */ B(LdaSmi), U8(1),
                B(Add), R(0),
                B(Star), R(0),
  /*  135 S> */ B(Jump), U8(4),
                B(Jump), U8(-32),
  /*  144 S> */ B(Ldar), R(0),
  /*  154 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var x = 10;
  var y = 1;
  while (x) {
    y = y * 12;
    x = x - 1;
  }
  return y;
"
frame size: 2
parameter count: 1
bytecode array length: 31
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), U8(10),
                B(Star), R(0),
  /*   54 S> */ B(LdaSmi), U8(1),
                B(Star), R(1),
  /*   64 S> */ B(Ldar), R(0),
                B(JumpIfToBooleanFalse), U8(17),
  /*   57 E> */ B(StackCheck),
  /*   71 S> */ B(LdaSmi), U8(12),
                B(Mul), R(1),
                B(Star), R(1),
  /*   85 S> */ B(LdaSmi), U8(1),
                B(Sub), R(0),
                B(Star), R(0),
                B(Jump), U8(-17),
  /*   98 S> */ B(Ldar), R(1),
  /*  108 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var x = 0; var y = 1;
  do {
    y = y * 10;
    if (x == 5) break;
    if (x == 6) continue;
    x = x + 1;
  } while (x < 10);
  return y;
"
frame size: 2
parameter count: 1
bytecode array length: 46
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(0),
  /*   53 S> */ B(LdaSmi), U8(1),
                B(Star), R(1),
  /*   56 E> */ B(StackCheck),
  /*   63 S> */ B(LdaSmi), U8(10),
                B(Mul), R(1),
                B(Star), R(1),
  /*   77 S> */ B(LdaSmi), U8(5),
  /*   83 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*   89 S> */ B(Jump), U8(22),
  /*   98 S> */ B(LdaSmi), U8(6),
  /*  104 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*  110 S> */ B(Jump), U8(8),
  /*  122 S> */ B(LdaSmi), U8(1),
                B(Add), R(0),
                B(Star), R(0),
  /*  144 S> */ B(LdaSmi), U8(10),
  /*  144 E> */ B(TestLessThan), R(0),
                B(JumpIfTrue), U8(-33),
  /*  151 S> */ B(Ldar), R(1),
  /*  161 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var x = 10;
  var y = 1;
  do {
    y = y * 12;
    x = x - 1;
  } while (x);
  return y;
"
frame size: 2
parameter count: 1
bytecode array length: 29
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), U8(10),
                B(Star), R(0),
  /*   54 S> */ B(LdaSmi), U8(1),
                B(Star), R(1),
  /*   57 E> */ B(StackCheck),
  /*   64 S> */ B(LdaSmi), U8(12),
                B(Mul), R(1),
                B(Star), R(1),
  /*   78 S> */ B(LdaSmi), U8(1),
                B(Sub), R(0),
                B(Star), R(0),
  /*   98 S> */ B(Ldar), R(0),
                B(JumpIfToBooleanTrue), U8(-15),
  /*  102 S> */ B(Ldar), R(1),
  /*  112 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var x = 0; var y = 1;
  do {
    y = y * 10;
    if (x == 5) break;
    x = x + 1;
    if (x == 6) continue;
  } while (false);
  return y;
"
frame size: 2
parameter count: 1
bytecode array length: 40
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(0),
  /*   53 S> */ B(LdaSmi), U8(1),
                B(Star), R(1),
  /*   56 E> */ B(StackCheck),
  /*   63 S> */ B(LdaSmi), U8(10),
                B(Mul), R(1),
                B(Star), R(1),
  /*   77 S> */ B(LdaSmi), U8(5),
  /*   83 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*   89 S> */ B(Jump), U8(16),
  /*   98 S> */ B(LdaSmi), U8(1),
                B(Add), R(0),
                B(Star), R(0),
  /*  111 S> */ B(LdaSmi), U8(6),
  /*  117 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*  123 S> */ B(Jump), U8(2),
  /*  150 S> */ B(Ldar), R(1),
  /*  160 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var x = 0; var y = 1;
  do {
    y = y * 10;
    if (x == 5) break;
    x = x + 1;
    if (x == 6) continue;
  } while (true);
  return y;
"
frame size: 2
parameter count: 1
bytecode array length: 42
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(0),
  /*   53 S> */ B(LdaSmi), U8(1),
                B(Star), R(1),
  /*   56 E> */ B(StackCheck),
  /*   63 S> */ B(LdaSmi), U8(10),
                B(Mul), R(1),
                B(Star), R(1),
  /*   77 S> */ B(LdaSmi), U8(5),
  /*   83 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*   89 S> */ B(Jump), U8(18),
  /*   98 S> */ B(LdaSmi), U8(1),
                B(Add), R(0),
                B(Star), R(0),
  /*  111 S> */ B(LdaSmi), U8(6),
  /*  117 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*  123 S> */ B(Jump), U8(2),
                B(Jump), U8(-29),
  /*  149 S> */ B(Ldar), R(1),
  /*  159 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var x = 0;
  for (;;) {
    if (x == 1) break;
    if (x == 2) continue;
    x = x + 1;
  }
"
frame size: 1
parameter count: 1
bytecode array length: 31
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(0),
  /*   45 E> */ B(StackCheck),
  /*   58 S> */ B(LdaSmi), U8(1),
  /*   64 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*   70 S> */ B(Jump), U8(18),
  /*   79 S> */ B(LdaSmi), U8(2),
  /*   85 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*   91 S> */ B(Jump), U8(8),
  /*  103 S> */ B(LdaSmi), U8(1),
                B(Add), R(0),
                B(Star), R(0),
                B(Jump), U8(-23),
                B(LdaUndefined),
  /*  116 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  for (var x = 0;;) {
    if (x == 1) break;
    if (x == 2) continue;
    x = x + 1;
  }
"
frame size: 1
parameter count: 1
bytecode array length: 31
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   47 S> */ B(LdaZero),
                B(Star), R(0),
  /*   34 E> */ B(StackCheck),
  /*   56 S> */ B(LdaSmi), U8(1),
  /*   62 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*   68 S> */ B(Jump), U8(18),
  /*   77 S> */ B(LdaSmi), U8(2),
  /*   83 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*   89 S> */ B(Jump), U8(8),
  /*  101 S> */ B(LdaSmi), U8(1),
                B(Add), R(0),
                B(Star), R(0),
                B(Jump), U8(-23),
                B(LdaUndefined),
  /*  114 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var x = 0;
  for (;; x = x + 1) {
    if (x == 1) break;
    if (x == 2) continue;
  }
"
frame size: 1
parameter count: 1
bytecode array length: 31
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(0),
  /*   45 E> */ B(StackCheck),
  /*   68 S> */ B(LdaSmi), U8(1),
  /*   74 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*   80 S> */ B(Jump), U8(18),
  /*   89 S> */ B(LdaSmi), U8(2),
  /*   95 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*  101 S> */ B(Jump), U8(2),
  /*   55 S> */ B(LdaSmi), U8(1),
                B(Add), R(0),
                B(Star), R(0),
                B(Jump), U8(-23),
                B(LdaUndefined),
  /*  113 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  for (var x = 0;; x = x + 1) {
    if (x == 1) break;
    if (x == 2) continue;
  }
"
frame size: 1
parameter count: 1
bytecode array length: 31
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   47 S> */ B(LdaZero),
                B(Star), R(0),
  /*   34 E> */ B(StackCheck),
  /*   66 S> */ B(LdaSmi), U8(1),
  /*   72 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*   78 S> */ B(Jump), U8(18),
  /*   87 S> */ B(LdaSmi), U8(2),
  /*   93 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*   99 S> */ B(Jump), U8(2),
  /*   53 S> */ B(LdaSmi), U8(1),
                B(Add), R(0),
                B(Star), R(0),
                B(Jump), U8(-23),
                B(LdaUndefined),
  /*  111 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var u = 0;
  for (var i = 0; i < 100; i = i + 1) {
    u = u + 1;
    continue;
  }
"
frame size: 2
parameter count: 1
bytecode array length: 32
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(0),
  /*   58 S> */ B(LdaZero),
                B(Star), R(1),
  /*   63 S> */ B(LdaSmi), U8(100),
  /*   63 E> */ B(TestLessThan), R(1),
                B(JumpIfFalse), U8(19),
  /*   45 E> */ B(StackCheck),
  /*   85 S> */ B(LdaSmi), U8(1),
                B(Add), R(0),
                B(Star), R(0),
  /*   98 S> */ B(Jump), U8(2),
  /*   72 S> */ B(LdaSmi), U8(1),
                B(Add), R(1),
                B(Star), R(1),
                B(Jump), U8(-21),
                B(LdaUndefined),
  /*  110 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var y = 1;
  for (var x = 10; x; --x) {
    y = y * 12;
  }
  return y;
"
frame size: 2
parameter count: 1
bytecode array length: 30
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaSmi), U8(1),
                B(Star), R(0),
  /*   58 S> */ B(LdaSmi), U8(10),
                B(Star), R(1),
  /*   62 S> */ B(Ldar), R(1),
                B(JumpIfToBooleanFalse), U8(16),
  /*   45 E> */ B(StackCheck),
  /*   74 S> */ B(LdaSmi), U8(12),
                B(Mul), R(0),
                B(Star), R(0),
  /*   67 S> */ B(Ldar), R(1),
                B(Dec),
                B(Star), R(1),
                B(Jump), U8(-16),
  /*   88 S> */ B(Ldar), R(0),
  /*   98 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var x = 0;
  for (var i = 0; false; i++) {
    x = x + 1;
  };
  return x;
"
frame size: 2
parameter count: 1
bytecode array length: 10
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(0),
  /*   58 S> */ B(LdaZero),
                B(Star), R(1),
  /*   91 S> */ B(Ldar), R(0),
  /*  101 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var x = 0;
  for (var i = 0; true; ++i) {
    x = x + 1;
    if (x == 20) break;
  };
  return x;
"
frame size: 2
parameter count: 1
bytecode array length: 32
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(0),
  /*   58 S> */ B(LdaZero),
                B(Star), R(1),
  /*   45 E> */ B(StackCheck),
  /*   76 S> */ B(LdaSmi), U8(1),
                B(Add), R(0),
                B(Star), R(0),
  /*   89 S> */ B(LdaSmi), U8(20),
  /*   95 E> */ B(TestEqual), R(0),
                B(JumpIfFalse), U8(4),
  /*  102 S> */ B(Jump), U8(9),
  /*   69 S> */ B(Ldar), R(1),
                B(Inc),
                B(Star), R(1),
                B(Jump), U8(-20),
  /*  112 S> */ B(Ldar), R(0),
  /*  122 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = 0;
  while (a) {
    { 
     let z = 1;
     function f() { z = 2; }
     if (z) continue;
     z++;
    }
  }
"
frame size: 7
parameter count: 1
bytecode array length: 119
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   42 S> */ B(LdaZero),
                B(Star), R(1),
  /*   52 S> */ B(Ldar), R(1),
                B(JumpIfToBooleanFalse), U8(111),
  /*   45 E> */ B(StackCheck),
                B(LdaConstant), U8(0),
                B(Star), R(4),
                B(Mov), R(closure), 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),
  /*   73 S> */ B(LdaSmi), U8(1),
  /*   73 E> */ 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(2),
  /*  106 S> */ 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(8),
  /*  113 S> */ B(PopContext), R(3),
                B(PopContext), R(3),
                B(Jump), U8(43),
  /*  126 S> */ 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(ToNumber),
                B(Star), R(4),
                B(Inc),
                B(Star), R(5),
  /*  127 E> */ B(LdaContextSlot), R(context), U8(4),
                B(JumpIfNotHole), U8(11),
                B(LdaConstant), U8(3),
                B(Star), R(6),
                B(CallRuntime), U16(Runtime::kThrowReferenceError), R(6), U8(1),
                B(Ldar), R(5),
                B(StaContextSlot), R(context), U8(4),
                B(PopContext), R(3),
                B(Jump), U8(-111),
                B(LdaUndefined),
  /*  137 S> */ 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,
]
handlers: [
]

