Douglas Leung | 200f040 | 2016-02-25 20:05:47 -0800 | [diff] [blame] | 1 | /* For: iget-object-quick */ |
| 2 | /* op vA, vB, offset@CCCC */ |
| 3 | GET_OPB(a2) # a2 <- B |
| 4 | FETCH(a1, 1) # a1 <- field byte offset |
| 5 | EXPORT_PC() |
| 6 | GET_VREG(a0, a2) # a0 <- object we're operating on |
| 7 | JAL(artIGetObjectFromMterp) # v0 <- GetObj(obj, offset) |
| 8 | lw a3, THREAD_EXCEPTION_OFFSET(rSELF) |
| 9 | GET_OPA4(a2) # a2<- A+ |
| 10 | PREFETCH_INST(2) # load rINST |
| 11 | bnez a3, MterpPossibleException # bail out |
Douglas Leung | 200f040 | 2016-02-25 20:05:47 -0800 | [diff] [blame] | 12 | ADVANCE(2) # advance rPC |
| 13 | GET_INST_OPCODE(t0) # extract opcode from rINST |
Alexey Frunze | 84603bf | 2016-10-21 19:54:43 -0700 | [diff] [blame] | 14 | SET_VREG_OBJECT_GOTO(v0, a2, t0) # fp[A] <- v0 |