1
0
Fork 0
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:
Justus Winter 2016-11-16 11:29:34 +01:00
parent 893a3f7fb4
commit 66834eb838
3 changed files with 108 additions and 19 deletions

View file

@ -43,6 +43,7 @@ extern "C" {
# define USE_COMPILE_HOOK 0
# define USE_DL 0
# define USE_PLIST 0
# define USE_SMALL_INTEGERS 0
#endif
@ -95,6 +96,13 @@ extern "C" {
# define USE_THREADED_CODE 1
#endif
/* Use a static set of cells to represent small numbers. This set
* notably includes all opcodes, and hence saves a cell reservation
* during 's_save'. */
#ifndef USE_SMALL_INTEGERS
# define USE_SMALL_INTEGERS 1
#endif
#ifndef USE_STRCASECMP /* stricmp for Unix */
# define USE_STRCASECMP 0
#endif