diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-10-01 16:35:56 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-10-01 16:35:56 +0400 |
commit | 8857af8494db84242d666c0baf11ca6f08aab3e3 (patch) | |
tree | bca308db29ac4d85a0bc98e9823998b782f5ab7f /Zend/zend_objects_API.h | |
parent | d1cfc0b899370f500dcc1501f68750ef9a27cbfc (diff) | |
download | php-git-8857af8494db84242d666c0baf11ca6f08aab3e3.tar.gz |
Use inline finction for OBJ_RELEASE() macro
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 */ /* |