[Tarantool-patches] [PATCH luajit] x64: Fix __call metamethod return dispatch.
Kirill Yukhin
kyukhin at tarantool.org
Mon Dec 7 12:37:32 MSK 2020
Hello,
On 04 Dec 16:42, Igor Munkin via Tarantool-patches wrote:
> From: Mike Pall <mike>
>
> After linking new cframe to the chain KBASEa still stores the address of
> the previous one. If the execution proceeds to <lj_vmeta_call> KBASE
> value (i.e. low 32 bits of the stored address) might be equal to the
> current BASE address value so the execution takes the invalid path. Such
> address clashing occurs only on x86_64 platform with disabled LJ_GC64,
> so 64-bit registers have to be compared in x64 build.
>
> NB: Though there is only 32-bit load to restore BASE value prior to the
> comparison, the high 32 bits of RDX are reset to zeros, according to x86
> long mode semantics.
>
> Igor Munkin:
> * backported the original patch to tarantool/luajit repo
> * extended the original commit message with the rationale
>
> For more info and explanation see LuaJIT/LuaJIT#636.
>
> Relates to tarantool/tarantool#4518
> Relates to tarantool/tarantool#4649
>
> Signed-off-by: Igor Munkin <imun at tarantool.org>
I've checked your patch into Tarantool's luakit release branches and
bumped a new version in 1.10, 2.5, 2.6 and master.
--
Regards, Kirill Yukhin
More information about the Tarantool-patches
mailing list