diff options
author | Remi Collet <fedora@famillecollet.com> | 2013-01-04 13:40:10 +0100 |
---|---|---|
committer | Remi Collet <fedora@famillecollet.com> | 2013-01-04 13:40:10 +0100 |
commit | fbe66f16df4aff21fa4a5262752db288d097c34b (patch) | |
tree | 81f65249df30ddaf8dad344b8fd42776a0ad5870 /xhprof-php55.patch | |
parent | c9f27e91571a6141c904b7ce30d4523b842de749 (diff) |
php-pecl-xhprof: git snapshot + php 5.5 fix
Diffstat (limited to 'xhprof-php55.patch')
-rw-r--r-- | xhprof-php55.patch | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/xhprof-php55.patch b/xhprof-php55.patch new file mode 100644 index 0000000..e341443 --- /dev/null +++ b/xhprof-php55.patch @@ -0,0 +1,170 @@ +diff --git a/extension/xhprof.c b/extension/xhprof.c +index f7e2360..a053ede 100644 +--- a/extension/xhprof.c ++++ b/extension/xhprof.c +@@ -28,7 +28,7 @@ + #include "php_ini.h" + #include "ext/standard/info.h" + #include "php_xhprof.h" +-#include "Zend/zend_extensions.h" ++#include "zend_extensions.h" + #include <sys/time.h> + #include <sys/resource.h> + #include <stdlib.h> +@@ -233,12 +233,21 @@ typedef struct hp_global_t { + /* XHProf global state */ + static hp_global_t hp_globals; + ++#if PHP_VERSION_ID < 50500 + /* Pointer to the original execute function */ + static ZEND_DLEXPORT void (*_zend_execute) (zend_op_array *ops TSRMLS_DC); + + /* Pointer to the origianl execute_internal function */ + static ZEND_DLEXPORT void (*_zend_execute_internal) (zend_execute_data *data, + int ret TSRMLS_DC); ++#else ++/* Pointer to the original execute function */ ++static void (*_zend_execute_ex) (zend_execute_data *execute_data TSRMLS_DC); ++ ++/* Pointer to the origianl execute_internal function */ ++static void (*_zend_execute_internal) (zend_execute_data *data, ++ struct _zend_fcall_info *fci, int ret TSRMLS_DC); ++#endif + + /* Pointer to the original compile function */ + static zend_op_array * (*_zend_compile_file) (zend_file_handle *file_handle, +@@ -880,8 +889,8 @@ size_t hp_get_function_stack(hp_entry_t *entry, + * a pointer to one-level directory and basefile name + * (d/foo.php) in the same string. + */ +-static char *hp_get_base_filename(char *filename) { +- char *ptr; ++static const char *hp_get_base_filename(const char *filename) { ++ const char *ptr; + int found = 0; + + if (!filename) +@@ -909,7 +918,7 @@ static char *hp_get_base_filename(char *filename) { + */ + static char *hp_get_function_name(zend_op_array *ops TSRMLS_DC) { + zend_execute_data *data; +- char *func = NULL; ++ const char *func = NULL; + const char *cls = NULL; + char *ret = NULL; + int len; +@@ -988,7 +997,7 @@ static char *hp_get_function_name(zend_op_array *ops TSRMLS_DC) { + * you'll see something like "run_init::foo.php" in your reports. + */ + if (add_filename){ +- char *filename; ++ const char *filename; + int len; + filename = hp_get_base_filename((curr_func->op_array).filename); + len = strlen("run_init") + strlen(filename) + 3; +@@ -1629,18 +1638,31 @@ void hp_mode_sampled_endfn_cb(hp_entry_t **entries TSRMLS_DC) { + * + * @author hzhao, kannan + */ ++#if PHP_VERSION_ID < 50500 + ZEND_DLEXPORT void hp_execute (zend_op_array *ops TSRMLS_DC) { ++#else ++ZEND_DLEXPORT void hp_execute_ex (zend_execute_data *execute_data TSRMLS_DC) { ++ zend_op_array *ops = execute_data->op_array; ++#endif + char *func = NULL; + int hp_profile_flag = 1; + + func = hp_get_function_name(ops TSRMLS_CC); + if (!func) { ++#if PHP_VERSION_ID < 50500 + _zend_execute(ops TSRMLS_CC); ++#else ++ _zend_execute_ex(execute_data TSRMLS_CC); ++#endif + return; + } + + BEGIN_PROFILING(&hp_globals.entries, func, hp_profile_flag); ++#if PHP_VERSION_ID < 50500 + _zend_execute(ops TSRMLS_CC); ++#else ++ _zend_execute_ex(execute_data TSRMLS_CC); ++#endif + if (hp_globals.entries) { + END_PROFILING(&hp_globals.entries, hp_profile_flag); + } +@@ -1649,7 +1671,6 @@ ZEND_DLEXPORT void hp_execute (zend_op_array *ops TSRMLS_DC) { + + #undef EX + #define EX(element) ((execute_data)->element) +-#define EX_T(offset) (*(temp_variable *)((char *) EX(Ts) + offset)) + + /** + * Very similar to hp_execute. Proxy for zend_execute_internal(). +@@ -1657,8 +1678,18 @@ ZEND_DLEXPORT void hp_execute (zend_op_array *ops TSRMLS_DC) { + * + * @author hzhao, kannan + */ ++ ++#if PHP_VERSION_ID < 50500 ++#define EX_T(offset) (*(temp_variable *)((char *) EX(Ts) + offset)) ++ + ZEND_DLEXPORT void hp_execute_internal(zend_execute_data *execute_data, + int ret TSRMLS_DC) { ++#else ++#define EX_T(offset) (*EX_TMP_VAR(execute_data, offset)) ++ ++ZEND_DLEXPORT void hp_execute_internal(zend_execute_data *execute_data, ++ struct _zend_fcall_info *fci, int ret TSRMLS_DC) { ++#endif + zend_execute_data *current_data; + char *func = NULL; + int hp_profile_flag = 1; +@@ -1691,7 +1722,11 @@ ZEND_DLEXPORT void hp_execute_internal(zend_execute_data *execute_data, + #endif + } else { + /* call the old override */ ++#if PHP_VERSION_ID < 50500 + _zend_execute_internal(execute_data, ret TSRMLS_CC); ++#else ++ _zend_execute_internal(execute_data, fci, ret TSRMLS_CC); ++#endif + } + + if (func) { +@@ -1711,7 +1746,7 @@ ZEND_DLEXPORT void hp_execute_internal(zend_execute_data *execute_data, + ZEND_DLEXPORT zend_op_array* hp_compile_file(zend_file_handle *file_handle, + int type TSRMLS_DC) { + +- char *filename; ++ const char *filename; + char *func; + int len; + zend_op_array *ret; +@@ -1783,8 +1818,13 @@ static void hp_begin(long level, long xhprof_flags TSRMLS_DC) { + zend_compile_string = hp_compile_string; + + /* Replace zend_execute with our proxy */ ++#if PHP_VERSION_ID < 50500 + _zend_execute = zend_execute; + zend_execute = hp_execute; ++#else ++ _zend_execute_ex = zend_execute_ex; ++ zend_execute_ex = hp_execute_ex; ++#endif + + /* Replace zend_execute_internal with our proxy */ + _zend_execute_internal = zend_execute_internal; +@@ -1855,7 +1895,11 @@ static void hp_stop(TSRMLS_D) { + } + + /* Remove proxies, restore the originals */ ++#if PHP_VERSION_ID < 50500 + zend_execute = _zend_execute; ++#else ++ zend_execute_ex = _zend_execute_ex; ++#endif + zend_execute_internal = _zend_execute_internal; + zend_compile_file = _zend_compile_file; + zend_compile_string = _zend_compile_string; |