[Tarantool-patches] [PATCH luajit 2/3] misc: use prof_error for handling errors

Sergey Kaplun skaplun at tarantool.org
Wed Mar 5 17:49:37 MSK 2025


Hi, Sergey!
Thanks for the patch!
LGTM, except 1 minor comment and 1 reminder below.

On 25.02.25, Sergey Bronnikov wrote:
> The patch consolidates handling profilers errors into a single
> place - in a function `prof_error()` and handles PROFILE_ERRIO,
> generated in a function `misc_memprof_start`, in a `prof_error()`.
> ---
>  src/lib_misc.c | 49 +++++++++----------------------------------------
>  1 file changed, 9 insertions(+), 40 deletions(-)
> 
> diff --git a/src/lib_misc.c b/src/lib_misc.c
> index b4b58509..c4b40996 100644
> --- a/src/lib_misc.c
> +++ b/src/lib_misc.c
> @@ -286,14 +286,14 @@ static int prof_error(lua_State *L, int status, const char *err_details)
>          lua_pushstring(L, err2msg(LJ_ERR_PROF_MISUSE));
>        lua_pushinteger(L, EINVAL);
>        return 3;
> -#if LJ_HASSYSPROF
> +#if LJ_HASSYSPROF || LJ_HASMEMPROF
>      case PROFILE_ERRRUN:
>        lua_pushnil(L);
>        lua_pushstring(L, err2msg(LJ_ERR_PROF_ISRUNNING));
>        lua_pushinteger(L, EINVAL);
>        return 3;
>      case PROFILE_ERRIO:
> -      return luaL_fileresult(L, 0, NULL);
> +      return luaL_fileresult(L, 0, err_details);

Discussed offline that this should be done in the previous patch-set.

>  #endif

<snipped>

> +  if (LJ_UNLIKELY(status == PROFILE_ERRRUN)) {
>        lua_pushnil(L);
>        lua_pushstring(L, err2msg(LJ_ERR_PROF_NOTRUNNING));
>        lua_pushinteger(L, EINVAL);
>        return 3;
> -    case PROFILE_ERRIO:
> -      return luaL_fileresult(L, 0, NULL);
> -#endif
> -    default:
> -      lj_assertL(0, "bad memprof error %d", status);
> -      return 0;
> -    }
>    }
> +  if (LJ_UNLIKELY(status != PROFILE_SUCCESS))

Minor: Looks like more natural to use `else if` here?
Feel free to ignore.

> +    return prof_error(L, status, NULL);
> +
>    lua_pushboolean(L, 1);
>    return 1;
>  #endif /* !LJ_HASMEMPROF */
> -- 
> 2.43.0
> 

-- 
Best regards,
Sergey Kaplun


More information about the Tarantool-patches mailing list