diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-04-02 14:34:44 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-04-02 14:34:44 +0400 |
commit | d8099d0468426dbee59f540048376653535270ce (patch) | |
tree | 133021a1fda6a2453efcd9a279e9b0a55c006396 /Zend/zend_variables.c | |
parent | 3b25faa4aa844bce12b1cbb3a3938573965df485 (diff) | |
download | php-git-d8099d0468426dbee59f540048376653535270ce.tar.gz |
Changed data layout to allow more efficient operations
Diffstat (limited to 'Zend/zend_variables.c')
-rw-r--r-- | Zend/zend_variables.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/Zend/zend_variables.c b/Zend/zend_variables.c index e9a0db8654..0a2059d4bc 100644 --- a/Zend/zend_variables.c +++ b/Zend/zend_variables.c @@ -30,7 +30,7 @@ ZEND_API void _zval_dtor_func(zend_refcounted *p ZEND_FILE_LINE_DC) { //??? switch (Z_TYPE_P(zvalue) & IS_CONSTANT_TYPE_MASK) { - switch (p->u.v.type) { + switch (GC_TYPE(p)) { case IS_STRING: case IS_CONSTANT: { zend_string *str = (zend_string*)p; @@ -45,7 +45,7 @@ ZEND_API void _zval_dtor_func(zend_refcounted *p ZEND_FILE_LINE_DC) if (arr != &EG(symbol_table)) { /* break possible cycles */ - arr->gc.u.v.type = IS_NULL; + GC_TYPE(arr) = IS_NULL; zend_hash_destroy(&arr->ht); goto gc_exit; } @@ -69,7 +69,7 @@ ZEND_API void _zval_dtor_func(zend_refcounted *p ZEND_FILE_LINE_DC) zend_resource *res = (zend_resource*)p; TSRMLS_FETCH(); - if (--res->gc.refcount == 0) { + if (--GC_REFCOUNT(res) == 0) { /* destroy resource */ zend_list_delete(res); } @@ -77,7 +77,7 @@ ZEND_API void _zval_dtor_func(zend_refcounted *p ZEND_FILE_LINE_DC) } case IS_REFERENCE: { zend_reference *ref = (zend_reference*)p; - if (--ref->gc.refcount == 0) { + if (--GC_REFCOUNT(ref) == 0) { zval_ptr_dtor(&ref->val); goto gc_exit; } @@ -96,7 +96,7 @@ exit: ZEND_API void _zval_dtor_func_for_ptr(zend_refcounted *p ZEND_FILE_LINE_DC) { //??? switch (Z_TYPE_P(zvalue) & IS_CONSTANT_TYPE_MASK) { - switch (p->u.v.type) { + switch (GC_TYPE(p)) { case IS_STRING: case IS_CONSTANT: { zend_string *str = (zend_string*)p; @@ -111,7 +111,7 @@ ZEND_API void _zval_dtor_func_for_ptr(zend_refcounted *p ZEND_FILE_LINE_DC) if (arr != &EG(symbol_table)) { /* break possible cycles */ - arr->gc.u.v.type = IS_NULL; + GC_TYPE(arr) = IS_NULL; zend_hash_destroy(&arr->ht); goto gc_exit; } @@ -256,8 +256,8 @@ ZEND_API void _zval_copy_ctor_func(zval *zvalue ZEND_FILE_LINE_DC) case IS_CONSTANT_AST: { zend_ast_ref *ast = emalloc(sizeof(zend_ast_ref)); - ast->gc.refcount = 1; - ast->gc.u.v.type = IS_CONSTANT_AST; + GC_REFCOUNT(ast) = 1; + GC_TYPE_INFO(ast) = IS_CONSTANT_AST; ast->ast = zend_ast_copy(Z_ASTVAL_P(zvalue)); Z_AST_P(zvalue) = ast; } |