diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-08-23 09:33:08 +0200 |
---|---|---|
committer | bfredl <bjorn.linse@gmail.com> | 2022-08-23 18:34:24 +0200 |
commit | c0d60526541a3cf977ae623471ae4a347b492af1 (patch) | |
tree | 569f6a2d669266d33f3a8eea39328c06f9107849 /src/nvim/generators/gen_eval.lua | |
parent | baaaa1f2b3b6ae3a989d1362a27e55dc7b0b148a (diff) | |
download | rneovim-c0d60526541a3cf977ae623471ae4a347b492af1.tar.gz rneovim-c0d60526541a3cf977ae623471ae4a347b492af1.tar.bz2 rneovim-c0d60526541a3cf977ae623471ae4a347b492af1.zip |
perf(api): allow to use an arena for return values
Diffstat (limited to 'src/nvim/generators/gen_eval.lua')
-rw-r--r-- | src/nvim/generators/gen_eval.lua | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/nvim/generators/gen_eval.lua b/src/nvim/generators/gen_eval.lua index c72249161b..8e6d1f2634 100644 --- a/src/nvim/generators/gen_eval.lua +++ b/src/nvim/generators/gen_eval.lua @@ -28,13 +28,20 @@ local hashy = require'generators.hashy' local hashpipe = io.open(funcsfname, 'wb') local funcs = require('eval').funcs +for _, func in pairs(funcs) do + if func.float_func then + func.func = "float_op_wrapper" + func.data = "{ .float_func = &"..func.float_func.." }" + end +end + local metadata = mpack.unpack(io.open(metadata_file, 'rb'):read("*all")) for _,fun in ipairs(metadata) do if fun.eval then funcs[fun.name] = { args=#fun.parameters, func='api_wrapper', - data='&handle_'..fun.name, + data='{ .api_handler = &method_handlers['..fun.handler_id..'] }' } end end @@ -60,12 +67,12 @@ for _, name in ipairs(neworder) do end local base = def.base or "BASE_NONE" local func = def.func or ('f_' .. name) - local data = def.data or "NULL" + local data = def.data or "{ .nullptr = NULL }" local fast = def.fast and 'true' or 'false' - hashpipe:write((' { "%s", %s, %s, %s, %s, &%s, (FunPtr)%s },\n') + hashpipe:write((' { "%s", %s, %s, %s, %s, &%s, %s },\n') :format(name, args[1], args[2], base, fast, func, data)) end -hashpipe:write(' { NULL, 0, 0, BASE_NONE, false, NULL, NULL },\n') +hashpipe:write(' { NULL, 0, 0, BASE_NONE, false, NULL, { .nullptr = NULL } },\n') hashpipe:write("};\n\n") hashpipe:write(hashfun) hashpipe:close() |