]> granicus.if.org Git - php/commitdiff
- Reduce number of c-functions/macros involved in function invocation
authorMarcus Boerger <helly@php.net>
Thu, 7 Aug 2003 22:43:01 +0000 (22:43 +0000)
committerMarcus Boerger <helly@php.net>
Thu, 7 Aug 2003 22:43:01 +0000 (22:43 +0000)
- Unify names of remaining c-function/macro names

ext/spl/spl_array.c
ext/spl/spl_engine.c
ext/spl/spl_engine.h
ext/spl/spl_foreach.c

index a51dc734e95ac05d68f7d4bc39ab6f601584ace8..bc82c668652a558a004fb5c74aa9b050f521bf48 100755 (executable)
@@ -66,7 +66,7 @@ int spl_fetch_dimension_address(znode *result, znode *op1, znode *op2, temp_vari
                zval *dim = spl_get_zval_ptr(op2, Ts, &EG(free_op2) TSRMLS_CC);
                zval *exists;
 
-               spl_begin_method_call_arg_ex1(obj, obj_ce, NULL, "exists", sizeof("exists")-1, &exists, dim);
+               spl_call_method_1(obj, obj_ce, NULL, "exists", sizeof("exists")-1, &exists, dim);
                if (!i_zend_is_true(exists)) {
                        if (type == BP_VAR_R || type == BP_VAR_RW) {
                                SEPARATE_ZVAL(&dim);
@@ -85,7 +85,7 @@ int spl_fetch_dimension_address(znode *result, znode *op1, znode *op2, temp_vari
                }
                DELETE_RET_ZVAL(exists);
                if (type == BP_VAR_R || type == BP_VAR_IS) {
-                       spl_begin_method_call_arg_ex1(obj, obj_ce, NULL, "get", sizeof("get")-1, retval, dim);
+                       spl_call_method_1(obj, obj_ce, NULL, "get", sizeof("get")-1, retval, dim);
                }
                FREE_OP(Ts, op2, EG(free_op2));
                return 0;
@@ -210,7 +210,7 @@ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_ASSIGN_DIM)
                        value->refcount = 0;
                }
 
-               spl_begin_method_call_arg_ex2(obj, obj_ce, NULL, "set", sizeof("set")-1, &retval, index, value);
+               spl_call_method_2(obj, obj_ce, NULL, "set", sizeof("set")-1, &retval, index, value);
 
                if (index == &tmp) {
                        zval_dtor(index);
@@ -284,7 +284,7 @@ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_UNSET_DIM_OBJ)
                                break;
                }
 
-               spl_begin_method_call_arg_ex1(obj, obj_ce, NULL, "del", sizeof("del")-1, &retval, index);
+               spl_call_method_1(obj, obj_ce, NULL, "del", sizeof("del")-1, &retval, index);
 
                if (index == &tmp) {
                        zval_dtor(index);
index c19f0614218b9af036c3e05b578847ccd4dcc415..7d4f24d0691a40a91e6cb609b12d677b61b8d928 100755 (executable)
@@ -176,6 +176,7 @@ int spl_call_method(zval **object_pp, zend_class_entry *obj_ce, zend_function **
        int result;
        zend_fcall_info fci;
        zval z_fname;
+       zval *retval;
 
        zval **params[2];
 
@@ -186,7 +187,7 @@ int spl_call_method(zval **object_pp, zend_class_entry *obj_ce, zend_function **
        /*fci.function_table = NULL; will be read form zend_class_entry of object if needed */
        fci.object_pp = object_pp;
        fci.function_name = &z_fname;
-       fci.retval_ptr_ptr = retval_ptr;
+       fci.retval_ptr_ptr = retval_ptr ? retval_ptr : &retval;
        fci.param_count = param_count;
        fci.params = params;
        fci.no_separation = 1;
@@ -216,6 +217,10 @@ int spl_call_method(zval **object_pp, zend_class_entry *obj_ce, zend_function **
                        result = zend_call_function(&fci, &fcic TSRMLS_CC);
                }
        }
+       if (!retval_ptr && fci.retval_ptr_ptr) {
+               zval_dtor(*fci.retval_ptr_ptr);
+               FREE_ZVAL(*fci.retval_ptr_ptr);
+       }
        return result;
 }
 /* }}} */
index 52a278e3a5498e5d095a42f5167554890741ac12..c109fec0f6e2b92c1025b16b70a948cb602fe324 100755 (executable)
@@ -49,40 +49,13 @@ static inline zend_class_entry *spl_get_class_entry(zval *obj TSRMLS_DC)
 }
 /* }}} */
 
