]> granicus.if.org Git - php/commitdiff
WS and removing unecessary things
authorMarcus Boerger <helly@php.net>
Wed, 11 Jun 2003 20:51:14 +0000 (20:51 +0000)
committerMarcus Boerger <helly@php.net>
Wed, 11 Jun 2003 20:51:14 +0000 (20:51 +0000)
ext/spl/php_spl.c
ext/spl/php_spl.h
ext/spl/spl_engine.c
ext/spl/spl_foreach.c

index 00b1a37f0c0d18ec6158dac7b8c8de5578c37340..2d75155695e83d6aaf902c912413a6b625f0ca01 100755 (executable)
@@ -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;
 }
 /* }}} */
index e54ef2dbcb42ea442631bb3a0ae2bb34ed43f02a..9f5f7152977753ee99afdb82bf78343c468bf22e 100755 (executable)
@@ -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);
index 30cee2fd5713b343af676a71e354d4140f73a5f2..1e7b3be448e71a9fead69e1a6346be50c516fb31 100755 (executable)
@@ -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);
index 7cc93f66e437edaf5dff7d03967044b1e70e3026..5d8c5f8f59acb598778049045932a12505aa7b5f 100755 (executable)
@@ -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);