blob: c847e2dc885714f545a968b8b8a53ce08c503ad8 [file] [log] [blame]
Bill Buzbee7c58bd42016-01-20 20:46:01 +00001%default { "handler":"artSet32InstanceFromMterp" }
2/*
3 * General 32-bit instance field put.
4 *
5 * for: iput, iput-object, iput-boolean, iput-byte, iput-char, iput-short
6 */
7 /* op vA, vB, field@CCCC */
8 .extern $handler
9 EXPORT_PC
10 movzwl 2(rPC), %eax # eax<- 0000CCCC
11 movl %eax, OUT_ARG0(%esp) # field ref CCCC
12 movzbl rINSTbl, %ecx # ecx<- BA
13 sarl $$4, %ecx # ecx<- B
14 GET_VREG %ecx, %ecx
15 movl %ecx, OUT_ARG1(%esp) # the object pointer
16 andb $$0xf, rINSTbl # rINST<- A
17 GET_VREG %eax, rINST
18 movl %eax, OUT_ARG2(%esp) # fp[A]
19 movl OFF_FP_METHOD(rFP), %eax
20 movl %eax, OUT_ARG3(%esp) # referrer
Serguei Katkov05dfaaa2016-01-28 08:21:26 +060021 call SYMBOL($handler)
Serguei Katkovff8579e2016-02-17 11:30:23 +060022 testb %al, %al
Bill Buzbee7c58bd42016-01-20 20:46:01 +000023 jnz MterpPossibleException
Serguei Katkovff8579e2016-02-17 11:30:23 +060024 RESTORE_IBASE
Bill Buzbee7c58bd42016-01-20 20:46:01 +000025 ADVANCE_PC_FETCH_AND_GOTO_NEXT 2