helly           Wed Aug 20 20:10:50 2003 EDT

  Modified files:              
    /spl        spl_array.c spl_directory.c spl_engine.c spl_engine.h 
                spl_foreach.c 
  Log:
  Extensions that do opcode hooking must provide the removed functions/macros 
  themselves now.
  
  
Index: spl/spl_array.c
diff -u spl/spl_array.c:1.18 spl/spl_array.c:1.19
--- spl/spl_array.c:1.18        Sat Aug  9 15:24:11 2003
+++ spl/spl_array.c     Wed Aug 20 20:10:49 2003
@@ -24,7 +24,6 @@
 #include "php_ini.h"
 #include "ext/standard/info.h"
 #include "zend_compile.h"
-#include "zend_execute_locks.h"
 
 #include "php_spl.h"
 #include "spl_functions.h"
@@ -101,7 +100,7 @@
        if (!spl_fetch_dimension_address(&EX(opline)->result, &EX(opline)->op1, 
&EX(opline)->op2, EX(Ts), BP_VAR_R TSRMLS_CC))
        {
                if (EX(opline)->extended_value == ZEND_FETCH_ADD_LOCK) {
-                       PZVAL_LOCK(*EX_T(EX(opline)->op1.u.var).var.ptr_ptr);
+                       spl_pzval_lock_func(*EX_T(EX(opline)->op1.u.var).var.ptr_ptr);
                }
                spl_unlock_zval_ptr_ptr(&EX(opline)->op1, EX(Ts) TSRMLS_CC);
 
Index: spl/spl_directory.c
diff -u spl/spl_directory.c:1.6 spl/spl_directory.c:1.7
--- spl/spl_directory.c:1.6     Sun Aug 10 11:05:14 2003
+++ spl/spl_directory.c Wed Aug 20 20:10:49 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: spl_directory.c,v 1.6 2003/08/10 15:05:14 helly Exp $ */
+/* $Id: spl_directory.c,v 1.7 2003/08/21 00:10:49 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -26,7 +26,6 @@
 #include "php_ini.h"
 #include "ext/standard/info.h"
 #include "zend_compile.h"
-#include "zend_execute_locks.h"
 #include "zend_default_classes.h"
 
 #include "php_spl.h"
Index: spl/spl_engine.c
diff -u spl/spl_engine.c:1.15 spl/spl_engine.c:1.16
--- spl/spl_engine.c:1.15       Sat Aug 16 16:27:29 2003
+++ spl/spl_engine.c    Wed Aug 20 20:10:49 2003
@@ -24,7 +24,6 @@
 #include "php_ini.h"
 #include "ext/standard/info.h"
 #include "zend_compile.h"
-#include "zend_execute_locks.h"
 
 #include "php_spl.h"
 #include "spl_functions.h"
@@ -72,9 +71,9 @@
 {
        if (node->op_type==IS_VAR) {
                if (T(node->u.var).var.ptr_ptr) {
-                       PZVAL_UNLOCK(*T(node->u.var).var.ptr_ptr);
+                       spl_pzval_unlock_func(*T(node->u.var).var.ptr_ptr TSRMLS_CC);
                } else if (T(node->u.var).EA.type==IS_STRING_OFFSET) {
-                       PZVAL_UNLOCK(T(node->u.var).EA.data.str_offset.str);
+                       spl_pzval_unlock_func(T(node->u.var).EA.data.str_offset.str 
TSRMLS_CC);
                }
        }
 }
@@ -93,7 +92,7 @@
                        break;
                case IS_VAR:
                        if (T(node->u.var).var.ptr) {
-                               PZVAL_UNLOCK(T(node->u.var).var.ptr);
+                               spl_pzval_unlock_func(T(node->u.var).var.ptr 
TSRMLS_CC);
                                *should_free = 0;
                                return T(node->u.var).var.ptr;
                        } else {
@@ -116,7 +115,7 @@
                                                                
T->tmp_var.value.str.val = estrndup(&c, 1);
                                                                
T->tmp_var.value.str.len = 1;
                                                        }
-                                                       PZVAL_UNLOCK(str);
+                                                       spl_pzval_unlock_func(str 
TSRMLS_CC);
                                                        T->tmp_var.refcount=1;
                                                        T->tmp_var.is_ref=1;
                                                        T->tmp_var.type = IS_STRING;
Index: spl/spl_engine.h
diff -u spl/spl_engine.h:1.12 spl/spl_engine.h:1.13
--- spl/spl_engine.h:1.12       Sat Aug 16 16:27:29 2003
+++ spl/spl_engine.h    Wed Aug 20 20:10:49 2003
@@ -23,7 +23,6 @@
 #include "php_spl.h"
 
 #include "zend_compile.h"
-#include "zend_execute_locks.h"
 
 #undef EX
 #define EX(element) execute_data->element
@@ -75,6 +74,26 @@
 } spl_is_a;
 
 spl_is_a spl_implements(zend_class_entry *ce);
+
+/* Use this only insode OPCODE-Hooks */
+static inline void spl_pzval_unlock_func(zval *z TSRMLS_DC)
+{
+       z->refcount--;
+       if (!z->refcount) {
+               z->refcount = 1;
+               z->is_ref = 0;
+               EG(garbage)[EG(garbage_ptr)++] = z;
+       }
+}
+
+/* Use this only insode OPCODE-Hooks */
+static inline void spl_pzval_lock_func(zval *z)
+{
+       z->refcount++;
+}
+
+/* Use this only insode OPCODE-Hooks */
+#define SELECTIVE_PZVAL_LOCK(pzv, pzn)         if (!((pzn)->u.EA.type & 
EXT_TYPE_UNUSED)) { spl_pzval_lock_func(pzv); }
 
 #endif /* SPL_ENGINE_H */
 
Index: spl/spl_foreach.c
diff -u spl/spl_foreach.c:1.19 spl/spl_foreach.c:1.20
--- spl/spl_foreach.c:1.19      Sat Aug 16 16:27:29 2003
+++ spl/spl_foreach.c   Wed Aug 20 20:10:49 2003
@@ -24,7 +24,6 @@
 #include "php_ini.h"
 #include "ext/standard/info.h"
 #include "zend_compile.h"
-#include "zend_execute_locks.h"
 
 #include "php_spl.h"
 #include "spl_functions.h"
@@ -77,7 +76,7 @@
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Objects created 
by %s::new_iterator() must implement spl_forward", obj_ce->name);
                        ZEND_EXECUTE_HOOK_ORIGINAL(ZEND_FE_RESET);
                }
-               PZVAL_LOCK(retval);
+               spl_pzval_lock_func(retval);
        } else if (is_a & SPL_IS_A_FORWARD) {
                spl_unlock_zval_ptr_ptr(&EX(opline)->op1, EX(Ts) TSRMLS_CC);
                retval = *obj;
@@ -252,7 +251,7 @@
                FREE_ZVAL(tmp);
 
                spl_unlock_zval_ptr_ptr(&EX(opline)->op1, EX(Ts) TSRMLS_CC);
-               PZVAL_LOCK(*obj);
+               spl_pzval_lock_func(*obj);
                
                SET_UNUSED(*op2);
        }



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to