You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

22 lines
761 B

  1. #ifndef _ZEND_EXECUTE_LOCKS_H
  2. #define _ZEND_EXECUTE_LOCKS_H
  3. #define PZVAL_LOCK(z) ((z)->refcount++)
  4. #define PZVAL_UNLOCK(z) { ((z)->refcount--); \
  5. if (!(z)->refcount) { \
  6. (z)->refcount = 1; \
  7. (z)->is_ref = 0; \
  8. EG(garbage)[EG(garbage_ptr)++] = (z); \
  9. if (EG(garbage_ptr) == 4) { \
  10. zval_ptr_dtor(&EG(garbage)[0]); \
  11. zval_ptr_dtor(&EG(garbage)[1]); \
  12. EG(garbage)[0] = EG(garbage)[2]; \
  13. EG(garbage)[1] = EG(garbage)[3]; \
  14. EG(garbage_ptr) -= 2; \
  15. } \
  16. } \
  17. }
  18. #define SELECTIVE_PZVAL_LOCK(pzv, pzn) if (!((pzn)->u.EA.type & EXT_TYPE_UNUSED)) { PZVAL_LOCK(pzv); }
  19. #endif /* _ZEND_EXECUTE_LOCKS_H */