#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
top level: yes

---
snippet: "
  
        l = {
          'aa': 1.1,
          'bb': 2.2
        };
  
        v = l['aa'] + l['bb'];
        l['bb'] = 7;
        l['aa'] = l['bb'];
       
"
frame size: 3
parameter count: 1
bytecode array length: 71
bytecodes: [
  /*    0 E> */ B(StackCheck),
  /*    7 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
  /*    9 E> */ B(StaGlobal), U8(1), U8(1),
  /*   66 S> */ B(LdaGlobal), U8(1), U8(4),
                B(Star), R(1),
  /*   71 E> */ B(LdaNamedProperty), R(1), U8(2), U8(6),
                B(Star), R(1),
  /*   80 E> */ B(LdaGlobal), U8(1), U8(4),
                B(Star), R(2),
  /*   81 E> */ B(LdaNamedProperty), R(2), U8(3), U8(8),
  /*   78 E> */ B(Add), R(1), U8(3),
  /*   68 E> */ B(StaGlobal), U8(4), U8(10),
  /*   95 S> */ B(LdaGlobal), U8(1), U8(4),
                B(Star), R(1),
                B(LdaSmi), I8(7),
  /*  103 E> */ B(StaNamedProperty), R(1), U8(3), U8(12),
  /*  114 S> */ B(LdaGlobal), U8(1), U8(4),
                B(Star), R(1),
  /*  124 E> */ B(LdaGlobal), U8(1), U8(4),
                B(Star), R(2),
  /*  125 E> */ B(LdaNamedProperty), R(2), U8(3), U8(8),
                B(Star), R(2),
  /*  122 E> */ B(StaNamedProperty), R(1), U8(2), U8(14),
                B(Mov), R(2), R(0),
                B(Ldar), R(0),
  /*  139 S> */ B(Return),
]
constant pool: [
  OBJECT_BOILERPLATE_DESCRIPTION_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["l"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["aa"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["bb"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["v"],
]
handlers: [
]

---
snippet: "
  
        l = {
          'cc': 3.1,
          'dd': 4.2
        };
        if (l['cc'] < 3) {
          l['cc'] = 3;
        } else {
          l['dd'] = 3;
        }
       
"
frame size: 3
parameter count: 1
bytecode array length: 67
bytecodes: [
  /*    0 E> */ B(StackCheck),
  /*    7 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41),
  /*    9 E> */ B(StaGlobal), U8(1), U8(1),
  /*   65 S> */ B(LdaGlobal), U8(1), U8(3),
                B(Star), R(1),
  /*   70 E> */ B(LdaNamedProperty), R(1), U8(2), U8(5),
                B(Star), R(1),
                B(LdaSmi), I8(3),
  /*   77 E> */ B(TestLessThan), R(1), U8(7),
                B(JumpIfFalse), U8(22),
  /*   92 S> */ B(LdaGlobal), U8(1), U8(3),
                B(Star), R(1),
                B(LdaSmi), I8(3),
                B(Star), R(2),
  /*  100 E> */ B(StaNamedProperty), R(1), U8(2), U8(8),
                B(Mov), R(2), R(0),
                B(Ldar), R(2),
                B(Jump), U8(20),
  /*  128 S> */ B(LdaGlobal), U8(1), U8(3),
                B(Star), R(1),
                B(LdaSmi), I8(3),
                B(Star), R(2),
  /*  136 E> */ B(StaNamedProperty), R(1), U8(3), U8(10),
                B(Mov), R(2), R(0),
                B(Ldar), R(2),
                B(Ldar), R(0),
  /*  155 S> */ B(Return),
]
constant pool: [
  OBJECT_BOILERPLATE_DESCRIPTION_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["l"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["cc"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["dd"],
]
handlers: [
]