-/* {{{ spl_begin_method_call_arg */
-static inline int spl_begin_method_call_arg(zval **obj, zend_class_entry *obj_ce, zend_function **fn_proxy, char *function_name, int fname_len, zval *retval, zval *arg1 TSRMLS_DC)
-{
-       zval *local_retval;
-       int ret = spl_call_method(obj, obj_ce, fn_proxy, function_name, fname_len, &local_retval, 1, arg1, NULL TSRMLS_CC);
-       if (local_retval) {
-               COPY_PZVAL_TO_ZVAL(*retval, local_retval);
-       } else {
-               INIT_ZVAL(*retval);
-       }
-       return ret;
-}
-/* }}} */
-
-/* {{{ spl_begin_method_call_no_retval */
-static inline int spl_begin_method_call_no_retval(zval **obj, zend_class_entry *obj_ce, zend_function **fn_proxy, char *function_name, int fname_len TSRMLS_DC)
-{
-       zval *retval;
-       int ret = spl_call_method(obj, obj_ce, fn_proxy, function_name, fname_len, &retval, 0, NULL, NULL TSRMLS_CC);
-       if (retval) {
-               zval_dtor(retval);
-               FREE_ZVAL(retval);
-       }
-       return ret;
-}
-/* }}} */
-
-#define spl_begin_method_call_ex(obj, obj_ce, fn_proxy, function_name, fname_len, retval) \
+#define spl_call_method_0(obj, obj_ce, fn_proxy, function_name, fname_len, retval) \
        spl_call_method(obj, obj_ce, fn_proxy, function_name, fname_len, retval, 0, NULL, NULL TSRMLS_CC)
 
-#define spl_begin_method_call_arg_ex1(obj, obj_ce, fn_proxy, function_name, fname_len, retval, arg1) \
+#define spl_call_method_1(obj, obj_ce, fn_proxy, function_name, fname_len, retval, arg1) \
        spl_call_method(obj, obj_ce, fn_proxy, function_name, fname_len, retval, 1, arg1, NULL TSRMLS_CC)
 
-#define spl_begin_method_call_arg_ex2(obj, obj_ce, fn_proxy, function_name, fname_len, retval, arg1, arg2) \
+#define spl_call_method_2(obj, obj_ce, fn_proxy, function_name, fname_len, retval, arg1, arg2) \
        spl_call_method(obj, obj_ce, fn_proxy, function_name, fname_len, retval, 2, arg1, arg2 TSRMLS_CC)
 
 void spl_instanciate(zend_class_entry *pce, zval **object TSRMLS_DC);
index 35414f478b813ec6349aa1ad1597c05a469f732c..114aa53952b0b24a5d3ee68ca9e93ed8019a4e85 100755 (executable)
@@ -70,7 +70,7 @@ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_FE_RESET)
        if (is_a & SPL_IS_A_ITERATOR) {
                spl_unlock_zval_ptr_ptr(&EX(opline)->op1, EX(Ts) TSRMLS_CC);
                obj_ce = instance_ce;
-               spl_begin_method_call_ex(obj, obj_ce, NULL, "new_iterator", sizeof("new_iterator")-1, &retval);
+               spl_call_method_0(obj, obj_ce, NULL, "new_iterator", sizeof("new_iterator")-1, &retval);
                instance_ce = spl_get_class_entry(retval TSRMLS_CC);
                is_a = spl_implements(instance_ce);
                if (!(is_a & SPL_IS_A_FORWARD)) {
@@ -146,10 +146,10 @@ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_FE_FETCH)
                obj = &proxy->obj; /* will be optimized out */
 
                if (proxy->index++) {
-                       spl_begin_method_call_no_retval(obj, proxy->obj_ce, &proxy->funcs.next, "next", sizeof("next")-1 TSRMLS_CC);
+                       spl_call_method_0(obj, proxy->obj_ce, &proxy->funcs.next, "next", sizeof("next")-1, NULL);
                } else {
                        if (proxy->is_a & SPL_IS_A_SEQUENCE) {
-                               spl_begin_method_call_no_retval(obj, proxy->obj_ce, &proxy->funcs.rewind, "rewind", sizeof("rewind")-1 TSRMLS_CC);
+                               spl_call_method_0(obj, proxy->obj_ce, &proxy->funcs.rewind, "rewind", sizeof("rewind")-1, NULL);
                        }
                        /* now this is an optimization trick:
                           ZEND_SWITCH_FREE receives the array copy or the spl object in op1 and has an unused op2
@@ -158,7 +158,7 @@ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_FE_FETCH)
                        op_array->opcodes[EX(opline)->op2.u.opline_num].op2 = *op1;
                }
 
-               spl_begin_method_call_ex(obj, proxy->obj_ce, &proxy->funcs.more, "has_more", sizeof("has_more")-1, &more);
+               spl_call_method_0(obj, proxy->obj_ce, &proxy->funcs.more, "has_more", sizeof("has_more")-1, &more);
                if (!more->type == IS_BOOL && !more->type == IS_LONG) {
                        php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Method %s::has_more implements spl_forward::has_more and should return a value of type boolean or int");
                        convert_to_boolean(more);
@@ -168,10 +168,10 @@ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_FE_FETCH)
                        FREE_ZVAL(more);
                        result = &EX_T(EX(opline)->result.u.var).tmp_var;
 
-                       spl_begin_method_call_ex(obj, proxy->obj_ce, &proxy->funcs.current, "current", sizeof("current")-1, &value);
+                       spl_call_method_0(obj, proxy->obj_ce, &proxy->funcs.current, "current", sizeof("current")-1, &value);
 
                        if (proxy->is_a & SPL_IS_A_ASSOC) {
-                               spl_begin_method_call_ex(obj, proxy->obj_ce, &proxy->funcs.key, "key", sizeof("key")-1, &key);
+                               spl_call_method_0(obj, proxy->obj_ce, &proxy->funcs.key, "key", sizeof("key")-1, &key);
                        } else {
                                MAKE_STD_ZVAL(key);
                                key->value.lval = proxy->index;