#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: yes

---
snippet: "
  var a = 1; a += 2;
"
frame size: 1
parameter count: 1
bytecode array length: 11
bytecodes: [
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(AddSmi), I8(2), U8(0),
                B(Star), R(0),
                B(LdaUndefined),
  /*   53 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = 1; a /= 2;
"
frame size: 1
parameter count: 1
bytecode array length: 11
bytecodes: [
  /*   42 S> */ B(LdaSmi), I8(1),
                B(Star), R(0),
  /*   45 S> */ B(DivSmi), I8(2), U8(0),
                B(Star), R(0),
                B(LdaUndefined),
  /*   53 S> */ B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = { val: 2 }; a.name *= 2;
"
frame size: 1
parameter count: 1
bytecode array length: 19
bytecodes: [
  /*   42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
                B(Star), R(0),
  /*   54 S> */ B(LdaNamedProperty), R(0), U8(1), U8(1),
                B(MulSmi), I8(2), U8(3),
  /*   61 E> */ B(StaNamedProperty), R(0), U8(1), U8(4),
                B(LdaUndefined),
  /*   67 S> */ B(Return),
]
constant pool: [
  OBJECT_BOILERPLATE_DESCRIPTION_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["name"],
]
handlers: [
]

---
snippet: "
  var a = { 1: 2 }; a[1] ^= 2;
"
frame size: 3
parameter count: 1
bytecode array length: 22
bytecodes: [
  /*   42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
                B(Star), R(0),
  /*   52 S> */ B(LdaSmi), I8(1),
                B(Star), R(2),
                B(LdaKeyedProperty), R(0), U8(1),
                B(BitwiseXorSmi), I8(2), U8(3),
  /*   57 E> */ B(StaKeyedProperty), R(0), R(2), U8(4),
                B(LdaUndefined),
  /*   63 S> */ B(Return),
]
constant pool: [
  OBJECT_BOILERPLATE_DESCRIPTION_TYPE,
]
handlers: [
]

---
snippet: "
  var a = 1; (function f() { return a; }); a |= 24;
"
frame size: 1
parameter count: 1
bytecode array length: 22
bytecodes: [
  /*   30 E> */ B(CreateFunctionContext), U8(0), U8(1),
                B(PushContext), R(0),
  /*   42 S> */ B(LdaSmi), I8(1),
  /*   42 E> */ B(StaCurrentContextSlot), U8(2),
  /*   45 S> */ B(CreateClosure), U8(1), U8(0), U8(2),
  /*   75 S> */ B(LdaCurrentContextSlot), U8(2),
                B(BitwiseOrSmi), I8(24), U8(0),
  /*   77 E> */ B(StaCurrentContextSlot), U8(2),
                B(LdaUndefined),
  /*   84 S> */ B(Return),
]
constant pool: [
  SCOPE_INFO_TYPE,
  SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

