#
# Autogenerated by generate-bytecode-expectations.
#

---
pool type: string
execute: yes
wrap: yes

---
snippet: "
  try { return 1; } catch(e) { return 2; }
"
frame size: 3
parameter count: 1
bytecode array length: 34
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(Mov), R(context), R(1),
  /*   40 S> */ B(LdaSmi), U8(1),
  /*   75 S> */ B(Return),
                B(Jump), U8(25),
                B(Star), R(2),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(2), U8(0),
                B(Star), R(1),
                B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
                B(Ldar), R(1),
                B(PushContext), R(0),
  /*   63 S> */ B(LdaSmi), U8(2),
                B(PopContext), R(0),
  /*   75 S> */ B(Return),
                B(LdaUndefined),
  /*   75 S> */ B(Return),
]
constant pool: [
  "e",
]
handlers: [
  [4, 7, 9],
]

---
snippet: "
  var a;
  try { a = 1 } catch(e1) {};
  try { a = 2 } catch(e2) { a = 3 }
"
frame size: 4
parameter count: 1
bytecode array length: 65
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(Mov), R(context), R(2),
  /*   47 S> */ B(LdaSmi), U8(1),
                B(Star), R(0),
                B(Jump), U8(22),
                B(Star), R(3),
                B(Ldar), R(closure),
  /*   49 E> */ B(CreateCatchContext), R(3), U8(0),
                B(Star), R(2),
                B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
                B(Ldar), R(2),
                B(PushContext), R(1),
                B(PopContext), R(1),
                B(Mov), R(context), R(2),
  /*   75 S> */ B(LdaSmi), U8(2),
                B(Star), R(0),
                B(Jump), U8(26),
                B(Star), R(3),
                B(Ldar), R(closure),
  /*   77 E> */ B(CreateCatchContext), R(3), U8(1),
                B(Star), R(2),
                B(CallRuntime), U16(Runtime::kInterpreterClearPendingMessage), R(0), U8(0),
                B(Ldar), R(2),
                B(PushContext), R(1),
  /*   95 S> */ B(LdaSmi), U8(3),
                B(Star), R(0),
                B(PopContext), R(1),
                B(LdaUndefined),
  /*  103 S> */ B(Return),
]
constant pool: [
  "e1",
  "e2",
]
handlers: [
  [4, 8, 10],
  [33, 37, 39],
]

