diff options
author | Anatol Belski <ab@php.net> | 2014-10-01 22:05:51 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2014-10-01 22:05:51 +0200 |
commit | f5292fbe51faee145a973843d840a611a9da24bc (patch) | |
tree | b65ab1871eedf23d713290e2dfb5297af7df7eb6 /Zend/zend_objects_API.h | |
parent | 76081df168829a5cc0409fac47c217d4927ec6f6 (diff) | |
parent | c4419e7a5bcbe30f568b17164ae30799aaaa5aba (diff) | |
download | php-git-f5292fbe51faee145a973843d840a611a9da24bc.tar.gz |
Merge remote-tracking branch 'origin/master' into native-tls
* origin/master:
Expose zend_throw_exception_internal()
Use inline finction for OBJ_RELEASE() macro
update NEWS about the release date of 5.6.1
only no_NO.ISO-8859-1 have to be ignored
remove bogus locale use from test
use $PHP_LIBDIR instread of "lib" in skel example
Removed zend_execute_data->prev_nested_call. Reuse prev_execute_data instead.
Diffstat (limited to 'Zend/zend_objects_API.h')
-rw-r--r-- | Zend/zend_objects_API.h | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/Zend/zend_objects_API.h b/Zend/zend_objects_API.h index df22a26cc9..baa1a28bb4 100644 --- a/Zend/zend_objects_API.h +++ b/Zend/zend_objects_API.h @@ -37,14 +37,7 @@ } while (0) -#define OBJ_RELEASE(obj) do { \ - zend_object *_obj = (obj); \ - if (--GC_REFCOUNT(_obj) == 0) { \ - zend_objects_store_del(_obj TSRMLS_CC); \ - } else { \ - gc_possible_root(&_obj->gc TSRMLS_CC); \ - } \ - } while (0) +#define OBJ_RELEASE(obj) zend_object_release(obj TSRMLS_CC) typedef struct _zend_objects_store { zend_object **object_buckets; @@ -78,6 +71,15 @@ ZEND_API zend_object *zend_object_create_proxy(zval *object, zval *member TSRMLS ZEND_API zend_object_handlers *zend_get_std_object_handlers(void); END_EXTERN_C() +static zend_always_inline void zend_object_release(zend_object *obj TSRMLS_CC) +{ + if (--GC_REFCOUNT(obj) == 0) { + zend_objects_store_del(obj TSRMLS_CC); + } else if (UNEXPECTED(!GC_INFO(obj))) { + gc_possible_root(&obj->gc TSRMLS_CC); + } +} + #endif /* ZEND_OBJECTS_H */ /* |