From: Anatol Belski Date: Thu, 21 Jun 2018 09:47:10 +0000 (+0200) Subject: Gereralize VA macro expansion mechanism X-Git-Tag: php-7.3.0alpha3~105 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f87cc89f4d524c63889168b20459c899e809c97f;p=php Gereralize VA macro expansion mechanism Avoids code duplication and makes in usable elsewhere. --- diff --git a/Zend/zend_ast.h b/Zend/zend_ast.h index c5e4a17474..d9640a70cd 100644 --- a/Zend/zend_ast.h +++ b/Zend/zend_ast.h @@ -204,27 +204,12 @@ ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_zval_from_long(zend_long lval) ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_constant(zend_string *name, zend_ast_attr attr); #if ZEND_AST_SPEC -# ifdef ZEND_WIN32 -# define ZEND_AST_EXPAND_VA(a) a -# endif - -# ifdef ZEND_WIN32 -# define ZEND_AST_SPEC_CALL(name, ...) \ - ZEND_AST_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__)) -# else -# define ZEND_AST_SPEC_CALL(name, ...) \ - ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__) -# endif +# define ZEND_AST_SPEC_CALL(name, ...) \ + ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__)) # define ZEND_AST_SPEC_CALL_(name, _, _4, _3, _2, _1, suffix, ...) \ name ## suffix - -# ifdef ZEND_WIN32 -# define ZEND_AST_SPEC_CALL_EX(name, ...) \ - ZEND_AST_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__)) -# else -# define ZEND_AST_SPEC_CALL_EX(name, ...) \ - ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__) -# endif +# define ZEND_AST_SPEC_CALL_EX(name, ...) \ + ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__)) # define ZEND_AST_SPEC_CALL_EX_(name, _, _5, _4, _3, _2, _1, suffix, ...) \ name ## suffix diff --git a/Zend/zend_portability.h b/Zend/zend_portability.h index 8f0eb9cda9..70f13c300f 100644 --- a/Zend/zend_portability.h +++ b/Zend/zend_portability.h @@ -638,6 +638,13 @@ static zend_always_inline double _zend_get_nan(void) /* {{{ */ #define ZEND_SLIDE_TO_ALIGNED(alignment, ptr) (((zend_uintptr_t)(ptr) + ((alignment)-1)) & ~((alignment)-1)) #define ZEND_SLIDE_TO_ALIGNED16(ptr) ZEND_SLIDE_TO_ALIGNED(Z_UL(16), ptr) +#ifdef ZEND_WIN32 +# define _ZEND_EXPAND_VA(a) a +# define ZEND_EXPAND_VA(code) _ZEND_EXPAND_VA(code) +#else +# define ZEND_EXPAND_VA(code) code +#endif + #endif /* ZEND_PORTABILITY_H */ /*