From 8b7263181ed358fe88a358355c2269b93379703c Mon Sep 17 00:00:00 2001 From: Sergey Vinokurov Date: Sun, 6 Aug 2023 16:24:29 +0100 Subject: [PATCH] Support compiled queries in pdump by dumping source * src/pdumper.c (dump_vectorlike): Dump compiled queries * src/pdumper.c (dump_treesit_compiled_query): New function --- src/pdumper.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/pdumper.c b/src/pdumper.c index c7ebb38dea5..f2dd24c56a6 100644 --- a/src/pdumper.c +++ b/src/pdumper.c @@ -44,6 +44,7 @@ #include "systime.h" #include "thread.h" #include "bignum.h" +#include "treesit.h" #ifdef CHECK_STRUCTS # include "dmpstruct.h" @@ -2215,6 +2216,21 @@ dump_finalizer (struct dump_context *ctx, return finish_dump_pvec (ctx, &out->header); } +#ifdef HAVE_TREE_SITTER +static dump_off +dump_treesit_compiled_query (struct dump_context *ctx, + struct Lisp_TS_Query *query) +{ + START_DUMP_PVEC (ctx, &query->header, struct Lisp_TS_Query, out); + dump_field_lv (ctx, &out->language, query, &query->language, WEIGHT_STRONG); + dump_field_lv (ctx, &out->source, query, &query->source, WEIGHT_STRONG); + /* Recompile these after load */ + out->query = NULL; + out->cursor = NULL; + return finish_dump_pvec (ctx, &out->header); +} +#endif + struct bignum_reload_info { dump_off data_location; @@ -3108,6 +3124,12 @@ dump_vectorlike (struct dump_context *ctx, return DUMP_OBJECT_IS_RUNTIME_MAGIC; } break; +#ifdef HAVE_TREE_SITTER + case PVEC_TS_COMPILED_QUERY: + return dump_treesit_compiled_query (ctx, XTS_COMPILED_QUERY (lv)); +#else + case PVEC_TS_COMPILED_QUERY: +#endif case PVEC_WINDOW_CONFIGURATION: case PVEC_OTHER: case PVEC_XWIDGET: @@ -3122,7 +3144,6 @@ dump_vectorlike (struct dump_context *ctx, case PVEC_FREE: case PVEC_TS_PARSER: case PVEC_TS_NODE: - case PVEC_TS_COMPILED_QUERY: break; } char msg[60]; -- 2.43.1