Lines Matching refs:zobj

61 ZEND_API void rebuild_object_properties(zend_object *zobj) /* {{{ */  in rebuild_object_properties()  argument
63 if (!zobj->properties) { in rebuild_object_properties()
65 zend_class_entry *ce = zobj->ce; in rebuild_object_properties()
67 zobj->properties = zend_new_array(ce->default_properties_count); in rebuild_object_properties()
69 zend_hash_real_init_mixed(zobj->properties); in rebuild_object_properties()
74 if (UNEXPECTED(Z_TYPE_P(OBJ_PROP(zobj, prop_info->offset)) == IS_UNDEF)) { in rebuild_object_properties()
75 HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND; in rebuild_object_properties()
78 _zend_hash_append_ind(zobj->properties, prop_info->name, in rebuild_object_properties()
79 OBJ_PROP(zobj, prop_info->offset)); in rebuild_object_properties()
90 if (UNEXPECTED(Z_TYPE_P(OBJ_PROP(zobj, prop_info->offset)) == IS_UNDEF)) { in rebuild_object_properties()
91 HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND; in rebuild_object_properties()
94 ZVAL_INDIRECT(&zv, OBJ_PROP(zobj, prop_info->offset)); in rebuild_object_properties()
95 zend_hash_add(zobj->properties, prop_info->name, &zv); in rebuild_object_properties()
106 zend_object *zobj; in zend_std_get_properties() local
107 zobj = Z_OBJ_P(object); in zend_std_get_properties()
108 if (!zobj->properties) { in zend_std_get_properties()
109 rebuild_object_properties(zobj); in zend_std_get_properties()
111 return zobj->properties; in zend_std_get_properties()
122 zend_object *zobj = Z_OBJ_P(object); in zend_std_get_gc() local
124 if (zobj->properties) { in zend_std_get_gc()
127 if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1) in zend_std_get_gc()
128 && EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) { in zend_std_get_gc()
129 GC_DELREF(zobj->properties); in zend_std_get_gc()
130 zobj->properties = zend_array_dup(zobj->properties); in zend_std_get_gc()
132 return zobj->properties; in zend_std_get_gc()
134 *table = zobj->properties_table; in zend_std_get_gc()
135 *n = zobj->ce->default_properties_count; in zend_std_get_gc()
181 static void zend_std_call_getter(zend_object *zobj, zend_string *prop_name, zval *retval) /* {{{ */ in zend_std_call_getter() argument
183 zend_class_entry *ce = zobj->ce; in zend_std_call_getter()
200 fci.object = zobj; in zend_std_call_getter()
209 fcic.object = zobj; in zend_std_call_getter()
217 static void zend_std_call_setter(zend_object *zobj, zend_string *prop_name, zval *value) /* {{{ */ in zend_std_call_setter() argument
219 zend_class_entry *ce = zobj->ce; in zend_std_call_setter()
237 fci.object = zobj; in zend_std_call_setter()
246 fcic.object = zobj; in zend_std_call_setter()
255 static void zend_std_call_unsetter(zend_object *zobj, zend_string *prop_name) /* {{{ */ in zend_std_call_unsetter() argument
257 zend_class_entry *ce = zobj->ce; in zend_std_call_unsetter()
273 fci.object = zobj; in zend_std_call_unsetter()
282 fcic.object = zobj; in zend_std_call_unsetter()
291 static void zend_std_call_issetter(zend_object *zobj, zend_string *prop_name, zval *retval) /* {{{ … in zend_std_call_issetter() argument
293 zend_class_entry *ce = zobj->ce; in zend_std_call_issetter()
310 fci.object = zobj; in zend_std_call_issetter()
319 fcic.object = zobj; in zend_std_call_issetter()
520 ZEND_API int zend_check_property_access(zend_object *zobj, zend_string *prop_info_name) /* {{{ */ in zend_check_property_access() argument
534 property_info = zend_get_property_info(zobj->ce, member, 1); in zend_check_property_access()
555 return zend_verify_property_access(property_info, zobj->ce) ? SUCCESS : FAILURE; in zend_check_property_access()
567 ZEND_API uint32_t *zend_get_property_guard(zend_object *zobj, zend_string *member) /* {{{ */ in zend_get_property_guard() argument
573 ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_USE_GUARDS); in zend_get_property_guard()
574 zv = zobj->properties_table + zobj->ce->default_properties_count; in zend_get_property_guard()
617 zend_object *zobj; in zend_std_read_property() local
623 zobj = Z_OBJ_P(object); in zend_std_read_property()
631 …property_offset = zend_get_property_offset(zobj->ce, name, (type == BP_VAR_IS) || (zobj->ce->__get… in zend_std_read_property()
634 retval = OBJ_PROP(zobj, property_offset); in zend_std_read_property()
639 if (EXPECTED(zobj->properties != NULL)) { in zend_std_read_property()
643 if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) { in zend_std_read_property()
644 Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx); in zend_std_read_property()
657 retval = zend_hash_find(zobj->properties, name); in zend_std_read_property()
660 uintptr_t idx = (char*)retval - (char*)zobj->properties->arData; in zend_std_read_property()
672 if ((type == BP_VAR_IS) && zobj->ce->__isset) { in zend_std_read_property()
674 guard = zend_get_property_guard(zobj, name); in zend_std_read_property()
680 GC_ADDREF(zobj); in zend_std_read_property()
684 zend_std_call_issetter(zobj, name, &tmp_result); in zend_std_read_property()
689 OBJ_RELEASE(zobj); in zend_std_read_property()
695 if (zobj->ce->__get && !((*guard) & IN_GET)) { in zend_std_read_property()
698 OBJ_RELEASE(zobj); in zend_std_read_property()
699 } else if (zobj->ce->__get && !((*guard) & IN_GET)) { in zend_std_read_property()
702 } else if (zobj->ce->__get) { in zend_std_read_property()
704 guard = zend_get_property_guard(zobj, name); in zend_std_read_property()
708 GC_ADDREF(zobj); in zend_std_read_property()
711 zend_std_call_getter(zobj, name, rv); in zend_std_read_property()
719 …rect modification of overloaded property %s::$%s has no effect", ZSTR_VAL(zobj->ce->name), ZSTR_VA… in zend_std_read_property()
725 OBJ_RELEASE(zobj); in zend_std_read_property()
735 zend_error(E_NOTICE,"Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name)); in zend_std_read_property()
748 zend_object *zobj; in zend_std_write_property() local
753 zobj = Z_OBJ_P(object); in zend_std_write_property()
756 property_offset = zend_get_property_offset(zobj->ce, name, (zobj->ce->__set != NULL), cache_slot); in zend_std_write_property()
759 variable_ptr = OBJ_PROP(zobj, property_offset); in zend_std_write_property()
764 if (EXPECTED(zobj->properties != NULL)) { in zend_std_write_property()
765 if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) { in zend_std_write_property()
766 if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) { in zend_std_write_property()
767 GC_DELREF(zobj->properties); in zend_std_write_property()
769 zobj->properties = zend_array_dup(zobj->properties); in zend_std_write_property()
771 if ((variable_ptr = zend_hash_find(zobj->properties, name)) != NULL) { in zend_std_write_property()
782 if (zobj->ce->__set) { in zend_std_write_property()
783 uint32_t *guard = zend_get_property_guard(zobj, name); in zend_std_write_property()
786 GC_ADDREF(zobj); in zend_std_write_property()
788 zend_std_call_setter(zobj, name, value); in zend_std_write_property()
790 OBJ_RELEASE(zobj); in zend_std_write_property()
813 ZVAL_COPY_VALUE(OBJ_PROP(zobj, property_offset), value); in zend_std_write_property()
815 if (!zobj->properties) { in zend_std_write_property()
816 rebuild_object_properties(zobj); in zend_std_write_property()
818 zend_hash_add_new(zobj->properties, name, value); in zend_std_write_property()
926 zend_object *zobj; in zend_std_get_property_ptr_ptr() local
931 zobj = Z_OBJ_P(object); in zend_std_get_property_ptr_ptr()
938 property_offset = zend_get_property_offset(zobj->ce, name, (zobj->ce->__get != NULL), cache_slot); in zend_std_get_property_ptr_ptr()
941 retval = OBJ_PROP(zobj, property_offset); in zend_std_get_property_ptr_ptr()
943 if (EXPECTED(!zobj->ce->__get) || in zend_std_get_property_ptr_ptr()
944 UNEXPECTED((*zend_get_property_guard(zobj, name)) & IN_GET)) { in zend_std_get_property_ptr_ptr()
949 zend_error(E_NOTICE, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name)); in zend_std_get_property_ptr_ptr()
957 if (EXPECTED(zobj->properties)) { in zend_std_get_property_ptr_ptr()
958 if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) { in zend_std_get_property_ptr_ptr()
959 if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) { in zend_std_get_property_ptr_ptr()
960 GC_DELREF(zobj->properties); in zend_std_get_property_ptr_ptr()
962 zobj->properties = zend_array_dup(zobj->properties); in zend_std_get_property_ptr_ptr()
964 if (EXPECTED((retval = zend_hash_find(zobj->properties, name)) != NULL)) { in zend_std_get_property_ptr_ptr()
969 if (EXPECTED(!zobj->ce->__get) || in zend_std_get_property_ptr_ptr()
970 UNEXPECTED((*zend_get_property_guard(zobj, name)) & IN_GET)) { in zend_std_get_property_ptr_ptr()
971 if (UNEXPECTED(!zobj->properties)) { in zend_std_get_property_ptr_ptr()
972 rebuild_object_properties(zobj); in zend_std_get_property_ptr_ptr()
974 retval = zend_hash_update(zobj->properties, name, &EG(uninitialized_zval)); in zend_std_get_property_ptr_ptr()
978 zend_error(E_NOTICE, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name)); in zend_std_get_property_ptr_ptr()
990 zend_object *zobj; in zend_std_unset_property() local
994 zobj = Z_OBJ_P(object); in zend_std_unset_property()
997 …property_offset = zend_get_property_offset(zobj->ce, name, (zobj->ce->__unset != NULL), cache_slot… in zend_std_unset_property()
1000 zval *slot = OBJ_PROP(zobj, property_offset); in zend_std_unset_property()
1005 if (zobj->properties) { in zend_std_unset_property()
1006 HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND; in zend_std_unset_property()
1011 && EXPECTED(zobj->properties != NULL)) { in zend_std_unset_property()
1012 if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) { in zend_std_unset_property()
1013 if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) { in zend_std_unset_property()
1014 GC_DELREF(zobj->properties); in zend_std_unset_property()
1016 zobj->properties = zend_array_dup(zobj->properties); in zend_std_unset_property()
1018 if (EXPECTED(zend_hash_del(zobj->properties, name) != FAILURE)) { in zend_std_unset_property()
1026 if (zobj->ce->__unset) { in zend_std_unset_property()
1027 uint32_t *guard = zend_get_property_guard(zobj, name); in zend_std_unset_property()
1031 zend_std_call_unsetter(zobj, name); in zend_std_unset_property()
1196 zend_object *zobj = *obj_ptr; in zend_std_get_method() local
1213 if (UNEXPECTED((func = zend_hash_find(&zobj->ce->function_table, lc_method_name)) == NULL)) { in zend_std_get_method()
1217 if (zobj->ce->__call) { in zend_std_get_method()
1218 return zend_get_user_call_function(zobj->ce, method_name); in zend_std_get_method()
1231 if (fbc->common.scope != scope || zobj->ce != scope) { in zend_std_get_method()
1232 zend_function *updated_fbc = zend_get_parent_private(scope, zobj->ce, lc_method_name); in zend_std_get_method()
1236 if (zobj->ce->__call) { in zend_std_get_method()
1237 fbc = zend_get_user_call_function(zobj->ce, method_name); in zend_std_get_method()
1266 if (zobj->ce->__call) { in zend_std_get_method()
1267 fbc = zend_get_user_call_function(zobj->ce, method_name); in zend_std_get_method()
1462 ZEND_API zend_function *zend_std_get_constructor(zend_object *zobj) /* {{{ */ in zend_std_get_constructor() argument
1464 zend_function *constructor = zobj->ce->constructor; in zend_std_get_constructor()
1591 zend_object *zobj; in zend_std_has_property() local
1597 zobj = Z_OBJ_P(object); in zend_std_has_property()
1600 property_offset = zend_get_property_offset(zobj->ce, name, 1, cache_slot); in zend_std_has_property()
1603 value = OBJ_PROP(zobj, property_offset); in zend_std_has_property()
1608 if (EXPECTED(zobj->properties != NULL)) { in zend_std_has_property()
1612 if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) { in zend_std_has_property()
1613 Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx); in zend_std_has_property()
1626 value = zend_hash_find(zobj->properties, name); in zend_std_has_property()
1629 uintptr_t idx = (char*)value - (char*)zobj->properties->arData; in zend_std_has_property()
1652 if ((has_set_exists != ZEND_PROPERTY_EXISTS) && zobj->ce->__isset) { in zend_std_has_property()
1653 uint32_t *guard = zend_get_property_guard(zobj, name); in zend_std_has_property()
1662 GC_ADDREF(zobj); in zend_std_has_property()
1664 zend_std_call_issetter(zobj, name, &rv); in zend_std_has_property()
1668 if (EXPECTED(!EG(exception)) && zobj->ce->__get && !((*guard) & IN_GET)) { in zend_std_has_property()
1670 zend_std_call_getter(zobj, name, &rv); in zend_std_has_property()
1679 OBJ_RELEASE(zobj); in zend_std_has_property()
1689 ZEND_API zend_string *zend_std_get_class_name(const zend_object *zobj) /* {{{ */ in zend_std_get_class_name() argument
1691 return zend_string_copy(zobj->ce->name); in zend_std_get_class_name()