From 76f68f2a51d8217c6110017e5f0df8027421e67b Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Wed, 11 Jun 2003 20:51:14 +0000 Subject: [PATCH] WS and removing unecessary things --- ext/spl/php_spl.c | 2 ++ ext/spl/php_spl.h | 1 - ext/spl/spl_engine.c | 22 +++++++++++----------- ext/spl/spl_foreach.c | 17 ++++++----------- 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c index 00b1a37f0c..2d75155695 100755 --- a/ext/spl/php_spl.c +++ b/ext/spl/php_spl.c @@ -164,6 +164,7 @@ PHP_MINIT_FUNCTION(spl) REGISTER_SPL_STD_CLASS(spl, array_writer_default, spl_array_writer_default_create); REGISTER_SPL_FUNCTIONS(spl, array_writer_default, spl_array_writer_funcs); #endif + return SUCCESS; } /* }}} */ @@ -205,6 +206,7 @@ PHP_MSHUTDOWN_FUNCTION(spl) #ifdef SPL_ARRAY_WRITE ZEND_EXECUTE_HOOK_RESTORE(ZEND_ASSIGN); #endif /* SPL_ARRAY_WRITE */ + return SUCCESS; } /* }}} */ diff --git a/ext/spl/php_spl.h b/ext/spl/php_spl.h index e54ef2dbcb..9f5f715297 100755 --- a/ext/spl/php_spl.h +++ b/ext/spl/php_spl.h @@ -58,7 +58,6 @@ PHP_MINFO_FUNCTION(spl); #define ZEND_EXECUTE_HOOK_FUNCTION(name) \ int spl_handler_ ## name(ZEND_OPCODE_HANDLER_ARGS) - ZEND_BEGIN_MODULE_GLOBALS(spl) #ifdef SPL_FOREACH ZEND_EXECUTE_HOOK_PTR(ZEND_FE_RESET); diff --git a/ext/spl/spl_engine.c b/ext/spl/spl_engine.c index 30cee2fd57..1e7b3be448 100755 --- a/ext/spl/spl_engine.c +++ b/ext/spl/spl_engine.c @@ -184,7 +184,6 @@ int spl_call_method(zval **object_pp, zend_class_entry *obj_ce, zend_function ** int (*orig_unary_op)(zval *result, zval *op1); int (*orig_binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC); zend_class_entry *current_scope; - zend_class_entry *calling_scope = NULL; zval *current_this; zend_execute_data execute_data; va_list args; @@ -200,7 +199,6 @@ int spl_call_method(zval **object_pp, zend_class_entry *obj_ce, zend_function ** EX(opline) = NULL; EX(object) = *object_pp; - calling_scope = obj_ce; original_function_state_ptr = EG(function_state_ptr); if (fn_proxy && *fn_proxy) { @@ -231,13 +229,15 @@ int spl_call_method(zval **object_pp, zend_class_entry *obj_ce, zend_function ** ALLOC_ZVAL(new_zval); *new_zval = *arg; zval_copy_ctor(new_zval); - new_zval->refcount = 1; + new_zval->refcount = 2; + new_zval->is_ref = 1; arg->refcount--; - arg = new_zval; + param = new_zval; + } else { + arg->refcount++; + arg->is_ref = 1; + param = arg; } - arg->refcount++; - arg->is_ref = 1; - param = arg; } else if (arg != &EG(uninitialized_zval)) { arg->refcount++; param = arg; @@ -250,15 +250,15 @@ int spl_call_method(zval **object_pp, zend_class_entry *obj_ce, zend_function ** } va_end(args); - zend_ptr_stack_n_push(&EG(argument_stack), 2, (void *) (long) param_count, NULL); + zend_ptr_stack_push(&EG(argument_stack), (void *) (long) param_count); + zend_ptr_stack_push(&EG(argument_stack), NULL); EG(function_state_ptr) = &EX(function_state); current_scope = EG(scope); - EG(scope) = calling_scope; + EG(scope) = obj_ce; current_this = EG(This); - EG(This) = *object_pp; if (!PZVAL_IS_REF(EG(This))) { @@ -309,7 +309,7 @@ int spl_call_method(zval **object_pp, zend_class_entry *obj_ce, zend_function ** EG(binary_op) = orig_binary_op; } else { ALLOC_INIT_ZVAL(*retval); - ((zend_internal_function *) EX(function_state).function)->handler(param_count, *retval, (object_pp?*object_pp:NULL), 1 TSRMLS_CC); + ((zend_internal_function *) EX(function_state).function)->handler(param_count, *retval, *object_pp, 1 TSRMLS_CC); INIT_PZVAL(*retval); } zend_ptr_stack_clear_multiple(TSRMLS_C); diff --git a/ext/spl/spl_foreach.c b/ext/spl/spl_foreach.c index 7cc93f66e4..5d8c5f8f59 100755 --- a/ext/spl/spl_foreach.c +++ b/ext/spl/spl_foreach.c @@ -33,9 +33,6 @@ #define OPTIMIZED_ARRAY_CONSTRUCT -#define ezalloc(size) \ - memset(emalloc(size), 0, size) - typedef struct { zend_function *next; zend_function *rewind; @@ -81,8 +78,8 @@ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_FE_RESET) PZVAL_LOCK(retval); } else if (is_a & SPL_IS_A_FORWARD) { spl_unlock_zval_ptr_ptr(&EX(opline)->op1, EX(Ts) TSRMLS_CC); - (*obj)->refcount += 2; /* lock two times */ retval = *obj; + retval->refcount += 2; /* lock two times */ } else { ZEND_EXECUTE_HOOK_ORIGINAL(ZEND_FE_RESET); } @@ -98,9 +95,10 @@ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_FE_RESET) /* And pack it into a zval. Since it is nowhere accessible using a * zval of type STRING is the fastest approach of storing the proxy. */ - ALLOC_INIT_ZVAL(retval); + ALLOC_ZVAL(retval); ZVAL_STRINGL(retval, (char*)proxy, sizeof(spl_foreach_proxy)-1, 0); - retval->refcount += 2; /* lock two times */ + retval->is_ref = 0; + retval->refcount = 2; /* lock two times */ /* return the created proxy container */ EX_T(EX(opline)->result.u.var).var.ptr = retval; EX_T(EX(opline)->result.u.var).var.ptr_ptr = &EX_T(EX(opline)->result.u.var).var.ptr; @@ -140,8 +138,6 @@ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_FE_FETCH) spl_foreach_proxy *proxy; if (Z_TYPE_PP(obj) == IS_STRING) { - spl_unlock_zval_ptr_ptr(op1, EX(Ts) TSRMLS_CC); - PZVAL_LOCK(*obj); proxy = (spl_foreach_proxy*)Z_STRVAL_PP(obj); obj = &proxy->obj; /* will be optimized out */ @@ -231,7 +227,6 @@ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_FE_FETCH) /* {{{ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_SWITCH_FREE) */ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_SWITCH_FREE) { - znode *op1 = &EX(opline)->op1; znode *op2 = &EX(opline)->op2; zval *tmp, **obj = spl_get_zval_ptr_ptr(op2, EX(Ts) TSRMLS_CC); spl_foreach_proxy *proxy; @@ -241,10 +236,10 @@ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_SWITCH_FREE) tmp = *obj; *obj = proxy->obj; /* restore */ - zval_dtor(tmp); + efree(tmp->value.str.val); FREE_ZVAL(tmp); - spl_unlock_zval_ptr_ptr(op1, EX(Ts) TSRMLS_CC); + spl_unlock_zval_ptr_ptr(&EX(opline)->op1, EX(Ts) TSRMLS_CC); PZVAL_LOCK(*obj); SET_UNUSED(*op2); -- 2.50.1