cvs: ZendEngine2 / zend.c zend_builtin_functions.c zend_compile.h zend_execute.c

From: Date: Tue, 07 May 2002 18:42:15 +0000
Subject: cvs: ZendEngine2 / zend.c zend_builtin_functions.c zend_compile.h zend_execute.c
Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-99@lists.php.net to get a copy of this message
andi Tue May 7 14:42:15 2002 EDT Modified files: /ZendEngine2 zend.c zend_builtin_functions.c zend_compile.h zend_execute.c Log: - More debug backtrace work. It still doesn't work very well... Index: ZendEngine2/zend.c diff -u ZendEngine2/zend.c:1.165 ZendEngine2/zend.c:1.166 --- ZendEngine2/zend.c:1.165 Tue Mar 12 14:22:29 2002 +++ ZendEngine2/zend.c Tue May 7 14:42:13 2002 @@ -812,6 +812,12 @@ zend_file_handle *file_handle; zend_op_array *orig_op_array = EG(active_op_array); zval *local_retval=NULL; + zend_execute_data execute_data; + + EX(prev_execute_data) = NULL; + EG(current_execute_data) = &execute_data; + EX(object) = NULL; + EX(opline) = NULL; va_start(files, file_count); for (i=0; i<file_count; i++) { @@ -822,6 +828,7 @@ EG(active_op_array) = zend_compile_file(file_handle, ZEND_INCLUDE TSRMLS_CC); zend_destroy_file_handle(file_handle TSRMLS_CC); if (EG(active_op_array)) { + EX(function_state).function = (zend_function *) EG(active_op_array); EG(return_value_ptr_ptr) = retval ? retval : &local_retval; zend_execute(EG(active_op_array) TSRMLS_CC); if (EG(exception)) { Index: ZendEngine2/zend_builtin_functions.c diff -u ZendEngine2/zend_builtin_functions.c:1.119 ZendEngine2/zend_builtin_functions.c:1.120 --- ZendEngine2/zend_builtin_functions.c:1.119 Thu May 2 13:20:48 2002 +++ ZendEngine2/zend_builtin_functions.c Tue May 7 14:42:13 2002 @@ -1188,23 +1188,33 @@ { zend_execute_data *ptr; int lineno; - + char *function_name; + char *filename; ptr = EG(current_execute_data); lineno = ptr->opline->lineno; - - ptr = ptr->prev_execute_data; - + while (ptr) { if (ptr->object) { printf("%s::", Z_OBJCE(*ptr->object)->name); } - printf("%s() [%s:%d]\n", ptr->function_state.function->common.function_name, ptr->function_state.function->op_array.filename, lineno); - lineno = ptr->opline->lineno; + function_name = ptr->function_state.function->common.function_name; + if (!function_name) { + function_name = "main"; + } + ptr = ptr->prev_execute_data; + if (!ptr) { + break; + } + + filename = ptr->function_state.function->op_array.filename; + + printf("%s() [%s:%d]\n", function_name, filename, lineno); + if (ptr->opline) { + lineno = ptr->opline->lineno; + } } - - printf("main() [...:%d]\n", lineno); RETURN_TRUE; } Index: ZendEngine2/zend_compile.h diff -u ZendEngine2/zend_compile.h:1.175 ZendEngine2/zend_compile.h:1.176 --- ZendEngine2/zend_compile.h:1.175 Thu May 2 13:20:48 2002 +++ ZendEngine2/zend_compile.h Tue May 7 14:42:13 2002 @@ -195,6 +195,8 @@ struct _zend_execute_data *prev_execute_data; } zend_execute_data; +#define EX(element) execute_data.element + #define IS_CONST (1<<0) #define IS_TMP_VAR (1<<1) Index: ZendEngine2/zend_execute.c diff -u ZendEngine2/zend_execute.c:1.339 ZendEngine2/zend_execute.c:1.340 --- ZendEngine2/zend_execute.c:1.339 Thu May 2 13:20:48 2002 +++ ZendEngine2/zend_execute.c Tue May 7 14:42:13 2002 @@ -1130,8 +1130,6 @@ EG(current_execute_data) = EX(prev_execute_data); \ return; -#define EX(element) execute_data.element - ZEND_API void execute(zend_op_array *op_array TSRMLS_DC) { zend_execute_data execute_data; @@ -2805,7 +2803,7 @@ zend_error(E_ERROR, "Cannot delete non-existing object"); } if (Z_TYPE_PP(object) != IS_OBJECT) { - zend_error(E_ERROR, "Cannot call delete on non-object type"); + zend_error(E_ERROR, "Cannot call delete on non-object type"); } Z_OBJ_HT_PP(object)->delete_obj(*object TSRMLS_CC); }

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