From 7690887cf6729613cb3de062fe850c435239b127 Mon Sep 17 00:00:00 2001 From: Andi Gutmans Date: Thu, 21 Jun 2001 21:31:33 +0000 Subject: [PATCH] - Use inline instead of macro for PZVAL_LOCK()/PZVAL_UNLOCK() so that it can be debugged. --- Zend/zend_execute_locks.h | 40 ++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/Zend/zend_execute_locks.h b/Zend/zend_execute_locks.h index 0be06b0ac48..da389fb519d 100644 --- a/Zend/zend_execute_locks.h +++ b/Zend/zend_execute_locks.h @@ -1,21 +1,31 @@ #ifndef ZEND_EXECUTE_LOCKS_H #define ZEND_EXECUTE_LOCKS_H -#define PZVAL_LOCK(z) ((z)->refcount++) -#define PZVAL_UNLOCK(z) { ((z)->refcount--); \ - if (!(z)->refcount) { \ - (z)->refcount = 1; \ - (z)->is_ref = 0; \ - if (EG(garbage_ptr) == 4) { \ - zval_ptr_dtor(&EG(garbage)[0]); \ - zval_ptr_dtor(&EG(garbage)[1]); \ - EG(garbage)[0] = EG(garbage)[2]; \ - EG(garbage)[1] = EG(garbage)[3]; \ - EG(garbage_ptr) -= 2; \ - } \ - EG(garbage)[EG(garbage_ptr)++] = (z); \ - } \ - } +#define PZVAL_LOCK(z) zend_pzval_lock_func(z) + +static inline zend_pzval_lock_func(zval *z) +{ + ((z)->refcount++); +} + +#define PZVAL_UNLOCK(z) zend_pzval_unlock_func(z ELS_CC) + +static inline zend_pzval_unlock_func(zval *z ELS_DC) +{ + ((z)->refcount--); + if (!(z)->refcount) { + (z)->refcount = 1; + (z)->is_ref = 0; + if (EG(garbage_ptr) == 4) { + zval_ptr_dtor(&EG(garbage)[0]); + zval_ptr_dtor(&EG(garbage)[1]); + EG(garbage)[0] = EG(garbage)[2]; + EG(garbage)[1] = EG(garbage)[3]; + EG(garbage_ptr) -= 2; + } + EG(garbage)[EG(garbage_ptr)++] = (z); + } +} #define SELECTIVE_PZVAL_LOCK(pzv, pzn) if (!((pzn)->u.EA.type & EXT_TYPE_UNUSED)) { PZVAL_LOCK(pzv); }