summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2015-03-13 03:28:21 +0300
committerDmitry Stogov <dmitry@zend.com>2015-03-13 03:28:21 +0300
commit249c2323f4b834188dd8d03fdda1a583c1f3141d (patch)
treeb4e1ee5ac78993d3fde29edf8379efbbd2be7d56 /Zend/zend_execute.c
parent6289f7e52f07d411bce0a0a99fe65bfbe87e4290 (diff)
downloadphp-git-249c2323f4b834188dd8d03fdda1a583c1f3141d.tar.gz
Allow CALL executor to keep few very often used vaiables in CPU registers.
This is disabled by default yet, but may be enabled compiling zend_execute.c with -DHAVE_GCC_GLOBAL_REGS. Only tested on Linux x86 and x86_64 with GCC 4.9.2.
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 4a8b4694b7..163f8c1ae7 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -2035,6 +2035,16 @@ static zend_always_inline void zend_vm_stack_extend_call_frame(zend_execute_data
}
/* }}} */
+#if HAVE_GCC_GLOBAL_REGS
+# if defined(__GNUC__) && defined(i386)
+# define ZEND_VM_FP_GLOBAL_REG "%esi"
+# define ZEND_VM_IP_GLOBAL_REG "%edi"
+# elif defined(__GNUC__) && defined(__x86_64__)
+# define ZEND_VM_FP_GLOBAL_REG "%r14"
+# define ZEND_VM_IP_GLOBAL_REG "%r15"
+# endif
+#endif
+
#define ZEND_VM_NEXT_OPCODE() \
CHECK_SYMBOL_TABLES() \
ZEND_VM_INC_OPCODE(); \