#
# Autogenerated by generate-bytecode-expectations.
#

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

---
snippet: "
  try { return 1; } catch(e) { return 2; }
"
frame size: 5
parameter count: 1
bytecode array length: 41
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(Mov), R(context), R(1),
  /*   40 S> */ B(LdaSmi), U8(1),
  /*   75 S> */ B(Return),
                B(Jump), U8(32),
                B(Star), R(3),
                B(LdaConstant), U8(0),
                B(Star), R(2),
                B(Mov), R(closure), R(4),
                B(CallRuntime), U16(Runtime::kPushCatchContext), R(2), U8(3),
                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: 6
parameter count: 1
bytecode array length: 79
bytecodes: [
  /*   30 E> */ B(StackCheck),
                B(Mov), R(context), R(2),
  /*   47 S> */ B(LdaSmi), U8(1),
                B(Star), R(0),
                B(Jump), U8(29),
                B(Star), R(4),
                B(LdaConstant), U8(0),
                B(Star), R(3),
                B(Mov), R(closure), R(5),
  /*   49 E> */ B(CallRuntime), U16(Runtime::kPushCatchContext), R(3), U8(3),
                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(33),
                B(Star), R(4),
                B(LdaConstant), U8(1),
                B(Star), R(3),
                B(Mov), R(closure), R(5),
  /*   77 E> */ B(CallRuntime), U16(Runtime::kPushCatchContext), R(3), U8(3),
                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],
  [40, 44, 46],
]

