diff options
author | Simon Marchi <simon.marchi@polymtl.ca> | 2020-09-14 14:02:30 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2020-09-14 14:02:30 -0400 |
commit | 898066264058f68c4dd26e82e1310db305177c8e (patch) | |
tree | fc0b04a903748034dcf5fabf9b650636df7b4725 /gdb/bcache.h | |
parent | 2ddc8f011a497d710737ab7637dbf88cbe1398a1 (diff) | |
download | gdb-898066264058f68c4dd26e82e1310db305177c8e.zip gdb-898066264058f68c4dd26e82e1310db305177c8e.tar.gz gdb-898066264058f68c4dd26e82e1310db305177c8e.tar.bz2 |
gdb: turn gdb::bcache's function pointers into virtual methods
The two function pointers optionally passed to gdb::bcache are very good
candidates to be turned into virtual methods, this patch does that in
the most straightforward / unsurprising way.
gdb/ChangeLog:
* bcache.h (struct bcache) <bcache>: Remove constructor.
<m_hash_function, m_compare_function>: Remove.
<~bcache>: Make virtual.
<compare>: Remove static method, introduce virtual method.
<default_hash>: Remove.
<hash>: New virtual method.
* bcache.c (bcache::expand_hash_table): Update.
(bcache::insert): Update.
(bcache::hash): New.
(bcache::compare): Update comment and parameter names.
* gdbtypes.c (types_deeply_equal): Update.
* psymtab.h (struct psymbol_bcache): New struct.
(class psymtab_storage) <psymtab_storage>: Make default.
<psymbol_cache>: Change type to psymbol_bcache.
* psymtab.c (psymtab_storage::psymtab_storage): Remove.
(psymbol_hash): Change to...
(psymbol_bcache::hash): ... this.
(psymbol_compare): Change to...
(psymbol_bcache::compare): ... this.
Change-Id: I41d578e61de8ac1163461a28fbd220d1f855e372
Diffstat (limited to 'gdb/bcache.h')
-rw-r--r-- | gdb/bcache.h | 41 |
1 files changed, 11 insertions, 30 deletions
diff --git a/gdb/bcache.h b/gdb/bcache.h index d8b18dc..b92989f 100644 --- a/gdb/bcache.h +++ b/gdb/bcache.h @@ -142,21 +142,7 @@ struct bstring; struct bcache { - /* Allocate a bcache. HASH_FN and COMPARE_FN can be used to pass in - custom hash, and compare functions to be used by this bcache. If - HASH_FUNCTION is NULL fast_hash() is used and if COMPARE_FUNCTION is - NULL memcmp() is used. */ - - explicit bcache (unsigned long (*hash_fn)(const void *, - int length) = nullptr, - int (*compare_fn)(const void *, const void *, - int length) = nullptr) - : m_hash_function (hash_fn == nullptr ? default_hash : hash_fn), - m_compare_function (compare_fn == nullptr ? compare : compare_fn) - { - } - - ~bcache (); + virtual ~bcache (); /* Find a copy of the LENGTH bytes at ADDR in BCACHE. If BCACHE has never seen those bytes before, add a copy of them to BCACHE. In @@ -175,6 +161,16 @@ struct bcache void print_statistics (const char *type); int memory_used (); +protected: + + /* Hash function to be used for this bcache object. Defaults to + fast_hash. */ + virtual unsigned long hash (const void *addr, int length); + + /* Compare function to be used for this bcache object. Defaults to + memcmp. */ + virtual int compare (const void *left, const void *right, int length); + private: /* All the bstrings are allocated here. */ @@ -205,21 +201,6 @@ private: length/data compare missed. */ unsigned long m_half_hash_miss_count = 0; - /* Hash function to be used for this bcache object. */ - unsigned long (*m_hash_function)(const void *addr, int length); - - /* Compare function to be used for this bcache object. */ - int (*m_compare_function)(const void *, const void *, int length); - - /* Default compare function. */ - static int compare (const void *addr1, const void *addr2, int length); - - /* Default hash function. */ - static unsigned long default_hash (const void *ptr, int length) - { - return fast_hash (ptr, length, 0); - } - /* Expand the hash table. */ void expand_hash_table (); }; |