blob: 5690b22028e61a03a366e4693e6222153a5183b3 [file] [log] [blame]
%default { "helper":"UndefinedInvokeHandler" }
/*
* invoke-polymorphic handler wrapper.
*/
/* op {vC, vD, vE, vF, vG}, meth@BBBB, proto@HHHH */
/* op {vCCCC..v(CCCC+AA-1)}, meth@BBBB, proto@HHHH */
.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 4
call SYMBOL(MterpShouldSwitchInterpreters)
testb %al, %al
jnz MterpFallback
RESTORE_IBASE
FETCH_INST
GOTO_NEXT