#
# Autogenerated by generate-bytecode-expectations.
#

---
pool type: mixed
execute: yes
wrap: yes

---
snippet: "
  var a = 1; a += 2;
"
frame size: 2
parameter count: 1
bytecode array length: 15
bytecodes: [
  B(StackCheck),
  B(LdaSmi), U8(1),
  B(Star), R(0),
  B(Star), R(1),
  B(LdaSmi), U8(2),
  B(Add), R(1),
  B(Star), R(0),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = 1; a /= 2;
"
frame size: 2
parameter count: 1
bytecode array length: 15
bytecodes: [
  B(StackCheck),
  B(LdaSmi), U8(1),
  B(Star), R(0),
  B(Star), R(1),
  B(LdaSmi), U8(2),
  B(Div), R(1),
  B(Star), R(0),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
]
handlers: [
]

---
snippet: "
  var a = { val: 2 }; a.name *= 2;
"
frame size: 3
parameter count: 1
bytecode array length: 27
bytecodes: [
  B(StackCheck),
  B(CreateObjectLiteral), U8(0), U8(0), U8(5),
  B(Star), R(1),
  B(Star), R(0),
  B(Star), R(1),
  B(LoadIC), R(1), U8(1), U8(1),
  B(Star), R(2),
  B(LdaSmi), U8(2),
  B(Mul), R(2),
  B(StoreICSloppy), R(1), U8(1), U8(3),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
  InstanceType::FIXED_ARRAY_TYPE,
  InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
]
handlers: [
]

---
snippet: "
  var a = { 1: 2 }; a[1] ^= 2;
"
frame size: 4
parameter count: 1
bytecode array length: 30
bytecodes: [
  B(StackCheck),
  B(CreateObjectLiteral), U8(0), U8(0), U8(5),
  B(Star), R(1),
  B(Star), R(0),
  B(Star), R(1),
  B(LdaSmi), U8(1),
  B(Star), R(2),
  B(KeyedLoadIC), R(1), U8(1),
  B(Star), R(3),
  B(LdaSmi), U8(2),
  B(BitwiseXor), R(3),
  B(KeyedStoreICSloppy), R(1), R(2), U8(3),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
  InstanceType::FIXED_ARRAY_TYPE,
]
handlers: [
]

---
snippet: "
  var a = 1; (function f() { return a; }); a |= 24;
"
frame size: 2
parameter count: 1
bytecode array length: 30
bytecodes: [
  B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), U8(1),
  B(PushContext), R(0),
  B(StackCheck),
  B(LdaSmi), U8(1),
  B(StaContextSlot), R(context), U8(4),
  B(CreateClosure), U8(0), U8(0),
  B(LdaContextSlot), R(context), U8(4),
  B(Star), R(1),
  B(LdaSmi), U8(24),
  B(BitwiseOr), R(1),
  B(StaContextSlot), R(context), U8(4),
  B(LdaUndefined),
  B(Return),
]
constant pool: [
  InstanceType::SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]

