blob: df43efe6a40d66052772fd14285a3433ecf68dd6 [file] [log] [blame]
%default { "is_object":"0", "helper":"artGet32InstanceFromCode", "wide":"0"}
/*
* General instance field get.
*
* for: iget, iget-object, iget-boolean, iget-byte, iget-char, iget-short, iget-wide
*/
EXPORT_PC
movzbq rINSTbl, %rcx # rcx <- BA
movzwl 2(rPC), OUT_32_ARG0 # eax <- field ref CCCC
sarl $$4, %ecx # ecx <- B
GET_VREG OUT_32_ARG1, %rcx # the object pointer
movq OFF_FP_METHOD(rFP), OUT_ARG2 # referrer
movq rSELF, OUT_ARG3
call SYMBOL($helper)
movq rSELF, %rcx
cmpq $$0, THREAD_EXCEPTION_OFFSET(%rcx)
jnz MterpException # bail out
andb $$0xf, rINSTbl # rINST <- A
.if $is_object
SET_VREG_OBJECT %eax, rINSTq # fp[A] <-value
.else
.if $wide
SET_WIDE_VREG %rax, rINSTq # fp[A] <-value
.else
SET_VREG %eax, rINSTq # fp[A] <-value
.endif
.endif
ADVANCE_PC_FETCH_AND_GOTO_NEXT 2