#define ZEND_CTOR_CALL 1<<1
+#define AI_USE_PTR(ai) \
+ if ((ai).ptr_ptr) { \
+ (ai).ptr = *((ai).ptr_ptr); \
+ (ai).ptr_ptr = &((ai).ptr); \
+ } else { \
+ (ai).ptr = NULL; \
+ }
+
#define PZVAL_IS_REF(z) ((z)->EA.is_ref)
#define PZVAL_IS_LOCKED(z) ((z)->EA.locks>0)
+#if 0
#define PZVAL_LOCK(z) (z)->EA.locks++
#define PZVAL_UNLOCK(z) (z)->EA.locks--
#define SELECTIVE_PZVAL_LOCK(pzv, pzn) if (!((pzn)->u.EA.type & EXT_TYPE_UNUSED)) { PZVAL_LOCK(pzv); }
-
+#else
+#define PZVAL_LOCK(z) ((z)->refcount++)
+#define PZVAL_UNLOCK(z) ((z)->refcount--)
+#define SELECTIVE_PZVAL_LOCK(pzv, pzn) if (!((pzn)->u.EA.type & EXT_TYPE_UNUSED)) { PZVAL_LOCK(pzv); }
+#endif
#endif /* _COMPILE_H */
# include <alloca.h>
#endif
-#define AI_USE_PTR(ai) \
- if ((ai).ptr_ptr) { \
- (ai).ptr = *((ai).ptr_ptr); \
- (ai).ptr_ptr = &((ai).ptr); \
- } else { \
- (ai).ptr = NULL; \
- }
-
#define get_zval_ptr(node, Ts, should_free, type) _get_zval_ptr(node, Ts, should_free ELS_CC)
#define get_zval_ptr_ptr(node, Ts, type) _get_zval_ptr_ptr(node, Ts ELS_CC)
if (variable_ptr->refcount==0) {
switch (type) {
case IS_VAR:
+ /*
if (PZVAL_IS_LOCKED(value)) {
zval *orig_value = value;
value->EA.locks = 0;
zval_copy_ctor(value);
}
+ */
/* break missing intentionally */
case IS_CONST:
if (variable_ptr==value) {
} else { /* we need to split */
switch (type) {
case IS_VAR:
+ /*
if (PZVAL_IS_LOCKED(value)) {
zval *orig_value = value;
value->EA.locks = 0;
zval_copy_ctor(value);
}
+ */
/* break missing intentionally */
case IS_CONST:
if (PZVAL_IS_REF(value)) {
#include "zend_extensions.h"
-#define AI_USE_PTR(ai) \
- if ((ai).ptr_ptr) { \
- (ai).ptr = *((ai).ptr_ptr); \
- (ai).ptr_ptr = &((ai).ptr); \
- } else { \
- (ai).ptr = NULL; \
- }
-
ZEND_API void (*zend_execute)(zend_op_array *op_array ELS_DC);