From 7d8e54105713ee29c03c9aea108c3a6880836dcd Mon Sep 17 00:00:00 2001 From: Maria Matejka Date: Mon, 1 May 2023 15:10:53 +0200 Subject: Linpool state save and restore refactoring --- lib/resource.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/resource.h') diff --git a/lib/resource.h b/lib/resource.h index 06af4289..abcf46fa 100644 --- a/lib/resource.h +++ b/lib/resource.h @@ -92,7 +92,6 @@ typedef struct linpool linpool; typedef struct lp_state { void *current, *large; - byte *ptr; uint total_large; } lp_state; @@ -101,9 +100,12 @@ void *lp_alloc(linpool *, unsigned size); /* Aligned */ void *lp_allocu(linpool *, unsigned size); /* Unaligned */ void *lp_allocz(linpool *, unsigned size); /* With clear */ void lp_flush(linpool *); /* Free everything, but leave linpool */ -void lp_save(linpool *m, lp_state *p); /* Save state */ +lp_state *lp_save(linpool *m); /* Save state */ void lp_restore(linpool *m, lp_state *p); /* Restore state */ +#define LP_SAVED(m) for (struct lp_state *_lp_state = lp_save(m); _lp_state; lp_restore(m, _lp_state), _lp_state = NULL) +#define TMP_SAVED LP_SAVED(tmp_linpool) + struct tmp_resources { pool *pool, *parent; linpool *lp; -- cgit v1.2.3