summaryrefslogtreecommitdiff
path: root/Zend/zend_objects_API.c
diff options
context:
space:
mode:
authorRasmus Lerdorf <rasmus@php.net>2014-10-16 21:28:40 -0700
committerRasmus Lerdorf <rasmus@php.net>2014-10-16 21:28:40 -0700
commita9d6556971a435f71eabf142d8fb814382f3b6ac (patch)
tree4fecce88bbc1bc3259856eb0314d780184de85eb /Zend/zend_objects_API.c
parent86674b5837bffe4486714f9661620020ee498f3b (diff)
parent176b8d7ca3aef3a172d8e429627c98e0328d02d8 (diff)
downloadphp-git-a9d6556971a435f71eabf142d8fb814382f3b6ac.tar.gz
Merge branch 'master' of git.php.net:php-src
* 'master' of git.php.net:php-src: (1132 commits) Micro optimizations for isset/empty Micro optimization for zend_hash_next_index_insert_new() Fix array_keys() on $GLOBALS Fix procedural finfo calls in methods Fix allocator for 64bit zend_long with 32bit long Use intptr_t for zend_intptr_t typedef Fix format strings in zend_alloc Drop zend_long64 in favor of int64_t Removed deprecated fields NEWS cleanup NEWS removing the NEWS entry as we had to revert this fix for now Revert "Merge branch 'PHP-5.5' into PHP-5.6" Revert "fix TS build" Revert "Merge branch 'PHP-5.4' into PHP-5.5" Revert "Bug #67965: Fix blocking behavior in non-blocking crypto streams" Revert "Bug #41631: Fix regression from first attempt (6569db8)" NEWS Fixed Bug #65171 imagescale() fails Fixed bug #68234 ...
Diffstat (limited to 'Zend/zend_objects_API.c')
-rw-r--r--Zend/zend_objects_API.c108
1 files changed, 6 insertions, 102 deletions
diff --git a/Zend/zend_objects_API.c b/Zend/zend_objects_API.c
index c1b2f3ba6e..04dd82b6a0 100644
--- a/Zend/zend_objects_API.c
+++ b/Zend/zend_objects_API.c
@@ -25,7 +25,7 @@
#include "zend_API.h"
#include "zend_objects_API.h"
-ZEND_API void zend_objects_store_init(zend_objects_store *objects, zend_uint init_size)
+ZEND_API void zend_objects_store_init(zend_objects_store *objects, uint32_t init_size)
{
objects->object_buckets = (zend_object **) emalloc(init_size * sizeof(zend_object*));
objects->top = 1; /* Skip 0 so that handles are true */
@@ -42,7 +42,7 @@ ZEND_API void zend_objects_store_destroy(zend_objects_store *objects)
ZEND_API void zend_objects_store_call_destructors(zend_objects_store *objects TSRMLS_DC)
{
- zend_uint i;
+ uint32_t i;
for (i = 1; i < objects->top ; i++) {
zend_object *obj = objects->object_buckets[i];
@@ -60,7 +60,7 @@ ZEND_API void zend_objects_store_call_destructors(zend_objects_store *objects TS
ZEND_API void zend_objects_store_mark_destructed(zend_objects_store *objects TSRMLS_DC)
{
- zend_uint i;
+ uint32_t i;
if (!objects->object_buckets) {
return;
@@ -76,7 +76,7 @@ ZEND_API void zend_objects_store_mark_destructed(zend_objects_store *objects TSR
ZEND_API void zend_objects_store_free_object_storage(zend_objects_store *objects TSRMLS_DC)
{
- zend_uint i;
+ uint32_t i;
/* Free object properties but don't free object their selves */
for (i = objects->top - 1; i > 0 ; i--) {
@@ -134,7 +134,7 @@ ZEND_API void zend_objects_store_put(zend_object *object TSRMLS_DC)
ZEND_API void zend_objects_store_free(zend_object *object TSRMLS_DC) /* {{{ */
{
- zend_uint handle = object->handle;
+ uint32_t handle = object->handle;
void *ptr = ((char*)object) - object->handlers->offset;
GC_REMOVE_FROM_BUFFER(object);
@@ -169,7 +169,7 @@ ZEND_API void zend_objects_store_del(zend_object *object TSRMLS_DC) /* {{{ */
}
if (GC_REFCOUNT(object) == 0) {
- zend_uint handle = object->handle;
+ uint32_t handle = object->handle;
void *ptr;
EG(objects_store).object_buckets[handle] = SET_OBJ_INVALID(object);
@@ -219,107 +219,11 @@ ZEND_API void zend_object_store_ctor_failed(zend_object *obj TSRMLS_DC)
GC_FLAGS(obj) |= IS_OBJ_DESTRUCTOR_CALLED;
}
-/* Proxy objects workings */
-typedef struct _zend_proxy_object {
- zend_object std;
- zval object;
- zval property;
-} zend_proxy_object;
-
-static zend_object_handlers zend_object_proxy_handlers;
-
-ZEND_API void zend_objects_proxy_destroy(zend_object *object TSRMLS_DC)
-{
-}
-
-ZEND_API void zend_objects_proxy_free_storage(zend_proxy_object *object TSRMLS_DC)
-{
- zval_ptr_dtor(&object->object);
- zval_ptr_dtor(&object->property);
- efree(object);
-}
-
-ZEND_API void zend_objects_proxy_clone(zend_proxy_object *object, zend_proxy_object **object_clone TSRMLS_DC)
-{
- *object_clone = emalloc(sizeof(zend_proxy_object));
- (*object_clone)->object = object->object;
- (*object_clone)->property = object->property;
- Z_ADDREF_P(&(*object_clone)->property);
- Z_ADDREF_P(&(*object_clone)->object);
-}
-
-ZEND_API zend_object *zend_object_create_proxy(zval *object, zval *member TSRMLS_DC)
-{
- zend_proxy_object *obj = emalloc(sizeof(zend_proxy_object));
-
- GC_REFCOUNT(obj) = 1;
- GC_TYPE_INFO(obj) = IS_OBJECT;
- obj->std.ce = NULL;
- obj->std.properties = NULL;
- obj->std.guards = NULL;
- obj->std.handlers = &zend_object_proxy_handlers;
-
- ZVAL_COPY(&obj->object, object);
- ZVAL_DUP(&obj->property, member);
-
- return (zend_object*)obj;
-}
-
-ZEND_API void zend_object_proxy_set(zval *property, zval *value TSRMLS_DC)
-{
- zend_proxy_object *probj = (zend_proxy_object*)Z_OBJ_P(property);
-
- if (Z_OBJ_HT(probj->object) && Z_OBJ_HT(probj->object)->write_property) {
- Z_OBJ_HT(probj->object)->write_property(&probj->object, &probj->property, value, NULL TSRMLS_CC);
- } else {
- zend_error(E_WARNING, "Cannot write property of object - no write handler defined");
- }
-}
-
-ZEND_API zval* zend_object_proxy_get(zval *property, zval *rv TSRMLS_DC)
-{
- zend_proxy_object *probj = (zend_proxy_object*)Z_OBJ_P(property);
-
- if (Z_OBJ_HT(probj->object) && Z_OBJ_HT(probj->object)->read_property) {
- return Z_OBJ_HT(probj->object)->read_property(&probj->object, &probj->property, BP_VAR_R, NULL, rv TSRMLS_CC);
- } else {
- zend_error(E_WARNING, "Cannot read property of object - no read handler defined");
- }
-
- return NULL;
-}
-
ZEND_API zend_object_handlers *zend_get_std_object_handlers(void)
{
return &std_object_handlers;
}
-static zend_object_handlers zend_object_proxy_handlers = {
- ZEND_OBJECTS_STORE_HANDLERS,
-
- NULL, /* read_property */
- NULL, /* write_property */
- NULL, /* read dimension */
- NULL, /* write_dimension */
- NULL, /* get_property_ptr_ptr */
- zend_object_proxy_get, /* get */
- zend_object_proxy_set, /* set */
- NULL, /* has_property */
- NULL, /* unset_property */
- NULL, /* has_dimension */
- NULL, /* unset_dimension */
- NULL, /* get_properties */
- NULL, /* get_method */
- NULL, /* call_method */
- NULL, /* get_constructor */
- NULL, /* get_class_entry */
- NULL, /* get_class_name */
- NULL, /* compare_objects */
- NULL, /* cast_object */
- NULL, /* count_elements */
-};
-
-
/*
* Local variables:
* tab-width: 4