Hi all,
  this patch-let makes implements a GCC feature to hint the branch
prediction algorithms about the likely outcome of a test. This is useful
to optimize the case of singleton patterns (e.g.
CacheManager::GetInstance).
This implements the likely() and unlikely() macros.

        Kinkie
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: [email protected]
# target_branch: file:///home/kinkie/squid/workspace/squid-trunk-co/
# testament_sha1: e69ce26d8ffa5a3519c81e25453faff4a0cb725b
# timestamp: 2010-10-12 17:42:32 +0200
# base_revision_id: [email protected]\
#   xnwwkgwnuhy5oj0r
# 
# Begin patch
=== added file 'include/branch-hints.h'
--- include/branch-hints.h	1970-01-01 00:00:00 +0000
+++ include/branch-hints.h	2010-10-12 15:42:26 +0000
@@ -0,0 +1,43 @@
+/*
+ * branch-hints.h (C) 2009 Francesco Chemolli <[email protected]>
+ *
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#ifndef BRANCHHINTS_H_
+#define BRANCHHINTS_H_
+
+#if defined(__GNUC__)
+#define likely(x) __builtin_expect(!!(x), 1)
+#define unlikely(x) __builtin_expect(!!(x), 0)
+#else
+#define likely(x) (x)
+#define unlikely(x) (x)
+#endif /* __GNUC__ */
+
+#endif /* BRANCHHINTS_H_ */

=== modified file 'src/cache_manager.cc'
--- src/cache_manager.cc	2010-08-16 11:35:40 +0000
+++ src/cache_manager.cc	2010-10-12 15:42:26 +0000
@@ -33,6 +33,7 @@
  *
  */
 
+#include "branch-hints.h"
 #include "CacheManager.h"
 #include "errorpage.h"
 #include "HttpReply.h"
@@ -478,7 +479,7 @@
 CacheManager*
 CacheManager::GetInstance()
 {
-    if (instance == 0) {
+    if (unlikely(instance == 0)) {
         debugs(16, 6, "CacheManager::GetInstance: starting cachemanager up");
         instance = new CacheManager;
     }

# Begin bundle
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

Reply via email to