diff options
author | Dmitry Stogov <dmitry@php.net> | 2006-05-19 06:11:02 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2006-05-19 06:11:02 +0000 |
commit | ab9e070bbfe1bfeb8b6956b0a8967dde329800bc (patch) | |
tree | 49828d593efbf1ffb09ec7cb3ee03f75b7862322 | |
parent | 7324a30e8d90f96d3e0e28d9b6073b3ba894efc8 (diff) | |
download | php-git-ab9e070bbfe1bfeb8b6956b0a8967dde329800bc.tar.gz |
Optimized zend_try/zend_catch macroses (eliminated memcpy())
-rw-r--r-- | Zend/zend.c | 4 | ||||
-rw-r--r-- | Zend/zend.h | 18 | ||||
-rw-r--r-- | Zend/zend_extensions.h | 2 | ||||
-rw-r--r-- | Zend/zend_globals.h | 3 | ||||
-rw-r--r-- | ext/standard/basic_functions.c | 6 | ||||
-rw-r--r-- | main/main.c | 2 |
6 files changed, 17 insertions, 18 deletions
diff --git a/Zend/zend.c b/Zend/zend.c index db3dcf2cea..6afcf6d369 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -1192,14 +1192,14 @@ ZEND_API void _zend_bailout(char *filename, uint lineno) { TSRMLS_FETCH(); - if (!EG(bailout_set)) { + if (!EG(bailout)) { zend_output_debug_string(1, "%s(%d) : Bailed out without a bailout address!", filename, lineno); exit(-1); } CG(unclean_shutdown) = 1; CG(in_compilation) = EG(in_execution) = 0; EG(current_execute_data) = NULL; - longjmp(EG(bailout), FAILURE); + longjmp(*EG(bailout), FAILURE); } END_EXTERN_C() diff --git a/Zend/zend.h b/Zend/zend.h index 493ac8b01e..87fd9d839e 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -489,19 +489,19 @@ END_EXTERN_C() #define zend_try \ { \ - jmp_buf orig_bailout; \ - zend_bool orig_bailout_set=EG(bailout_set); \ + jmp_buf *orig_bailout = EG(bailout); \ + jmp_buf bailout; \ \ - EG(bailout_set) = 1; \ - memcpy(&orig_bailout, &EG(bailout), sizeof(jmp_buf)); \ - if (setjmp(EG(bailout))==0) + EG(bailout) = &bailout; \ + if (setjmp(bailout)==0) { #define zend_catch \ - else + } else { \ + EG(bailout) = orig_bailout; #define zend_end_try() \ - memcpy(&EG(bailout), &orig_bailout, sizeof(jmp_buf)); \ - EG(bailout_set) = orig_bailout_set; \ + } \ + EG(bailout) = orig_bailout; \ } -#define zend_first_try EG(bailout_set)=0; zend_try +#define zend_first_try EG(bailout)=NULL; zend_try BEGIN_EXTERN_C() ZEND_API char *get_zend_version(void); diff --git a/Zend/zend_extensions.h b/Zend/zend_extensions.h index 268f013663..58a26d6c72 100644 --- a/Zend/zend_extensions.h +++ b/Zend/zend_extensions.h @@ -27,7 +27,7 @@ /* The first number is the engine version and the rest is the date. * This way engine 2/3 API no. is always greater than engine 1 API no.. */ -#define ZEND_EXTENSION_API_NO 320051025 +#define ZEND_EXTENSION_API_NO 320060519 typedef struct _zend_extension_version_info { int zend_extension_api_no; diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index 1c6d5c4603..6c423cc515 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -169,7 +169,7 @@ struct _zend_executor_globals { HashTable included_files; /* files already included */ - jmp_buf bailout; + jmp_buf *bailout; int error_reporting; int orig_error_reporting; @@ -192,7 +192,6 @@ struct _zend_executor_globals { zend_bool in_execution; HashTable *in_autoload; zend_function *autoload_func; - zend_bool bailout_set; zend_bool full_tables_cleanup; /* for extended information support */ diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 317ef37803..32643ea3b8 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -2316,13 +2316,13 @@ static int user_tick_function_compare(user_tick_function_entry * tick_fe1, user_ void php_call_shutdown_functions(TSRMLS_D) { - if (BG(user_shutdown_function_names)) + if (BG(user_shutdown_function_names)) { zend_try { zend_hash_apply(BG(user_shutdown_function_names), (apply_func_t) user_shutdown_function_call TSRMLS_CC); - memcpy(&EG(bailout), &orig_bailout, sizeof(jmp_buf)); - php_free_shutdown_functions(TSRMLS_C); } zend_end_try(); + php_free_shutdown_functions(TSRMLS_C); + } } void php_free_shutdown_functions(TSRMLS_D) diff --git a/main/main.c b/main/main.c index 0fc8da9940..7910e9120f 100644 --- a/main/main.c +++ b/main/main.c @@ -1540,7 +1540,7 @@ int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_mod ts_allocate_id(&core_globals_id, sizeof(php_core_globals), (ts_allocate_ctor) core_globals_ctor, NULL); core_globals = ts_resource(core_globals_id); #endif - EG(bailout_set) = 0; + EG(bailout) = NULL; EG(error_reporting) = E_ALL & ~E_NOTICE; PG(header_is_being_sent) = 0; |