[Tarantool-patches] [PATCH luajit 1/2] jit: abort trace recording and execution for C API

Vladislav Shpilevoy v.shpilevoy at tarantool.org
Fri Apr 3 02:41:14 MSK 2020


Hi! Thanks for the patch!

> diff --git a/src/lj_api.c b/src/lj_api.c
> index a5e2465..c1f53e0 100644
> --- a/src/lj_api.c
> +++ b/src/lj_api.c
> @@ -300,7 +311,7 @@ LUA_API int lua_equal(lua_State *L, int idx1, int idx2)
>        return (int)(uintptr_t)base;
>      } else {
>        L->top = base+2;
> -      lj_vm_call(L, base, 1+1);
> +      call(L, base, 1+1);

These changes look dangerous to perf. So if I had operators ==
and < overloaded for an FFI struct, they are not jitted anymore,
right? Why? Does someone really yield in them? Could you measure
how does it affect perf of these calls? From what I see, these
changes basically kill FFI making it not better than Lua C. It no
longer helps JITting anything, does it?

The same for concat, and other things. Looks like an overkill. We
would need sandwich protection only for a few places. Is it possible
to avoid such drastic changes?


More information about the Tarantool-patches mailing list