diff options
author | bfredl <bjorn.linse@gmail.com> | 2024-02-12 20:40:27 +0100 |
---|---|---|
committer | bfredl <bjorn.linse@gmail.com> | 2024-02-15 10:42:06 +0100 |
commit | d60412b18e4e21f301baa2ac3f3fb7be89655e4b (patch) | |
tree | 2459531b83b937b6678ee7141badc27d0a331c29 /src/nvim/context.c | |
parent | 0a51e7626a95a068c7bb00d0da28a701fed758da (diff) | |
download | rneovim-d60412b18e4e21f301baa2ac3f3fb7be89655e4b.tar.gz rneovim-d60412b18e4e21f301baa2ac3f3fb7be89655e4b.tar.bz2 rneovim-d60412b18e4e21f301baa2ac3f3fb7be89655e4b.zip |
refactor(eval): use arena when converting typvals to Object
Note: this contains two _temporary_ changes which can be reverted
once the Arena vs no-Arena distinction in API wrappers has been removed.
Both nlua_push_Object and object_to_vim_take_luaref() has been changed
to take the object argument as a pointer. This is not going to be
necessary once these are only used with arena (or not at all) allocated
Objects.
The object_to_vim() variant which leaves luaref untouched might need to
stay for a little longer.
Diffstat (limited to 'src/nvim/context.c')
-rw-r--r-- | src/nvim/context.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/nvim/context.c b/src/nvim/context.c index 7ce906b244..95e2618f62 100644 --- a/src/nvim/context.c +++ b/src/nvim/context.c @@ -296,7 +296,7 @@ static inline void ctx_restore_funcs(Context *ctx) /// @param[in] sbuf msgpack_sbuffer to convert. /// /// @return readfile()-style array representation of "sbuf". -static inline Array sbuf_to_array(msgpack_sbuffer sbuf) +static inline Array sbuf_to_array(msgpack_sbuffer sbuf, Arena *arena) { list_T *const list = tv_list_alloc(kListLenMayKnow); tv_list_append_string(list, "", 0); @@ -310,7 +310,7 @@ static inline Array sbuf_to_array(msgpack_sbuffer sbuf) .vval.v_list = list }; - Array array = vim_to_object(&list_tv).data.array; + Array array = vim_to_object(&list_tv, arena, false).data.array; tv_clear(&list_tv); return array; } @@ -346,18 +346,18 @@ static inline msgpack_sbuffer array_to_sbuf(Array array, Error *err) /// @param[in] ctx Context to convert. /// /// @return Dictionary representing "ctx". -Dictionary ctx_to_dict(Context *ctx) +Dictionary ctx_to_dict(Context *ctx, Arena *arena) FUNC_ATTR_NONNULL_ALL { assert(ctx != NULL); - Dictionary rv = ARRAY_DICT_INIT; + Dictionary rv = arena_dict(arena, 5); - PUT(rv, "regs", ARRAY_OBJ(sbuf_to_array(ctx->regs))); - PUT(rv, "jumps", ARRAY_OBJ(sbuf_to_array(ctx->jumps))); - PUT(rv, "bufs", ARRAY_OBJ(sbuf_to_array(ctx->bufs))); - PUT(rv, "gvars", ARRAY_OBJ(sbuf_to_array(ctx->gvars))); - PUT(rv, "funcs", ARRAY_OBJ(copy_array(ctx->funcs, NULL))); + PUT_C(rv, "regs", ARRAY_OBJ(sbuf_to_array(ctx->regs, arena))); + PUT_C(rv, "jumps", ARRAY_OBJ(sbuf_to_array(ctx->jumps, arena))); + PUT_C(rv, "bufs", ARRAY_OBJ(sbuf_to_array(ctx->bufs, arena))); + PUT_C(rv, "gvars", ARRAY_OBJ(sbuf_to_array(ctx->gvars, arena))); + PUT_C(rv, "funcs", ARRAY_OBJ(copy_array(ctx->funcs, arena))); return rv; } |