aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api/vim.c
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2022-05-23 19:53:19 +0200
committerbfredl <bjorn.linse@gmail.com>2022-06-02 16:05:24 +0200
commitd5f047bee04a42f40425c34061c84b39af846e1f (patch)
treed81bb803389467604e2ad319b54b211415594ce6 /src/nvim/api/vim.c
parentd93ba03c717bee05fe6d239fd7faefe6e9698c85 (diff)
downloadrneovim-d5f047bee04a42f40425c34061c84b39af846e1f.tar.gz
rneovim-d5f047bee04a42f40425c34061c84b39af846e1f.tar.bz2
rneovim-d5f047bee04a42f40425c34061c84b39af846e1f.zip
refactor(api): use a unpacker based on libmpack instead of msgpack-c
Currently this is more or less a straight off reimplementation, but this allow further optimizations down the line, especially for avoiding memory allocations of rpc objects. Current score for "make functionaltest; make oldtest" on a -DEXITFREE build: is 117 055 352 xfree(ptr != NULL) calls (that's NUMBERWANG!).
Diffstat (limited to 'src/nvim/api/vim.c')
-rw-r--r--src/nvim/api/vim.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c
index 228d114376..2320ae62af 100644
--- a/src/nvim/api/vim.c
+++ b/src/nvim/api/vim.c
@@ -45,6 +45,7 @@
#include "nvim/move.h"
#include "nvim/msgpack_rpc/channel.h"
#include "nvim/msgpack_rpc/helpers.h"
+#include "nvim/msgpack_rpc/unpacker.h"
#include "nvim/ops.h"
#include "nvim/option.h"
#include "nvim/os/input.h"
@@ -2188,6 +2189,12 @@ void nvim__screenshot(String path)
ui_call_screenshot(path);
}
+Object nvim__unpack(String str, Error *err)
+ FUNC_API_FAST
+{
+ return unpack(str.data, str.size, err);
+}
+
/// Deletes an uppercase/file named mark. See |mark-motions|.
///
/// @note fails with error if a lowercase or buffer local named mark is used.