aboutsummaryrefslogtreecommitdiffstats
path: root/gpgscm/small-integers.h (unfollow)
Commit message (Collapse)AuthorFilesLines
2017-10-05gpgscm: Change license from GPLv3+ to LGPLv2.1+Werner Koch1-15/+6
-- All changes to TinySCHEME were done by employees of g10 Code GmbH and some minor things by a contractor. Signed-off-by: Werner Koch <[email protected]>
2017-10-05gpgscm: Move files to a gpgscm subdirectory.Werner Koch1-0/+0
-- Note that we used git filter-branch --subdirectory-filter tests/gpgscm in gnupg master to filter out the gpgscm part. This commit merely moves these files to a subdirectory which will be used in libgpg-error for gpgscm. Signed-off-by: Werner Koch <[email protected]>
2017-04-07gpgscm: Allocate small integers in the rodata section.Justus Winter1-0/+847
* tests/gpgscm/Makefile.am (gpgscm_SOURCES): Add new file. * tests/gpgscm/scheme-private.h (struct cell): Move number to the top of the union so that we can initialize it. (struct scheme): Remove 'integer_segment'. * tests/gpgscm/scheme.c (initialize_small_integers): Remove function. (small_integers): New variable. (MAX_SMALL_INTEGER): Compute. (mk_small_integer): Adapt. (mark): Avoid marking objects already marked. This allows us to run the algorithm over objects in the rodata section if they are already marked. (scheme_init_custom_alloc): Remove initialization. (scheme_deinit): Remove deallocation. * tests/gpgscm/small-integers.h: New file. -- Allocate small integers from a fixed pool in the rodata section. This spares us the initialization, and deduplicates integers across different processes. It also makes the integers immutable, increasing memory safety. Signed-off-by: Justus Winter <[email protected]>