# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: kinkie@squid-cache.org-20101013160855-lmi2vbrokh7e64yl
# target_branch: file:///home/kinkie/squid/workspace/squid-trunk-co/
# testament_sha1: 4c48469579bcf0502e4769dd550e3fea76e1e29a
# timestamp: 2010-10-13 18:09:02 +0200
# base_revision_id: amosjeffries@squid-cache.org-20101006130311-\
#   xnwwkgwnuhy5oj0r
# 
# Begin patch
=== modified file 'acinclude/os-deps.m4'
--- acinclude/os-deps.m4	2010-08-29 14:07:18 +0000
+++ acinclude/os-deps.m4	2010-10-13 16:08:55 +0000
@@ -814,3 +814,17 @@
     squid_cv_resuid_works="no" ],[:])
   )
 ])
+
+
+dnl check compiler support for gcc-style conditional branch hinting
+dnl set squid_cv_branch_hints to either "no" or "yes"
+AC_DEFUN([SQUID_CHECK_GCC_COMPILER_BRANCH_HINTS],[
+  AC_CACHE_CHECK(if the compiler supports branch hints, squid_cv_branch_hints,
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[[
+  int foo=1;
+  if (__builtin_expect(!!(foo==1), 1)) {
+    foo=2;
+  }
+  ]])],[squid_cv_branch_hints=yes],[squid_cv_branch_hints=no])
+  )
+])

=== modified file 'configure.in'
--- configure.in	2010-10-06 13:03:11 +0000
+++ configure.in	2010-10-13 16:08:55 +0000
@@ -79,6 +79,10 @@
 	AC_USE_SYSTEM_EXTENSIONS
 fi
 
+SQUID_CHECK_GCC_COMPILER_BRANCH_HINTS
+SQUID_DEFINE_BOOL(HAVE_GCC_BRANCH_HINTS,$squid_cv_branch_hints,
+  [Defined if the compiler supports gcc-style conditional branch hinting])
+
 AC_ARG_ENABLE(strict-error-checking,
   AS_HELP_STRING([--disable-strict-error-checking],[By default squid is compiled
                  with all possible static compiler error-checks enabled.

=== added file 'include/branch-hints.h'
--- include/branch-hints.h	1970-01-01 00:00:00 +0000
+++ include/branch-hints.h	2010-10-13 16:08:55 +0000
@@ -0,0 +1,45 @@
+/*
+ * branch-hints.h (C) 2009 Francesco Chemolli <kinkie@squid-cache.org>
+ *
+ * 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_
+
+#include "config.h"
+
+#if HAVE_GCC_BRANCH_HINTS
+#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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

