1%verify "executed"
2%verify "null object"
3    /* For: iput-object-quick */
4    /* op vA, vB, offset@CCCC */
5    movzbl    rINSTbl,%ecx              # ecx<- BA
6    sarl      $$4,%ecx                  # ecx<- B
7    GET_VREG_R  %ecx %ecx               # vB (object we're operating on)
8    andb      $$0xf,rINSTbl             # rINST<- A
9    GET_VREG_R  rINST rINST             # rINST<- v[A]
10    movzwl    2(rPC),%eax               # eax<- field byte offset
11    testl     %ecx,%ecx                 # is object null?
12    je        common_errNullObject
13    movl      rINST,(%ecx,%eax,1)
14    movl      rSELF,%eax
15    testl     rINST,rINST               # did we store null?
16    movl      offThread_cardTable(%eax),%eax  # get card table base
17    je        1f                            # skip card mark if null store
18    shrl      $$GC_CARD_SHIFT,%ecx          # object head to card number
19    movb      %al,(%eax,%ecx)               # mark card based on object head
201:
21    FETCH_INST_OPCODE 2 %ecx
22    ADVANCE_PC 2
23    GOTO_NEXT_R %ecx
24