| %default { "helper":"UndefinedInvokeHandler" } |
| /* |
| * Generic invoke handler wrapper. |
| */ |
| /* op vB, {vD, vE, vF, vG, vA}, class@CCCC */ |
| /* op {vCCCC..v(CCCC+AA-1)}, meth@BBBB */ |
| .extern $helper |
| EXPORT_PC |
| movl rSELF, %ecx |
| movl %ecx, OUT_ARG0(%esp) |
| leal OFF_FP_SHADOWFRAME(rFP), %eax |
| movl %eax, OUT_ARG1(%esp) |
| movl rPC, OUT_ARG2(%esp) |
| REFRESH_INST ${opnum} |
| movl rINST, OUT_ARG3(%esp) |
| call SYMBOL($helper) |
| testb %al, %al |
| jz MterpException |
| ADVANCE_PC 3 |
| call SYMBOL(MterpShouldSwitchInterpreters) |
| testb %al, %al |
| jnz MterpFallback |
| RESTORE_IBASE |
| FETCH_INST |
| GOTO_NEXT |