]> granicus.if.org Git - php/commitdiff
Imporoved EXPECTED/UNEXPECTED macros to support not boolean expressions.
authorDmitry Stogov <dmitry@zend.com>
Wed, 9 Jul 2014 15:32:09 +0000 (19:32 +0400)
committerDmitry Stogov <dmitry@zend.com>
Wed, 9 Jul 2014 15:32:09 +0000 (19:32 +0400)
Fixed invalid EXPECTED() usage.

Zend/zend.h
Zend/zend_arena.h

index 6f5eee1138cb1e169e0c3c21fae140709b84f3d5..2f1f2397329f718ba07726f13df7b44bf70ef22b 100644 (file)
@@ -355,8 +355,8 @@ void zend_error_noreturn(int type, const char *format, ...) __attribute__ ((nore
 #endif /* ZEND_DEBUG */
 
 #if (defined (__GNUC__) && __GNUC__ > 2 ) && !defined(DARWIN) && !defined(__hpux) && !defined(_AIX)
-# define EXPECTED(condition)   __builtin_expect(condition, 1)
-# define UNEXPECTED(condition) __builtin_expect(condition, 0)
+# define EXPECTED(condition)   __builtin_expect(!(!(condition)), 1)
+# define UNEXPECTED(condition) __builtin_expect(!(!(condition)), 0)
 #else
 # define EXPECTED(condition)   (condition)
 # define UNEXPECTED(condition) (condition)
index 69ac6687ef15341226d1ab92c8ca9660ac7c91d3..daa976d1e3171ea93bdb1561eaab72686a4ede7a 100644 (file)
@@ -63,7 +63,7 @@ static zend_always_inline void* zend_arena_alloc(zend_arena **arena_ptr, size_t
                arena->ptr = ptr + size;
        } else {
                size_t arena_size = 
-                       (UNEXPECTED(size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (arena->end - (char*) arena)) ?
+                       UNEXPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (arena->end - (char*) arena)) ?
                                (size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) :
                                (arena->end - (char*) arena);
                zend_arena *new_arena = (zend_arena*)emalloc(arena_size);