diff options
author | Tom Tromey <tom@tromey.com> | 2017-11-01 11:15:06 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2017-11-09 08:31:40 -0700 |
commit | 7e8835c5f44931d02ecd8c8ba3d167e891981d24 (patch) | |
tree | 594450b718b0bf6f1243d6d037a25c5a2f51838a /gdb/dictionary.c | |
parent | b6b9ca0c3ec9589d0dd40b2b86ba748a361b48eb (diff) | |
download | gdb-7e8835c5f44931d02ecd8c8ba3d167e891981d24.zip gdb-7e8835c5f44931d02ecd8c8ba3d167e891981d24.tar.gz gdb-7e8835c5f44931d02ecd8c8ba3d167e891981d24.tar.bz2 |
Speed up dict_hash
This speeds up dict_hash a bit, by moving the "TKB" check into the
switch in the loop.
For "gdb -nx -readnow -batch gdb", this improves the time from ~9.8s
before to ~8.5s afterward.
gdb/ChangeLog
2017-11-09 Tom Tromey <tom@tromey.com>
* dictionary.c (dict_hash): Move "TKB" check into the "switch".
Diffstat (limited to 'gdb/dictionary.c')
-rw-r--r-- | gdb/dictionary.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/gdb/dictionary.c b/gdb/dictionary.c index 8277c5d..fb30753 100644 --- a/gdb/dictionary.c +++ b/gdb/dictionary.c @@ -790,17 +790,6 @@ default_search_name_hash (const char *string0) hash = 0; while (*string) { - /* Ignore "TKB" suffixes. - - These are used by Ada for subprograms implementing a task body. - For instance for a task T inside package Pck, the name of the - subprogram implementing T's body is `pck__tTKB'. We need to - ignore the "TKB" suffix because searches for this task body - subprogram are going to be performed using `pck__t' (the encoded - version of the natural name `pck.t'). */ - if (strcmp (string, "TKB") == 0) - return hash; - switch (*string) { case '$': @@ -822,14 +811,25 @@ default_search_name_hash (const char *string0) return hash; hash = 0; string += 2; - break; + continue; } - /* FALL THROUGH */ - default: - hash = SYMBOL_HASH_NEXT (hash, *string); - string += 1; + break; + case 'T': + /* Ignore "TKB" suffixes. + + These are used by Ada for subprograms implementing a task body. + For instance for a task T inside package Pck, the name of the + subprogram implementing T's body is `pck__tTKB'. We need to + ignore the "TKB" suffix because searches for this task body + subprogram are going to be performed using `pck__t' (the encoded + version of the natural name `pck.t'). */ + if (strcmp (string, "TKB") == 0) + return hash; break; } + + hash = SYMBOL_HASH_NEXT (hash, *string); + string += 1; } return hash; } |