cvs: Zend / zend.c zend_execute.c zend_execute.h zend_execute_API.c

From: Date: Sat, 24 Aug 2002 17:51:50 +0000
Subject: cvs: Zend / zend.c zend_execute.c zend_execute.h zend_execute_API.c
Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-356@lists.php.net to get a copy of this message
thies Sat Aug 24 13:51:50 2002 EDT Modified files: /Zend zend.c zend_execute.c zend_execute.h zend_execute_API.c Log: @ - added zend_execute_internal which is called like zend_execute but for @ internal functions. (Thies) # read the source, luke! # ok as discussed with zeev on irc. # will port to ZE2 tomorrow! Index: Zend/zend.c diff -u Zend/zend.c:1.147 Zend/zend.c:1.148 --- Zend/zend.c:1.147 Wed Aug 14 20:22:37 2002 +++ Zend/zend.c Sat Aug 24 13:51:49 2002 @@ -417,6 +417,7 @@ zend_compile_file = compile_file; zend_execute = execute; + zend_execute_internal = NULL; /* saves one function hall if the zend_execute_internal is not used */ /* set up version */ zend_version_info = strdup(ZEND_CORE_VERSION_INFO); Index: Zend/zend_execute.c diff -u Zend/zend_execute.c:1.302 Zend/zend_execute.c:1.303 --- Zend/zend_execute.c:1.302 Sat Aug 17 16:18:55 2002 +++ Zend/zend_execute.c Sat Aug 24 13:51:49 2002 @@ -996,6 +996,11 @@ #define EX(element) execute_data.element +ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC) +{ + ((zend_internal_function *) execute_data_ptr->function_state.function)->handler(execute_data_ptr->opline->extended_value, execute_data_ptr->Ts[execute_data_ptr->opline->result.u.var].var.ptr, execute_data_ptr->object.ptr, return_value_used TSRMLS_CC); +} + ZEND_API void execute(zend_op_array *op_array TSRMLS_DC) { zend_execute_data execute_data; @@ -1588,7 +1593,13 @@ if (EX(function_state).function->type==ZEND_INTERNAL_FUNCTION) { ALLOC_ZVAL(EX(Ts)[EX(opline)->result.u.var].var.ptr); INIT_ZVAL(*(EX(Ts)[EX(opline)->result.u.var].var.ptr)); - ((zend_internal_function *) EX(function_state).function)->handler(EX(opline)->extended_value, EX(Ts)[EX(opline)->result.u.var].var.ptr, EX(object).ptr, return_value_used TSRMLS_CC); + + if (! zend_execute_internal) { + /* saves one function hall if the zend_execute_internal is not used */ + ((zend_internal_function *) EX(function_state).function)->handler(EX(opline)->extended_value, EX(Ts)[EX(opline)->result.u.var].var.ptr, EX(object).ptr, return_value_used TSRMLS_CC); + } else { + zend_execute_internal(&execute_data, return_value_used TSRMLS_CC); + } EG(execute_data_ptr) = &execute_data; if (EX(object).ptr) { EX(object).ptr->refcount--; Index: Zend/zend_execute.h diff -u Zend/zend_execute.h:1.44 Zend/zend_execute.h:1.45 --- Zend/zend_execute.h:1.44 Mon May 20 03:16:43 2002 +++ Zend/zend_execute.h Sat Aug 24 13:51:50 2002 @@ -29,10 +29,12 @@ BEGIN_EXTERN_C() ZEND_API extern void (*zend_execute)(zend_op_array *op_array TSRMLS_DC); +ZEND_API extern void (*zend_execute_internal)(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC); void init_executor(TSRMLS_D); void shutdown_executor(TSRMLS_D); ZEND_API void execute(zend_op_array *op_array TSRMLS_DC); +ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC); ZEND_API int zend_is_true(zval *op); static inline void safe_free_zval_ptr(zval *p) { Index: Zend/zend_execute_API.c diff -u Zend/zend_execute_API.c:1.143 Zend/zend_execute_API.c:1.144 --- Zend/zend_execute_API.c:1.143 Sat Apr 27 12:20:59 2002 +++ Zend/zend_execute_API.c Sat Aug 24 13:51:50 2002 @@ -34,6 +34,8 @@ ZEND_API void (*zend_execute)(zend_op_array *op_array TSRMLS_DC); +ZEND_API void (*zend_execute_internal)(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC); + #ifdef ZEND_WIN32 #include <process.h>

« previous php.zend-engine.cvs (#356) next »