PHP  
 PHP: Test and Code Coverage Analysis
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

LTP GCOV extension - code coverage report
Current view: directory - var/php_gcov/PHP_HEAD/Zend - zend_variables.c
Test: PHP Code Coverage
Date: 2009-11-23 Instrumented lines: 53
Code covered: 90.6 % Executed lines: 48
Legend: not executed executed

       1                 : /*
       2                 :    +----------------------------------------------------------------------+
       3                 :    | Zend Engine                                                          |
       4                 :    +----------------------------------------------------------------------+
       5                 :    | Copyright (c) 1998-2009 Zend Technologies Ltd. (http://www.zend.com) |
       6                 :    +----------------------------------------------------------------------+
       7                 :    | This source file is subject to version 2.00 of the Zend license,     |
       8                 :    | that is bundled with this package in the file LICENSE, and is        |
       9                 :    | available through the world-wide-web at the following url:           |
      10                 :    | http://www.zend.com/license/2_00.txt.                                |
      11                 :    | If you did not receive a copy of the Zend license and are unable to  |
      12                 :    | obtain it through the world-wide-web, please send a note to          |
      13                 :    | license@zend.com so we can mail you a copy immediately.              |
      14                 :    +----------------------------------------------------------------------+
      15                 :    | Authors: Andi Gutmans <andi@zend.com>                                |
      16                 :    |          Zeev Suraski <zeev@zend.com>                                |
      17                 :    +----------------------------------------------------------------------+
      18                 : */
      19                 : 
      20                 : /* $Id: zend_variables.c 277841 2009-03-26 20:02:53Z felipe $ */
      21                 : 
      22                 : #include <stdio.h>
      23                 : #include "zend.h"
      24                 : #include "zend_API.h"
      25                 : #include "zend_globals.h"
      26                 : #include "zend_constants.h"
      27                 : #include "zend_list.h"
      28                 : 
      29                 : ZEND_API void _zval_dtor_func(zval *zvalue ZEND_FILE_LINE_DC) /* {{{ */
      30        44562905 : {
      31        44562905 :         switch (Z_TYPE_P(zvalue) & IS_CONSTANT_TYPE_MASK) {
      32                 :                 case IS_CONSTANT: {
      33             154 :                         goto dtor_unicode;
      34                 :                 }
      35                 :                 case IS_STRING:
      36                 :                         CHECK_ZVAL_STRING_REL(zvalue);
      37        21511377 :                         STR_FREE_REL(Z_STRVAL_P(zvalue));
      38        21511377 :                         break;
      39                 :                 case IS_UNICODE:
      40        18171293 : dtor_unicode:
      41                 :                         CHECK_ZVAL_UNICODE_REL(zvalue);
      42        18171293 :                         STR_FREE_REL(Z_USTRVAL_P(zvalue));
      43        18171293 :                         break;
      44                 :                 case IS_ARRAY:
      45                 :                 case IS_CONSTANT_ARRAY: {
      46                 :                                 TSRMLS_FETCH();
      47                 : 
      48         3254482 :                                 if (Z_ARRVAL_P(zvalue) && (Z_ARRVAL_P(zvalue) != &EG(symbol_table))) {
      49         3234932 :                                         zend_hash_destroy(Z_ARRVAL_P(zvalue));
      50         3234932 :                                         FREE_HASHTABLE(Z_ARRVAL_P(zvalue));
      51                 :                                 }
      52                 :                         }
      53         3254482 :                         break;
      54                 :                 case IS_OBJECT:
      55                 :                         {
      56                 :                                 TSRMLS_FETCH();
      57                 : 
      58         1099574 :                                 Z_OBJ_HT_P(zvalue)->del_ref(zvalue TSRMLS_CC);
      59                 :                         }
      60         1099569 :                         break;
      61                 :                 case IS_RESOURCE:
      62                 :                         {
      63                 :                                 TSRMLS_FETCH();
      64                 : 
      65                 :                                 /* destroy resource */
      66          526148 :                                 zend_list_delete(Z_LVAL_P(zvalue));
      67                 :                         }
      68          526148 :                         break;
      69                 :                 case IS_LONG:
      70                 :                 case IS_DOUBLE:
      71                 :                 case IS_BOOL:
      72                 :                 case IS_NULL:
      73                 :                 default:
      74              31 :                         return;
      75                 :                         break;
      76                 :         }
      77                 : }
      78                 : /* }}} */
      79                 : 
      80                 : ZEND_API void _zval_internal_dtor(zval *zvalue ZEND_FILE_LINE_DC) /* {{{ */
      81        47947746 : {
      82        47947746 :         switch (Z_TYPE_P(zvalue) & IS_CONSTANT_TYPE_MASK) {
      83                 :                 case IS_CONSTANT: {
      84               0 :                         goto dtor_unicode;
      85                 :                 }
      86                 :                 case IS_STRING:
      87                 :                         CHECK_ZVAL_STRING_REL(zvalue);
      88               0 :                         free(Z_STRVAL_P(zvalue));
      89               0 :                         break;
      90                 :                 case IS_UNICODE:
      91         1806134 : dtor_unicode:
      92                 :                         CHECK_ZVAL_UNICODE_REL(zvalue);
      93         1806134 :                         free(Z_USTRVAL_P(zvalue));
      94         1806134 :                         break;
      95                 :                 case IS_ARRAY:
      96                 :                 case IS_CONSTANT_ARRAY:
      97                 :                 case IS_OBJECT:
      98                 :                 case IS_RESOURCE:
      99               0 :                         zend_error(E_CORE_ERROR, "Internal zval's can't be arrays, objects or resources");
     100                 :                         break;
     101                 :                 case IS_LONG:
     102                 :                 case IS_DOUBLE:
     103                 :                 case IS_BOOL:
     104                 :                 case IS_NULL:
     105                 :                 default:
     106                 :                         break;
     107                 :         }
     108        47947746 : }
     109                 : /* }}} */
     110                 : 
     111                 : ZEND_API void zval_add_ref(zval **p) /* {{{ */
     112        10094820 : {
     113        10094820 :         Z_ADDREF_PP(p);
     114        10094820 : }
     115                 : /* }}} */
     116                 : 
     117                 : ZEND_API void _zval_copy_ctor_func(zval *zvalue ZEND_FILE_LINE_DC) /* {{{ */
     118        23146743 : {
     119        23146743 :         switch (Z_TYPE_P(zvalue) & IS_CONSTANT_TYPE_MASK) {
     120                 :                 case IS_RESOURCE: {
     121                 :                                 TSRMLS_FETCH();
     122                 : 
     123            6564 :                                 zend_list_addref(Z_LVAL_P(zvalue));
     124                 :                         }
     125            6564 :                         break;
     126                 :                 case IS_BOOL:
     127                 :                 case IS_LONG:
     128                 :                 case IS_NULL:
     129               0 :                         break;
     130                 :                 case IS_CONSTANT: {
     131              34 :                         goto copy_unicode;
     132                 :                 }
     133                 :                 case IS_STRING:
     134                 :                         CHECK_ZVAL_STRING_REL(zvalue);
     135        13894151 :                         Z_STRVAL_P(zvalue) = (char *) estrndup_rel(Z_STRVAL_P(zvalue), Z_STRLEN_P(zvalue));
     136        13894151 :                         break;
     137                 :                 case IS_UNICODE:
     138         8047439 : copy_unicode:
     139                 :                         CHECK_ZVAL_UNICODE_REL(zvalue);
     140         8047439 :                         Z_USTRVAL_P(zvalue) = eustrndup_rel(Z_USTRVAL_P(zvalue), Z_USTRLEN_P(zvalue));
     141         8047439 :                         break;
     142                 :                 case IS_ARRAY:
     143                 :                 case IS_CONSTANT_ARRAY: {
     144                 :                                 zval *tmp;
     145          981457 :                                 HashTable *original_ht = Z_ARRVAL_P(zvalue);
     146          981457 :                                 HashTable *tmp_ht = NULL;
     147                 :                                 TSRMLS_FETCH();
     148                 : 
     149          981457 :                                 if (Z_ARRVAL_P(zvalue) == &EG(symbol_table)) {
     150            2526 :                                         return; /* do nothing */
     151                 :                                 }
     152          978931 :                                 ALLOC_HASHTABLE_REL(tmp_ht);
     153          978931 :                                 zend_u_hash_init(tmp_ht, zend_hash_num_elements(original_ht), NULL, ZVAL_PTR_DTOR, 0, original_ht->unicode);
     154          978931 :                                 zend_hash_copy(tmp_ht, original_ht, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
     155          978931 :                                 Z_ARRVAL_P(zvalue) = tmp_ht;
     156                 :                         }
     157          978931 :                         break;
     158                 :                 case IS_OBJECT:
     159                 :                         {
     160                 :                                 TSRMLS_FETCH();
     161          217132 :                                 Z_OBJ_HT_P(zvalue)->add_ref(zvalue TSRMLS_CC);
     162                 :                         }
     163                 :                         break;
     164                 :         }
     165                 : }
     166                 : /* }}} */
     167                 : 
     168                 : ZEND_API int zend_print_variable(zval *var) /* {{{ */
     169          197518 : {
     170          197518 :         return zend_print_zval(var, 0);
     171                 : }
     172                 : /* }}} */
     173                 : 
     174                 : #if ZEND_DEBUG
     175                 : ZEND_API void _zval_copy_ctor_wrapper(zval *zvalue) /* {{{ */
     176                 : {
     177                 :         zval_copy_ctor(zvalue);
     178                 : }
     179                 : /* }}} */
     180                 : 
     181                 : ZEND_API void _zval_dtor_wrapper(zval *zvalue) /* {{{ */
     182                 : {
     183                 :         zval_dtor(zvalue);
     184                 : }
     185                 : /* }}} */
     186                 : 
     187                 : ZEND_API void _zval_internal_dtor_wrapper(zval *zvalue) /* {{{ */
     188                 : {
     189                 :         zval_internal_dtor(zvalue);
     190                 : }
     191                 : /* }}} */
     192                 : 
     193                 : ZEND_API void _zval_ptr_dtor_wrapper(zval **zval_ptr) /* {{{ */
     194                 : {
     195                 :         zval_ptr_dtor(zval_ptr);
     196                 : }
     197                 : /* }}} */
     198                 : 
     199                 : ZEND_API void _zval_internal_ptr_dtor_wrapper(zval **zval_ptr) /* {{{ */
     200                 : {
     201                 :         zval_internal_ptr_dtor(zval_ptr);
     202                 : }
     203                 : /* }}} */
     204                 : #endif
     205                 : 
     206                 : /*
     207                 :  * Local variables:
     208                 :  * tab-width: 4
     209                 :  * c-basic-offset: 4
     210                 :  * indent-tabs-mode: t
     211                 :  * End:
     212                 :  */

Generated by: LTP GCOV extension version 1.5

Generated at Mon, 23 Nov 2009 17:39:23 +0000 (36 hours ago)

Copyright © 2005-2009 The PHP Group
All rights reserved.