gpgscm: Optimize environment lookups and insertions.
authorJustus Winter <justus@g10code.com>
Tue, 31 Jan 2017 17:16:46 +0000 (18:16 +0100)
committerJustus Winter <justus@g10code.com>
Tue, 31 Jan 2017 17:49:27 +0000 (18:49 +0100)
commitb85d509a8f5c2e6200b8051ca1593c019abce90b
tree9b8bb6425d2bace4361f420fba78c35452c5d737
parent874424ee3cc795eae9972b6259a2cc4dcdbb868e
gpgscm: Optimize environment lookups and insertions.

* tests/gpgscm/scheme.c (pointercmp): New function.
(new_slot_spec_in_env): Add and use slot for insertions.
(find_slot_spec_in_env): New variant of 'find_slot_in_env' that
returns the slot on failures.
(find_slot_in_env): Express using the new function.
(new_slot_in_env): Update callsite.
(opexe_0): Optimize lookup-or-insert.
(opexe_1): Likewise.
(scheme_define): Likewise.
--
Optimize environment lookups by keeping the lists in the hash table or
the list sorted.  Optimize the insertions by passing the slot computed
by the lookup to the insertion.

Signed-off-by: Justus Winter <justus@g10code.com>
tests/gpgscm/scheme.c