cvs: Zend / zend.c zend_execute.c zend_execute.h zend_execute_API.c
| From: | Thies C. Arntzen | 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>