Bill Buzbee | 7c58bd4 | 2016-01-20 20:46:01 +0000 | [diff] [blame] | 1 | %default { "helper":"UndefinedInvokeHandler" } |
| 2 | /* |
| 3 | * Generic invoke handler wrapper. |
| 4 | */ |
| 5 | /* op vB, {vD, vE, vF, vG, vA}, class@CCCC */ |
| 6 | /* op {vCCCC..v(CCCC+AA-1)}, meth@BBBB */ |
| 7 | .extern $helper |
| 8 | EXPORT_PC |
| 9 | movl rSELF, %ecx |
| 10 | movl %ecx, OUT_ARG0(%esp) |
| 11 | leal OFF_FP_SHADOWFRAME(rFP), %eax |
| 12 | movl %eax, OUT_ARG1(%esp) |
| 13 | movl rPC, OUT_ARG2(%esp) |
| 14 | REFRESH_INST ${opnum} |
| 15 | movl rINST, OUT_ARG3(%esp) |
Serguei Katkov | 05dfaaa | 2016-01-28 08:21:26 +0600 | [diff] [blame] | 16 | call SYMBOL($helper) |
Serguei Katkov | ff8579e | 2016-02-17 11:30:23 +0600 | [diff] [blame] | 17 | testb %al, %al |
Bill Buzbee | 7c58bd4 | 2016-01-20 20:46:01 +0000 | [diff] [blame] | 18 | jz MterpException |
Bill Buzbee | 481352d | 2016-02-25 17:37:46 +0000 | [diff] [blame] | 19 | ADVANCE_PC 3 |
| 20 | call SYMBOL(MterpShouldSwitchInterpreters) |
| 21 | testb %al, %al |
| 22 | jnz MterpFallback |
Serguei Katkov | ff8579e | 2016-02-17 11:30:23 +0600 | [diff] [blame] | 23 | RESTORE_IBASE |
Bill Buzbee | 481352d | 2016-02-25 17:37:46 +0000 | [diff] [blame] | 24 | FETCH_INST |
| 25 | GOTO_NEXT |