From 285bfb96fe701a4b06c22b8e5472076acdeba936 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 15 Feb 2018 17:04:41 +0300 Subject: [PATCH] Optimize "backup" functions of inlined opcode handlers for size --- Zend/zend_portability.h | 9 +++++++++ Zend/zend_vm_execute.h | 2 +- Zend/zend_vm_gen.php | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Zend/zend_portability.h b/Zend/zend_portability.h index abf7dcc5a4..ed8f07389b 100644 --- a/Zend/zend_portability.h +++ b/Zend/zend_portability.h @@ -221,10 +221,19 @@ char *alloca(); # define ZEND_ATTRIBUTE_UNUSED __attribute__((unused)) # define ZEND_COLD __attribute__((cold)) # define ZEND_HOT __attribute__((hot)) +# ifdef __OPTIMIZE__ +# define ZEND_OPT_SIZE __attribute__((optimize("Os"))) +# define ZEND_OPT_SPEED __attribute__((optimize("Ofast"))) +# else +# define ZEND_OPT_SIZE +# define ZEND_OPT_SPEED +# endif #else # define ZEND_ATTRIBUTE_UNUSED # define ZEND_COLD # define ZEND_HOT +# define ZEND_OPT_SIZE +# define ZEND_OPT_SPEED #endif #if defined(__GNUC__) && ZEND_GCC_VERSION >= 5000 diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 4b8466f73e..44ca3f4ef8 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -366,7 +366,7 @@ static const void *zend_vm_get_opcode_handler_func(zend_uchar opcode, const zend # endif # if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID) # define ZEND_VM_RETURN() opline = &hybrid_halt_op; return -# define ZEND_VM_HOT zend_always_inline +# define ZEND_VM_HOT zend_always_inline ZEND_OPT_SIZE # else # define ZEND_VM_RETURN() opline = NULL; return # define ZEND_VM_HOT diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php index d06cd89628..37a660127f 100644 --- a/Zend/zend_vm_gen.php +++ b/Zend/zend_vm_gen.php @@ -1745,7 +1745,7 @@ function gen_executor($f, $skl, $spec, $kind, $executor_name, $initializer_name) if ($kind == ZEND_VM_KIND_HYBRID) { out($f,"# if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)\n"); out($f,"# define ZEND_VM_RETURN() opline = &hybrid_halt_op; return\n"); - out($f,"# define ZEND_VM_HOT zend_always_inline\n"); + out($f,"# define ZEND_VM_HOT zend_always_inline ZEND_OPT_SIZE\n"); out($f,"# else\n"); out($f,"# define ZEND_VM_RETURN() opline = NULL; return\n"); out($f,"# define ZEND_VM_HOT\n"); -- 2.40.0