#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: yes

---
snippet: "
  var a = 1;
  switch(a) {
   case 1: return 2;
   case 2: return 3;
  }
"
frame size: 2
parameter count: 1
bytecode array length: 31
bytecodes: [
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(LdaSmi), I8(1),
                B(TestEqualStrict), R(0), U8(0),
                B(Mov), R(0), R(1),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(1), U8(0),
                B(JumpIfTrue), U8(7),
                B(Jump), U8(8),
  /*   66 S> */ B(LdaSmi), I8(2),
  /*   75 S> */ B(Return),
  /*   85 S> */ B(LdaSmi), I8(3),
  /*   94 S> */ B(Return),
                B(LdaUndefined),
  /*   97 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = 1;
  switch(a) {
   case 1: a = 2; break;
   case 2: a = 3; break;
  }
"
frame size: 2
parameter count: 1
bytecode array length: 37
bytecodes: [
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(LdaSmi), I8(1),
                B(TestEqualStrict), R(0), U8(0),
                B(Mov), R(0), R(1),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(1), U8(0),
                B(JumpIfTrue), U8(10),
                B(Jump), U8(14),
  /*   66 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*   73 S> */ B(Jump), U8(8),
  /*   89 S> */ B(LdaSmi), I8(3),
                B(Star), R(0),
  /*   96 S> */ B(Jump), U8(2),
                B(LdaUndefined),
  /*  105 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = 1;
  switch(a) {
   case 1: a = 2; // fall-through
   case 2: a = 3; break;
  }
"
frame size: 2
parameter count: 1
bytecode array length: 35
bytecodes: [
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(LdaSmi), I8(1),
                B(TestEqualStrict), R(0), U8(0),
                B(Mov), R(0), R(1),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(1), U8(0),
                B(JumpIfTrue), U8(8),
                B(Jump), U8(12),
  /*   66 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*   98 S> */ B(LdaSmi), I8(3),
                B(Star), R(0),
  /*  105 S> */ B(Jump), U8(2),
                B(LdaUndefined),
  /*  114 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = 1;
  switch(a) {
   case 2: break;
   case 3: break;
   default: a = 1; break;
  }
"
frame size: 2
parameter count: 1
bytecode array length: 35
bytecodes: [
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(LdaSmi), I8(2),
                B(TestEqualStrict), R(0), U8(0),
                B(Mov), R(0), R(1),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(3),
                B(TestEqualStrict), R(1), U8(0),
                B(JumpIfTrue), U8(6),
                B(Jump), U8(6),
  /*   66 S> */ B(Jump), U8(10),
  /*   82 S> */ B(Jump), U8(8),
  /*   99 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*  106 S> */ B(Jump), U8(2),
                B(LdaUndefined),
  /*  115 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = 1;
  switch(typeof(a)) {
   case 2: a = 1; break;
   case 3: a = 2; break;
   default: a = 3; break;
  }
"
frame size: 2
parameter count: 1
bytecode array length: 43
bytecodes: [
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(TypeOf),
                B(Star), R(1),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(1), U8(0),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(3),
                B(TestEqualStrict), R(1), U8(0),
                B(JumpIfTrue), U8(10),
                B(Jump), U8(14),
  /*   74 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   81 S> */ B(Jump), U8(14),
  /*   97 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  104 S> */ B(Jump), U8(8),
  /*  121 S> */ B(LdaSmi), I8(3),
                B(Star), R(0),
  /*  128 S> */ B(Jump), U8(2),
                B(LdaUndefined),
  /*  137 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = 1;
  switch(a) {
   case typeof(a): a = 1; break;
   default: a = 2; break;
  }
"
frame size: 2
parameter count: 1
bytecode array length: 29
bytecodes: [
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(TypeOf),
                B(TestEqualStrict), R(0), U8(0),
                B(Mov), R(0), R(1),
                B(JumpIfTrue), U8(4),
                B(Jump), U8(8),
  /*   74 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   81 S> */ B(Jump), U8(8),
  /*   98 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  105 S> */ B(Jump), U8(2),
                B(LdaUndefined),
  /*  114 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = 1;
  switch(a) {
   case 1:
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    a = 2;
    break;
   case 2:
    a = 3;
    break;
  }
"
frame size: 2
parameter count: 1
bytecode array length: 289
bytecodes: [
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(LdaSmi), I8(1),
                B(TestEqualStrict), R(0), U8(0),
                B(Mov), R(0), R(1),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(1), U8(0),
                B(JumpIfTrueConstant), U8(0),
                B(JumpConstant), U8(1),
  /*   68 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*   77 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*   86 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*   95 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  104 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  113 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  122 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  131 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  140 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  149 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  158 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  167 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  176 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  185 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  194 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  203 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  212 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  221 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  230 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  239 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  248 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  257 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  266 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  275 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  284 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  293 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  302 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  311 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  320 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  329 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  338 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  347 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  356 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  365 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  374 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  383 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  392 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  401 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  410 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  419 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  428 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  437 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  446 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  455 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  464 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  473 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  482 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  491 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  500 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  509 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  518 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  527 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  536 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  545 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  554 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  563 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  572 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  581 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  590 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  599 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  608 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  617 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  626 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  635 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  644 S> */ B(Jump), U8(8),
  /*  662 S> */ B(LdaSmi), I8(3),
                B(Star), R(0),
  /*  671 S> */ B(Jump), U8(2),
                B(LdaUndefined),
  /*  680 S> */ B(Return),
]
constant pool: [
  Smi [262],
  Smi [266],
]
handlers: [
]

---
snippet: "
  var a = 1;
  switch(a) {
   case 1: 
     switch(a + 1) {
        case 2 : a = 1; break;
        default : a = 2; break;
     }  // fall-through
   case 2: a = 3;
  }
"
frame size: 3
parameter count: 1
bytecode array length: 57
bytecodes: [
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(LdaSmi), I8(1),
                B(TestEqualStrict), R(0), U8(0),
                B(Mov), R(0), R(1),
                B(JumpIfTrue), U8(11),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(1), U8(0),
                B(JumpIfTrue), U8(32),
                B(Jump), U8(34),
  /*   70 S> */ B(Ldar), R(0),
  /*   79 E> */ B(AddSmi), I8(1), U8(1),
                B(Star), R(2),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(2), U8(2),
                B(JumpIfTrue), U8(4),
                B(Jump), U8(8),
  /*  101 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*  108 S> */ B(Jump), U8(8),
  /*  131 S> */ B(LdaSmi), I8(2),
                B(Star), R(0),
  /*  138 S> */ B(Jump), U8(2),
  /*  176 S> */ B(LdaSmi), I8(3),
                B(Star), R(0),
                B(LdaUndefined),
  /*  185 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

