aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/generators/gen_eval.lua
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2022-08-23 09:33:08 +0200
committerbfredl <bjorn.linse@gmail.com>2022-08-23 18:34:24 +0200
commitc0d60526541a3cf977ae623471ae4a347b492af1 (patch)
tree569f6a2d669266d33f3a8eea39328c06f9107849 /src/nvim/generators/gen_eval.lua
parentbaaaa1f2b3b6ae3a989d1362a27e55dc7b0b148a (diff)
downloadrneovim-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.lua15
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()