#
# Autogenerated by generate-bytecode-expectations.
#

---
pool type: number
execute: yes
wrap: yes

---
snippet: "
  var ld_a = 1;
  while(true) {
    ld_a = ld_a + ld_a;
    if (ld_a > 10) break;
  }
  return ld_a;
"
frame size: 1
parameter count: 1
bytecode array length: 25
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   45 S> */ B(LdaSmi), U8(1),
                B(Star), R(0),
  /*   48 E> */ B(StackCheck),
  /*   64 S> */ B(Ldar), R(0),
  /*   78 E> */ B(Add), R(0),
                B(Star), R(0),
  /*   86 S> */ B(LdaSmi), U8(10),
  /*   95 E> */ B(TestGreaterThan), R(0),
                B(JumpIfFalse), U8(4),
  /*  101 S> */ B(Jump), U8(4),
                B(Jump), U8(-15),
  /*  110 S> */ B(Ldar), R(0),
  /*  123 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var ld_a = 1;
  do {
    ld_a = ld_a + ld_a;
    if (ld_a > 10) continue;
  } while(false);
  return ld_a;
"
frame size: 1
parameter count: 1
bytecode array length: 23
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   45 S> */ B(LdaSmi), U8(1),
                B(Star), R(0),
  /*   48 E> */ B(StackCheck),
  /*   55 S> */ B(Ldar), R(0),
  /*   69 E> */ B(Add), R(0),
                B(Star), R(0),
  /*   77 S> */ B(LdaSmi), U8(10),
  /*   86 E> */ B(TestGreaterThan), R(0),
                B(JumpIfFalse), U8(4),
  /*   92 S> */ B(Jump), U8(2),
  /*  118 S> */ B(Ldar), R(0),
  /*  131 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var ld_a = 1;
    ld_a = ld_a + ld_a;
    return ld_a;
"
frame size: 1
parameter count: 1
bytecode array length: 12
bytecodes: [
  /*   30 E> */ B(StackCheck),
  /*   45 S> */ B(LdaSmi), U8(1),
                B(Star), R(0),
  /*   50 S> */ B(Nop),
  /*   64 E> */ B(Add), R(0),
                B(Star), R(0),
  /*   72 S> */ B(Nop),
  /*   85 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

