Mesa (master): glcpp: Avoid unnecessary strcmp()

Timothy Arceri tarceri at kemper.freedesktop.org
Mon May 22 02:34:55 UTC 2017


Module: Mesa
Branch: master
Commit: b8e792ee25e01ce1e9e4f3ed444f8e1ade8c992e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b8e792ee25e01ce1e9e4f3ed444f8e1ade8c992e

Author: Vladislav Egorov <vegorov180 at gmail.com>
Date:   Sun May 21 22:49:15 2017 +0200

glcpp: Avoid unnecessary strcmp()

strcmp() is slow. Initiate comparison with "__LINE__" or "__FILE__"
only if the identifier starts with '_', which is rare.

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

---

 src/compiler/glsl/glcpp/glcpp-parse.y | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/compiler/glsl/glcpp/glcpp-parse.y b/src/compiler/glsl/glcpp/glcpp-parse.y
index 5cb2a38060..fe211a0f0b 100644
--- a/src/compiler/glsl/glcpp/glcpp-parse.y
+++ b/src/compiler/glsl/glcpp/glcpp-parse.y
@@ -1829,11 +1829,15 @@ _glcpp_parser_expand_node(glcpp_parser_t *parser, token_node_t *node,
 
    /* Special handling for __LINE__ and __FILE__, (not through
     * the hash table). */
-   if (strcmp(identifier, "__LINE__") == 0)
-      return _token_list_create_with_one_integer(parser, node->token->location.first_line);
-
-   if (strcmp(identifier, "__FILE__") == 0)
-      return _token_list_create_with_one_integer(parser, node->token->location.source);
+   if (*identifier == '_') {
+      if (strcmp(identifier, "__LINE__") == 0)
+         return _token_list_create_with_one_integer(parser,
+                                                    node->token->location.first_line);
+
+      if (strcmp(identifier, "__FILE__") == 0)
+         return _token_list_create_with_one_integer(parser,
+                                                    node->token->location.source);
+   }
 
    /* Look up this identifier in the hash table. */
    entry = _mesa_hash_table_search(parser->defines, identifier);




More information about the mesa-commit mailing list