100b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze /* For: iget-object-quick */ 200b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze /* op vA, vB, offset//CCCC */ 300b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze .extern artIGetObjectFromMterp 400b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze srl a2, rINST, 12 # a2 <- B 500b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze lhu a1, 2(rPC) # a1 <- field byte offset 600b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze EXPORT_PC 700b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze GET_VREG_U a0, a2 # a0 <- object we're operating on 800b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze jal artIGetObjectFromMterp # (obj, offset) 900b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze ld a3, THREAD_EXCEPTION_OFFSET(rSELF) 1000b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze ext a2, rINST, 8, 4 # a2 <- A 1100b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze PREFETCH_INST 2 1200b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze bnez a3, MterpPossibleException # bail out 1300b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze SET_VREG_OBJECT v0, a2 # fp[A] <- v0 1400b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze ADVANCE 2 # advance rPC 1500b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze GET_INST_OPCODE v0 # extract opcode from rINST 1600b53b7f3f9ce5996b767b52c28dd846f47a723cAlexey Frunze GOTO_OPCODE v0 # jump to next instruction 17