blob: b628e577bd911cce680b8defe1f74d143873261b [file] [log] [blame]
%verify "executed"
%verify "null object"
/* For: iput-object-quick */
/* op vA, vB, offset@CCCC */
movzbl rINSTbl,%ecx # ecx<- BA
sarl $$4,%ecx # ecx<- B
GET_VREG_R %ecx %ecx # vB (object we're operating on)
andb $$0xf,rINSTbl # rINST<- A
GET_VREG_R rINST rINST # rINST<- v[A]
movzwl 2(rPC),%eax # eax<- field byte offset
testl %ecx,%ecx # is object null?
je common_errNullObject
movl rINST,(%ecx,%eax,1)
movl rSELF,%eax
testl rINST,rINST # did we store null?
movl offThread_cardTable(%eax),%eax # get card table base
je 1f # skip card mark if null store
shrl $$GC_CARD_SHIFT,%ecx # object head to card number
movb %al,(%eax,%ecx) # mark card based on object head
1:
FETCH_INST_OPCODE 2 %ecx
ADVANCE_PC 2
GOTO_NEXT_R %ecx