1
0
Fork 0
mirror of git://git.gnupg.org/gnupg.git synced 2025-07-03 22:56:33 +02:00
gnupg/tests
Justus Winter 83c184a66b gpgscm: Avoid cell allocation overhead.
* tests/gpgscm/scheme-private.h (struct scheme): New fields
'inhibit_gc', 'reserved_cells', and 'reserved_lineno'.
* tests/gpgscm/scheme.c (GC_ENABLED): New macro.
(USE_GC_LOCKING): Likewise.
(gc_reservations): Likewise.
(gc_reservation_failure): New function.
(_gc_disable): Likewise.
(gc_disable): New macro.
(gc_enable): Likewise.
(gc_enabled): Likewise.
(gc_consume): Likewise.
(get_cell_x): Consume reserved cell if garbage collection is disabled.
(_get_cell): Assert that gc is enabled.
(get_cell): Only record cell in the list of recently allocated cells
if gc is enabled.
(get_vector_object): Likewise.
(gc): Assert that gc is enabled.
(s_return): Add comment, adjust call to '_s_return'.
(s_return_enable_gc): New macro.
(_s_return): Add flag 'enable_gc' and re-enable gc if set.
(oblist_add_by_name): Use the new facilities to protect the
allocations.
(new_frame_in_env): Likewise.
(new_slot_spec_in_env): Likewise.
(s_save): Likewise.
(opexe_0): Likewise.
(opexe_1): Likewise.
(opexe_2): Likewise.
(opexe_5): Likewise.
(opexe_6): Likewise.
(scheme_init_custom_alloc): Initialize the new fields.
--

Every time a cell is allocated, the interpreter may run out of free
cells and do a garbage collection.  This is problematic because it
might garbage collect objects that have been allocated, but are not
yet made available to the interpreter.

Previously, we would plug such newly allocated cells into the list of
newly allocated objects rooted at car(sc->sink), but that requires
allocating yet another cell increasing pressure on the memory
management system.

A faster alternative is to preallocate the cells needed for an
operation and make sure the garbage collection is not run until all
allocated objects are plugged in.  This can be done with gc_disable
and gc_enable.

This optimization can be applied incrementally.  This commit picks all
low-hanging fruits.

Signed-off-by: Justus Winter <justus@g10code.com>
2016-11-14 16:11:15 +01:00
..
extrasamples Added sample certificates. 2006-05-16 09:54:41 +00:00
fake-pinentries doc: Update license information. 2016-09-19 10:03:26 +02:00
gpgscm gpgscm: Avoid cell allocation overhead. 2016-11-14 16:11:15 +01:00
migrations Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
openpgp tests: Fix environment setup. 2016-11-08 16:15:32 +01:00
pkits Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
samplekeys Add the STEED Self-Signing Nonthority certificate. 2011-12-20 15:35:42 +01:00
samplemsgs More samples 2004-02-17 15:07:27 +00:00
567064FE6D14A17B2D811ABB407728BC558AA455 added test certificate and secret key 2001-12-06 20:19:52 +00:00
asschk.c Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
cert_cci_sphinx_ca.pem A few test certificates 2002-01-29 15:46:55 +00:00
cert_cci_test_wzs.pem A few test certificates 2002-01-29 15:46:55 +00:00
cert_cci_test_zs.pem A few test certificates 2002-01-29 15:46:55 +00:00
cert_cci_user02.pem A few test certificates 2002-01-29 15:46:55 +00:00
cert_cci_user03.pem A few test certificates 2002-01-29 15:46:55 +00:00
cert_cci_user04.pem A few test certificates 2002-01-29 15:46:55 +00:00
cert_cci_user06.pem A few test certificates 2002-01-29 15:46:55 +00:00
cert_cci_user07.pem A few test certificates 2002-01-29 15:46:55 +00:00
cert_testpki_testpca.pem A few test certificates 2002-01-29 15:46:55 +00:00
ChangeLog-2011 Generate the ChangeLog from commit logs. 2011-12-01 11:09:02 +01:00
crl_testpki_testpca.pem A few test certificates 2002-01-29 15:46:55 +00:00
inittests Fix bug 1001. 2009-02-19 16:19:16 +00:00
key_g10code_pete1.pem released 0.3.5 2002-04-15 17:15:21 +00:00
key_g10code_theo1.pem yet another test certificate 2002-03-28 17:25:28 +00:00
Makefile.am Change all http://www.gnu.org in license notices to https:// 2016-11-05 12:02:19 +01:00
runtest Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
skey_g10code_test1.pem added test certificate and secret key 2001-12-06 20:19:52 +00:00
sm-sign+verify Tweaked the build system so that make distcheck finanly said Well 2002-08-09 18:16:02 +00:00
sm-verify Tweaked the build system so that make distcheck finanly said Well 2002-08-09 18:16:02 +00:00
text-1.dsig.pem * asschk.c: Added some new features. 2002-08-08 16:32:01 +00:00
text-1.osig-bad.pem * asschk.c: Added some new features. 2002-08-08 16:32:01 +00:00
text-1.osig-badusage.pem new test certs and messages 2002-09-03 14:54:18 +00:00
text-1.osig.pem * asschk.c: Added some new features. 2002-08-08 16:32:01 +00:00
text-1.txt * asschk.c: Added some new features. 2002-08-08 16:32:01 +00:00
text-2.osig-bad.pem * asschk.c: Added some new features. 2002-08-08 16:32:01 +00:00
text-2.osig.pem * asschk.c: Added some new features. 2002-08-08 16:32:01 +00:00
text-2.txt * asschk.c: Added some new features. 2002-08-08 16:32:01 +00:00
text-3.txt * asschk.c: Added some new features. 2002-08-08 16:32:01 +00:00