From 66834eb838a8892d088f6b7332084a64d9f15008 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Wed, 16 Nov 2016 11:29:34 +0100 Subject: gpgscm: Use a static pool of cells for small integers. * tests/gpgscm/scheme-private.h (struct scheme): New fields for the static integer cells. * tests/gpgscm/scheme.c (_alloc_cellseg): New function. (alloc_cellseg): Use the new function. (MAX_SMALL_INTEGER): New macro. (initialize_small_integers): New function. (mk_small_integer): Likewise. (mk_integer): Return a small integer if possible. (_s_return): Do not free 'op' if it is a small integer. (s_save): Use a small integer to box the opcode. (scheme_init_custom_alloc): Initialize small integers. (scheme_deinit): Free chunk of small integers. * tests/gpgscm/scheme.h (USE_SMALL_INTEGERS): New macro. Signed-off-by: Justus Winter --- tests/gpgscm/scheme-private.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'tests/gpgscm/scheme-private.h') diff --git a/tests/gpgscm/scheme-private.h b/tests/gpgscm/scheme-private.h index aa7889441..2c5c749e9 100644 --- a/tests/gpgscm/scheme-private.h +++ b/tests/gpgscm/scheme-private.h @@ -119,6 +119,12 @@ pointer SHARP_HOOK; /* *sharp-hook* */ pointer COMPILE_HOOK; /* *compile-hook* */ #endif +#if USE_SMALL_INTEGERS +/* A fixed allocation of small integers. */ +void *integer_alloc; +pointer integer_cells; +#endif + pointer free_cell; /* pointer to top of free cells */ long fcells; /* # of free cells */ size_t inhibit_gc; /* nesting of gc_disable */ -- cgit