[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