1%default { "is_object":"0", "helper":"artGet32InstanceFromCode", "wide":"0"} 2/* 3 * General instance field get. 4 * 5 * for: iget, iget-object, iget-boolean, iget-byte, iget-char, iget-short, iget-wide 6 */ 7 EXPORT_PC 8 movzbq rINSTbl, %rcx # rcx <- BA 9 movzwl 2(rPC), OUT_32_ARG0 # eax <- field ref CCCC 10 sarl $$4, %ecx # ecx <- B 11 GET_VREG OUT_32_ARG1, %rcx # the object pointer 12 movq OFF_FP_METHOD(rFP), OUT_ARG2 # referrer 13 movq rSELF, OUT_ARG3 14 call SYMBOL($helper) 15 movq rSELF, %rcx 16 cmpq $$0, THREAD_EXCEPTION_OFFSET(%rcx) 17 jnz MterpException # bail out 18 andb $$0xf, rINSTbl # rINST <- A 19 .if $is_object 20 SET_VREG_OBJECT %eax, rINSTq # fp[A] <-value 21 .else 22 .if $wide 23 SET_WIDE_VREG %rax, rINSTq # fp[A] <-value 24 .else 25 SET_VREG %eax, rINSTq # fp[A] <-value 26 .endif 27 .endif 28 ADVANCE_PC_FETCH_AND_GOTO_NEXT 2 29