Home | History | Annotate | Download | only in wtf
      1 /*
      2  *  Copyright (C) 2005, 2007, 2008 Apple Inc. All rights reserved.
      3  *
      4  *  This library is free software; you can redistribute it and/or
      5  *  modify it under the terms of the GNU Library General Public
      6  *  License as published by the Free Software Foundation; either
      7  *  version 2 of the License, or (at your option) any later version.
      8  *
      9  *  This library is distributed in the hope that it will be useful,
     10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12  *  Library General Public License for more details.
     13  *
     14  *  You should have received a copy of the GNU Library General Public License
     15  *  along with this library; see the file COPYING.LIB.  If not, write to
     16  *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     17  *  Boston, MA 02110-1301, USA.
     18  *
     19  */
     20 
     21 #include "Platform.h"
     22 
     23 #ifndef ALWAYS_INLINE
     24 #if COMPILER(GCC) && defined(NDEBUG) && !COMPILER(MINGW)
     25 #define ALWAYS_INLINE inline __attribute__((__always_inline__))
     26 #elif (COMPILER(MSVC) || COMPILER(RVCT)) && defined(NDEBUG)
     27 #define ALWAYS_INLINE __forceinline
     28 #else
     29 #define ALWAYS_INLINE inline
     30 #endif
     31 #endif
     32 
     33 #ifndef NEVER_INLINE
     34 #if COMPILER(GCC)
     35 #define NEVER_INLINE __attribute__((__noinline__))
     36 #else
     37 #define NEVER_INLINE
     38 #endif
     39 #endif
     40 
     41 #ifndef UNLIKELY
     42 #if COMPILER(GCC)
     43 #define UNLIKELY(x) __builtin_expect((x), 0)
     44 #else
     45 #define UNLIKELY(x) (x)
     46 #endif
     47 #endif
     48 
     49 #ifndef LIKELY
     50 #if COMPILER(GCC)
     51 #define LIKELY(x) __builtin_expect((x), 1)
     52 #else
     53 #define LIKELY(x) (x)
     54 #endif
     55 #endif
     56 
     57 #ifndef NO_RETURN
     58 #if COMPILER(GCC)
     59 #define NO_RETURN __attribute((__noreturn__))
     60 #else
     61 #define NO_RETURN
     62 #endif
     63 #endif
     64