1 %default { "extend":"", "is_object":"0", "helper":"artGet32InstanceFromCode"} 2 /* 3 * General instance field get. 4 * 5 * for: iget, iget-object, iget-boolean, iget-byte, iget-char, iget-short 6 */ 7 EXPORT_PC 8 FETCH w0, 1 // w0<- field ref CCCC 9 lsr w1, wINST, #12 // w1<- B 10 GET_VREG w1, w1 // w1<- fp[B], the object pointer 11 ldr x2, [xFP, #OFF_FP_METHOD] // w2<- referrer 12 mov x3, xSELF // w3<- self 13 bl $helper 14 ldr x3, [xSELF, #THREAD_EXCEPTION_OFFSET] 15 $extend 16 ubfx w2, wINST, #8, #4 // w2<- A 17 PREFETCH_INST 2 18 cbnz x3, MterpPossibleException // bail out 19 .if $is_object 20 SET_VREG_OBJECT w0, w2 // fp[A]<- w0 21 .else 22 SET_VREG w0, w2 // fp[A]<- w0 23 .endif 24 ADVANCE 2 25 GET_INST_OPCODE ip // extract opcode from rINST 26 GOTO_OPCODE ip // jump to next instruction 27