mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
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 <justus@g10code.com>
This commit is contained in:
parent
893a3f7fb4
commit
66834eb838
3 changed files with 108 additions and 19 deletions
|
@ -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 */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue