Bill Buzbee | 7c58bd4 | 2016-01-20 20:46:01 +0000 | [diff] [blame] | 1 | /* |
| 2 | * SGET_WIDE handler wrapper. |
| 3 | * |
| 4 | */ |
| 5 | /* sget-wide vAA, field@BBBB */ |
| 6 | .extern artGet64StaticFromCode |
| 7 | EXPORT_PC |
| 8 | movzwl 2(rPC), %eax |
| 9 | movl %eax, OUT_ARG0(%esp) # field ref CCCC |
| 10 | movl OFF_FP_METHOD(rFP), %eax |
| 11 | movl %eax, OUT_ARG1(%esp) # referrer |
| 12 | movl rSELF, %ecx |
| 13 | movl %ecx, OUT_ARG2(%esp) # self |
Serguei Katkov | 05dfaaa | 2016-01-28 08:21:26 +0600 | [diff] [blame] | 14 | call SYMBOL(artGet64StaticFromCode) |
Bill Buzbee | 7c58bd4 | 2016-01-20 20:46:01 +0000 | [diff] [blame] | 15 | movl rSELF, %ecx |
| 16 | cmpl $$0, THREAD_EXCEPTION_OFFSET(%ecx) |
| 17 | jnz MterpException |
Serguei Katkov | 05dfaaa | 2016-01-28 08:21:26 +0600 | [diff] [blame] | 18 | SET_VREG %eax, rINST # fp[A]<- low part |
| 19 | SET_VREG_HIGH %edx, rINST # fp[A+1]<- high part |
Serguei Katkov | ff8579e | 2016-02-17 11:30:23 +0600 | [diff] [blame] | 20 | RESTORE_IBASE_FROM_SELF %ecx |
Bill Buzbee | 7c58bd4 | 2016-01-20 20:46:01 +0000 | [diff] [blame] | 21 | ADVANCE_PC_FETCH_AND_GOTO_NEXT 2 |