blob: c23053becb94cbb05aaf4b303481664afb50e2ee [file] [log] [blame]
Bill Buzbee7c58bd42016-01-20 20:46:01 +00001%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 Katkov05dfaaa2016-01-28 08:21:26 +060016 call SYMBOL($helper)
Serguei Katkovff8579e2016-02-17 11:30:23 +060017 testb %al, %al
Bill Buzbee7c58bd42016-01-20 20:46:01 +000018 jz MterpException
Bill Buzbee481352d2016-02-25 17:37:46 +000019 ADVANCE_PC 3
20 call SYMBOL(MterpShouldSwitchInterpreters)
21 testb %al, %al
22 jnz MterpFallback
Serguei Katkovff8579e2016-02-17 11:30:23 +060023 RESTORE_IBASE
Bill Buzbee481352d2016-02-25 17:37:46 +000024 FETCH_INST
25 GOTO_NEXT