]> granicus.if.org Git - php/commitdiff
Use zval_get_string in print_zval and propagate TSRMLS
authorNikita Popov <nikic@php.net>
Mon, 21 Apr 2014 15:12:10 +0000 (17:12 +0200)
committerNikita Popov <nikic@php.net>
Mon, 21 Apr 2014 15:55:58 +0000 (17:55 +0200)
Zend/zend.c
Zend/zend.h
Zend/zend_variables.c
Zend/zend_variables.h
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
ext/reflection/php_reflection.c
sapi/phpdbg/phpdbg_info.c

index cef24c085baf07e92220977ddf805b0160e635a9..eb20508261fd2cd2f31c563804e8e9ddd93b3b77 100644 (file)
@@ -309,34 +309,23 @@ again:
 }
 /* }}} */
 
-ZEND_API int zend_print_zval(zval *expr, int indent) /* {{{ */
+ZEND_API int zend_print_zval(zval *expr, int indent TSRMLS_DC) /* {{{ */
 {
-       return zend_print_zval_ex(zend_write, expr, indent);
+       return zend_print_zval_ex(zend_write, expr, indent TSRMLS_CC);
 }
 /* }}} */
 
-ZEND_API int zend_print_zval_ex(zend_write_func_t write_func, zval *expr, int indent) /* {{{ */
+ZEND_API int zend_print_zval_ex(zend_write_func_t write_func, zval *expr, int indent TSRMLS_DC) /* {{{ */
 {
-       zval expr_copy;
-       int use_copy;
-       int ret;
+       zend_string *str = zval_get_string(expr TSRMLS_CC);
+       int len = str->len;
 
-       zend_make_printable_zval(expr, &expr_copy, &use_copy);
-       if (use_copy) {
-               expr = &expr_copy;
+       if (len != 0) {
+               write_func(str->val, len);
        }
-       if (Z_STRLEN_P(expr) == 0) { /* optimize away empty strings */
-               if (use_copy) {
-                       zval_dtor(expr);
-               }
-               return 0;
-       }
-       write_func(Z_STRVAL_P(expr), Z_STRLEN_P(expr));
-       ret = Z_STRLEN_P(expr);
-       if (use_copy) {
-               zval_dtor(expr);
-       }
-       return ret;
+
+       STR_RELEASE(str);
+       return len;
 }
 /* }}} */
 
@@ -386,7 +375,7 @@ ZEND_API void zend_print_flat_zval_r(zval *expr TSRMLS_DC) /* {{{ */
                        break;
                }
                default:
-                       zend_print_variable(expr);
+                       zend_print_variable(expr TSRMLS_CC);
                        break;
        }
 }
@@ -447,7 +436,7 @@ ZEND_API void zend_print_zval_r_ex(zend_write_func_t write_func, zval *expr, int
                                break;
                        }
                default:
-                       zend_print_zval_ex(write_func, expr, indent);
+                       zend_print_zval_ex(write_func, expr, indent TSRMLS_CC);
                        break;
        }
 }
index c81c223a7fd9ba2c6b72d43a8d4044936fdddef5..3aae759dde487f2fe4ea3b1861f0402e28177f72 100644 (file)
@@ -555,8 +555,8 @@ END_EXTERN_C()
 BEGIN_EXTERN_C()
 ZEND_API char *get_zend_version(void);
 ZEND_API void zend_make_printable_zval(zval *expr, zval *expr_copy, int *use_copy);
-ZEND_API int zend_print_zval(zval *expr, int indent);
-ZEND_API int zend_print_zval_ex(zend_write_func_t write_func, zval *expr, int indent);
+ZEND_API int zend_print_zval(zval *expr, int indent TSRMLS_DC);
+ZEND_API int zend_print_zval_ex(zend_write_func_t write_func, zval *expr, int indent TSRMLS_DC);
 ZEND_API void zend_print_zval_r(zval *expr, int indent TSRMLS_DC);
 ZEND_API void zend_print_flat_zval_r(zval *expr TSRMLS_DC);
 ZEND_API void zend_print_zval_r_ex(zend_write_func_t write_func, zval *expr, int indent TSRMLS_DC);
index 32fb706982bb7fb340aaef1dde6e95c2489f422e..5557c7beea61d36c6ef8dbedb1a17bf5b1310431 100644 (file)
@@ -270,16 +270,14 @@ ZEND_API void _zval_copy_ctor_func(zval *zvalue ZEND_FILE_LINE_DC)
 }
 
 
