From 5438a9d23c4bae10a1f38967f84f0f0420971676 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Fri, 9 Jul 2010 09:02:14 +0000 Subject: [PATCH] Eliminated useless allocation of FPU control word on each request startup --- Zend/zend_float.c | 20 +++++++------------- Zend/zend_globals.h | 6 +++++- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/Zend/zend_float.c b/Zend/zend_float.c index 5c38ba9977..ea13ed7988 100644 --- a/Zend/zend_float.c +++ b/Zend/zend_float.c @@ -27,16 +27,13 @@ ZEND_API void zend_init_fpu(TSRMLS_D) /* {{{ */ #if XPFPA_HAVE_CW XPFPA_DECLARE - if (!EG(saved_fpu_cw)) { - EG(saved_fpu_cw) = emalloc(sizeof(XPFPA_CW_DATATYPE)); + if (!EG(saved_fpu_cw_ptr)) { + EG(saved_fpu_cw_ptr) = (void*)&EG(saved_fpu_cw); } - XPFPA_STORE_CW(EG(saved_fpu_cw)); + XPFPA_STORE_CW(EG(saved_fpu_cw_ptr)); XPFPA_SWITCH_DOUBLE(); #else - if (EG(saved_fpu_cw)) { - efree(EG(saved_fpu_cw)); - } - EG(saved_fpu_cw) = NULL; + EG(saved_fpu_cw_ptr) = NULL; #endif } /* }}} */ @@ -44,14 +41,11 @@ ZEND_API void zend_init_fpu(TSRMLS_D) /* {{{ */ ZEND_API void zend_shutdown_fpu(TSRMLS_D) /* {{{ */ { #if XPFPA_HAVE_CW - if (EG(saved_fpu_cw)) { - XPFPA_RESTORE_CW(EG(saved_fpu_cw)); + if (EG(saved_fpu_cw_ptr)) { + XPFPA_RESTORE_CW(EG(saved_fpu_cw_ptr)); } #endif - if (EG(saved_fpu_cw)) { - efree(EG(saved_fpu_cw)); - EG(saved_fpu_cw) = NULL; - } + EG(saved_fpu_cw_ptr) = NULL; } /* }}} */ diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index f8bc38c20d..4446705780 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -34,6 +34,7 @@ #include "zend_objects.h" #include "zend_objects_API.h" #include "zend_modules.h" +#include "zend_float.h" #ifdef ZEND_MULTIBYTE #include "zend_multibyte.h" @@ -261,7 +262,10 @@ struct _zend_executor_globals { zend_bool active; - void *saved_fpu_cw; + void *saved_fpu_cw_ptr; +#if XPFPA_HAVE_CW + XPFPA_CW_DATATYPE saved_fpu_cw; +#endif void *reserved[ZEND_MAX_RESERVED_RESOURCES]; }; -- 2.49.0