aboutsummaryrefslogtreecommitdiff
path: root/gdb/bcache.h
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2020-09-14 14:02:30 -0400
committerSimon Marchi <simon.marchi@efficios.com>2020-09-14 14:02:30 -0400
commit898066264058f68c4dd26e82e1310db305177c8e (patch)
treefc0b04a903748034dcf5fabf9b650636df7b4725 /gdb/bcache.h
parent2ddc8f011a497d710737ab7637dbf88cbe1398a1 (diff)
downloadgdb-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.h41
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 ();
};