-ZEND_API int zend_print_variable(zval *var) 
+ZEND_API int zend_print_variable(zval *var TSRMLS_DC
 {
-       return zend_print_zval(var, 0);
+       return zend_print_zval(var, 0 TSRMLS_CC);
 }
 
 
 ZEND_API void _zval_dtor_wrapper(zval *zvalue)
 {
-       TSRMLS_FETCH();
-
        zval_dtor(zvalue);
 }
 
index 686c57ecf23e074aaa0797828fd321055f05a472..b85ef435cafe3231b83e9e99c8ca58ab1b71e816 100644 (file)
@@ -64,7 +64,7 @@ static zend_always_inline void _zval_opt_copy_ctor(zval *zvalue ZEND_FILE_LINE_D
 
 ZEND_API int zval_copy_static_var(zval *p TSRMLS_DC, int num_args, va_list args, zend_hash_key *key);
 
-ZEND_API int zend_print_variable(zval *var);
+ZEND_API int zend_print_variable(zval *var TSRMLS_DC);
 ZEND_API void _zval_ptr_dtor(zval *zval_ptr ZEND_FILE_LINE_DC);
 ZEND_API void _zval_internal_dtor_for_ptr(zval *zvalue ZEND_FILE_LINE_DC);
 ZEND_API void _zval_internal_dtor(zval *zvalue ZEND_FILE_LINE_DC);
index 57dbac8a7f048e73f533f52afafe6f2069b2749c..232a7e34fc88609270d61ac08e119527b85c8509 100644 (file)
@@ -1064,7 +1064,7 @@ ZEND_VM_HANDLER(40, ZEND_ECHO, CONST|TMP|VAR|CV, ANY)
        SAVE_OPLINE();
        z = GET_OP1_ZVAL_PTR_DEREF(BP_VAR_R);
 
-       zend_print_variable(z);
+       zend_print_variable(z TSRMLS_CC);
 
        FREE_OP1();
        CHECK_EXCEPTION();
@@ -4636,7 +4636,7 @@ ZEND_VM_HANDLER(79, ZEND_EXIT, CONST|TMP|VAR|UNUSED|CV, ANY)
                if (Z_TYPE_P(ptr) == IS_LONG) {
                        EG(exit_status) = Z_LVAL_P(ptr);
                } else {
-                       zend_print_variable(ptr);
+                       zend_print_variable(ptr TSRMLS_CC);
                }
                FREE_OP1();
        }
index 5679b3d744ceaaf63b827e99ea7483d0209bd750..a8ecbf2ec29bb9885576e5be00cfc7adc1c70efc 100644 (file)
@@ -2337,7 +2337,7 @@ static int ZEND_FASTCALL  ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        SAVE_OPLINE();
        z = opline->op1.zv;
 
-       zend_print_variable(z);
+       zend_print_variable(z TSRMLS_CC);
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -3135,7 +3135,7 @@ static int ZEND_FASTCALL  ZEND_EXIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                if (Z_TYPE_P(ptr) == IS_LONG) {
                        EG(exit_status) = Z_LVAL_P(ptr);
                } else {
-                       zend_print_variable(ptr);
+                       zend_print_variable(ptr TSRMLS_CC);
                }
 
        }
@@ -7298,7 +7298,7 @@ static int ZEND_FASTCALL  ZEND_ECHO_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        SAVE_OPLINE();
        z = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
 
-       zend_print_variable(z);
+       zend_print_variable(z TSRMLS_CC);
 
        zval_dtor(free_op1.var);
        CHECK_EXCEPTION();
@@ -8084,7 +8084,7 @@ static int ZEND_FASTCALL  ZEND_EXIT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                if (Z_TYPE_P(ptr) == IS_LONG) {
                        EG(exit_status) = Z_LVAL_P(ptr);
                } else {
-                       zend_print_variable(ptr);
+                       zend_print_variable(ptr TSRMLS_CC);
                }
                zval_dtor(free_op1.var);
        }
@@ -12167,7 +12167,7 @@ static int ZEND_FASTCALL  ZEND_ECHO_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        SAVE_OPLINE();
        z = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
 
-       zend_print_variable(z);
+       zend_print_variable(z TSRMLS_CC);
 
        zval_ptr_dtor_nogc(free_op1.var);
        CHECK_EXCEPTION();
@@ -13214,7 +13214,7 @@ static int ZEND_FASTCALL  ZEND_EXIT_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                if (Z_TYPE_P(ptr) == IS_LONG) {
                        EG(exit_status) = Z_LVAL_P(ptr);
                } else {
-                       zend_print_variable(ptr);
+                       zend_print_variable(ptr TSRMLS_CC);
                }
                zval_ptr_dtor_nogc(free_op1.var);
        }
@@ -22983,7 +22983,7 @@ static int ZEND_FASTCALL  ZEND_EXIT_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS
                if (Z_TYPE_P(ptr) == IS_LONG) {
                        EG(exit_status) = Z_LVAL_P(ptr);
                } else {
-                       zend_print_variable(ptr);
+                       zend_print_variable(ptr TSRMLS_CC);
                }
 
        }
@@ -28696,7 +28696,7 @@ static int ZEND_FASTCALL  ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        SAVE_OPLINE();
        z = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
 
-       zend_print_variable(z);
+       zend_print_variable(z TSRMLS_CC);
 
        CHECK_EXCEPTION();
        ZEND_VM_NEXT_OPCODE();
@@ -29576,7 +29576,7 @@ static int ZEND_FASTCALL  ZEND_EXIT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                if (Z_TYPE_P(ptr) == IS_LONG) {
                        EG(exit_status) = Z_LVAL_P(ptr);
                } else {
-                       zend_print_variable(ptr);
+                       zend_print_variable(ptr TSRMLS_CC);
                }
 
        }
index 0ef31460bdd137139598017d3287783b56c6b3d0..86391115d06b4b72862c63d1cb6165078fb4fd6d 100644 (file)
@@ -1529,7 +1529,7 @@ ZEND_METHOD(reflection, export)
                ZVAL_COPY_VALUE(return_value, &retval);
        } else {
                /* No need for _r variant, return of __toString should always be a string */
-               zend_print_zval(&retval, 0);
+               zend_print_zval(&retval, 0 TSRMLS_CC);
                zend_printf("\n");
                zval_ptr_dtor(&retval);
        }
index f7c7ab08466e55bc715f20db56292c83a0fc0369..5596255d6ebc343cb53b7b20a9d1102432cc14f7 100644 (file)
@@ -215,7 +215,7 @@ PHPDBG_INFO(literal) /* {{{ */
                        if (Z_TYPE(ops->literals[literal]) != IS_NULL) {
                                phpdbg_write("|-------- C%u -------> [", literal);
                                zend_print_zval(
-                                       &ops->literals[literal], 0);
+                                       &ops->literals[literal], 0 TSRMLS_CC);
                                phpdbg_write("]");
                                phpdbg_writeln(EMPTY);
                        }