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()
68 zobj->properties = zend_new_array(ce->default_properties_count); in rebuild_object_properties()
70 zend_hash_real_init_mixed(zobj->properties); in rebuild_object_properties()
78 if (UNEXPECTED(Z_TYPE_P(OBJ_PROP(zobj, prop_info->offset)) == IS_UNDEF)) { in rebuild_object_properties()
79 HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND; in rebuild_object_properties()
82 _zend_hash_append_ind(zobj->properties, prop_info->name, in rebuild_object_properties()
83 OBJ_PROP(zobj, prop_info->offset)); in rebuild_object_properties()
90 ZEND_API HashTable *zend_std_build_object_properties_array(zend_object *zobj) /* {{{ */ in zend_std_build_object_properties_array() argument
93 zend_class_entry *ce = zobj->ce; in zend_std_build_object_properties_array()
98 ZEND_ASSERT(!zobj->properties); in zend_std_build_object_properties_array()
109 prop = OBJ_PROP(zobj, prop_info->offset); in zend_std_build_object_properties_array()
126 ZEND_API HashTable *zend_std_get_properties(zend_object *zobj) /* {{{ */ in zend_std_get_properties() argument
128 if (!zobj->properties) { in zend_std_get_properties()
129 rebuild_object_properties(zobj); in zend_std_get_properties()
131 return zobj->properties; in zend_std_get_properties()
135 ZEND_API HashTable *zend_std_get_gc(zend_object *zobj, zval **table, int *n) /* {{{ */ in zend_std_get_gc() argument
137 if (zobj->handlers->get_properties != zend_std_get_properties) { in zend_std_get_gc()
140 return zobj->handlers->get_properties(zobj); in zend_std_get_gc()
142 if (zobj->properties) { in zend_std_get_gc()
145 return zobj->properties; in zend_std_get_gc()
147 *table = zobj->properties_table; in zend_std_get_gc()
148 *n = zobj->ce->default_properties_count; in zend_std_get_gc()
192 static void zend_std_call_getter(zend_object *zobj, zend_string *prop_name, zval *retval) /* {{{ */ in zend_std_call_getter() argument
196 zend_call_known_instance_method_with_1_params(zobj->ce->__get, zobj, retval, &member); in zend_std_call_getter()
200 static void zend_std_call_setter(zend_object *zobj, zend_string *prop_name, zval *value) /* {{{ */ in zend_std_call_setter() argument
205 zend_call_known_instance_method(zobj->ce->__set, zobj, NULL, 2, args); in zend_std_call_setter()
209 static void zend_std_call_unsetter(zend_object *zobj, zend_string *prop_name) /* {{{ */ in zend_std_call_unsetter() argument
213 zend_call_known_instance_method_with_1_params(zobj->ce->__unset, zobj, NULL, &member); in zend_std_call_unsetter()
217 static void zend_std_call_issetter(zend_object *zobj, zend_string *prop_name, zval *retval) /* {{{ … in zend_std_call_issetter() argument
221 zend_call_known_instance_method_with_1_params(zobj->ce->__isset, zobj, retval, &member); in zend_std_call_issetter()
491 ZEND_API zend_result zend_check_property_access(const zend_object *zobj, zend_string *prop_info_nam… in zend_check_property_access() argument
506 property_info = zend_get_property_info(zobj->ce, member, 1); in zend_check_property_access()
525 property_info = zend_get_property_info(zobj->ce, prop_info_name, 1); in zend_check_property_access()
545 static zend_always_inline zval *zend_get_guard_value(zend_object *zobj) in zend_get_guard_value() argument
547 return zobj->properties_table + zobj->ce->default_properties_count; in zend_get_guard_value()
550 ZEND_API uint32_t *zend_get_property_guard(zend_object *zobj, zend_string *member) /* {{{ */ in zend_get_property_guard() argument
557 ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_USE_GUARDS); in zend_get_property_guard()
558 zv = zend_get_guard_value(zobj); in zend_get_property_guard()
598 ZEND_API uint32_t *zend_get_recursion_guard(zend_object *zobj) in zend_get_recursion_guard() argument
600 if (!(zobj->ce->ce_flags & ZEND_ACC_USE_GUARDS)) { in zend_get_recursion_guard()
603 zval *zv = zend_get_guard_value(zobj); in zend_get_recursion_guard()
607 ZEND_API zval *zend_std_read_property(zend_object *zobj, zend_string *name, int type, void **cache_… in zend_std_read_property() argument
616 fprintf(stderr, "Read object #%d property: %s\n", zobj->handle, ZSTR_VAL(name)); in zend_std_read_property()
620 …property_offset = zend_get_property_offset(zobj->ce, name, (type == BP_VAR_IS) || (zobj->ce->__get… in zend_std_read_property()
623 retval = OBJ_PROP(zobj, property_offset); in zend_std_read_property()
658 if (EXPECTED(zobj->properties != NULL)) { in zend_std_read_property()
662 if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) { in zend_std_read_property()
663 Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx); in zend_std_read_property()
675 retval = zend_hash_find(zobj->properties, name); in zend_std_read_property()
678 uintptr_t idx = (char*)retval - (char*)zobj->properties->arData; in zend_std_read_property()
690 if ((type == BP_VAR_IS) && zobj->ce->__isset) { in zend_std_read_property()
692 guard = zend_get_property_guard(zobj, name); in zend_std_read_property()
698 GC_ADDREF(zobj); in zend_std_read_property()
702 zend_std_call_issetter(zobj, name, &tmp_result); in zend_std_read_property()
707 OBJ_RELEASE(zobj); in zend_std_read_property()
713 if (zobj->ce->__get && !((*guard) & IN_GET)) { in zend_std_read_property()
716 OBJ_RELEASE(zobj); in zend_std_read_property()
717 } else if (zobj->ce->__get && !((*guard) & IN_GET)) { in zend_std_read_property()
720 } else if (zobj->ce->__get) { in zend_std_read_property()
722 guard = zend_get_property_guard(zobj, name); in zend_std_read_property()
726 GC_ADDREF(zobj); in zend_std_read_property()
729 zend_std_call_getter(zobj, name, rv); in zend_std_read_property()
737 …rect modification of overloaded property %s::$%s has no effect", ZSTR_VAL(zobj->ce->name), ZSTR_VA… in zend_std_read_property()
745 …zend_verify_prop_assignable_by_ref_ex(prop_info, retval, (zobj->ce->__get->common.fn_flags & ZEND_… in zend_std_read_property()
748 OBJ_RELEASE(zobj); in zend_std_read_property()
752 zend_get_property_offset(zobj->ce, name, 0, NULL, &prop_info); in zend_std_read_property()
766 zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name)); in zend_std_read_property()
815 ZEND_API zval *zend_std_write_property(zend_object *zobj, zend_string *name, zval *value, void **ca… in zend_std_write_property() argument
822 …property_offset = zend_get_property_offset(zobj->ce, name, (zobj->ce->__set != NULL), cache_slot, … in zend_std_write_property()
825 variable_ptr = OBJ_PROP(zobj, property_offset); in zend_std_write_property()
839 GC_ADDREF(zobj); in zend_std_write_property()
841 if (UNEXPECTED(GC_DELREF(zobj) == 0)) { in zend_std_write_property()
843 zend_objects_store_del(zobj); in zend_std_write_property()
888 if (EXPECTED(zobj->properties != NULL)) { in zend_std_write_property()
889 if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) { in zend_std_write_property()
890 if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) { in zend_std_write_property()
891 GC_DELREF(zobj->properties); in zend_std_write_property()
893 zobj->properties = zend_array_dup(zobj->properties); in zend_std_write_property()
895 if ((variable_ptr = zend_hash_find(zobj->properties, name)) != NULL) { in zend_std_write_property()
906 if (zobj->ce->__set) { in zend_std_write_property()
907 uint32_t *guard = zend_get_property_guard(zobj, name); in zend_std_write_property()
910 GC_ADDREF(zobj); in zend_std_write_property()
912 zend_std_call_setter(zobj, name, value); in zend_std_write_property()
914 OBJ_RELEASE(zobj); in zend_std_write_property()
920 zend_wrong_offset(zobj->ce, name); in zend_std_write_property()
929 variable_ptr = OBJ_PROP(zobj, property_offset); in zend_std_write_property()
934 && !verify_readonly_initialization_access(prop_info, zobj->ce, name, "initialize"))) { in zend_std_write_property()
942 GC_ADDREF(zobj); in zend_std_write_property()
944 if (UNEXPECTED(GC_DELREF(zobj) == 0)) { in zend_std_write_property()
946 zend_objects_store_del(zobj); in zend_std_write_property()
962 if (UNEXPECTED(zobj->ce->ce_flags & ZEND_ACC_NO_DYNAMIC_PROPERTIES)) { in zend_std_write_property()
963 zend_forbidden_dynamic_property(zobj->ce, name); in zend_std_write_property()
967 if (UNEXPECTED(!(zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES))) { in zend_std_write_property()
968 if (UNEXPECTED(!zend_deprecated_dynamic_property(zobj, name))) { in zend_std_write_property()
975 if (!zobj->properties) { in zend_std_write_property()
976 rebuild_object_properties(zobj); in zend_std_write_property()
978 variable_ptr = zend_hash_add_new(zobj->properties, name, value); in zend_std_write_property()
1094 ZEND_API zval *zend_std_get_property_ptr_ptr(zend_object *zobj, zend_string *name, int type, void *… in zend_std_get_property_ptr_ptr() argument
1101 fprintf(stderr, "Ptr object #%d property: %s\n", zobj->handle, ZSTR_VAL(name)); in zend_std_get_property_ptr_ptr()
1104 …property_offset = zend_get_property_offset(zobj->ce, name, (zobj->ce->__get != NULL), cache_slot, … in zend_std_get_property_ptr_ptr()
1107 retval = OBJ_PROP(zobj, property_offset); in zend_std_get_property_ptr_ptr()
1109 if (EXPECTED(!zobj->ce->__get) || in zend_std_get_property_ptr_ptr()
1110 UNEXPECTED((*zend_get_property_guard(zobj, name)) & IN_GET) || in zend_std_get_property_ptr_ptr()
1120 … zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name)); in zend_std_get_property_ptr_ptr()
1141 if (EXPECTED(zobj->properties)) { in zend_std_get_property_ptr_ptr()
1142 if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) { in zend_std_get_property_ptr_ptr()
1143 if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) { in zend_std_get_property_ptr_ptr()
1144 GC_DELREF(zobj->properties); in zend_std_get_property_ptr_ptr()
1146 zobj->properties = zend_array_dup(zobj->properties); in zend_std_get_property_ptr_ptr()
1148 if (EXPECTED((retval = zend_hash_find(zobj->properties, name)) != NULL)) { in zend_std_get_property_ptr_ptr()
1152 if (EXPECTED(!zobj->ce->__get) || in zend_std_get_property_ptr_ptr()
1153 UNEXPECTED((*zend_get_property_guard(zobj, name)) & IN_GET)) { in zend_std_get_property_ptr_ptr()
1154 if (UNEXPECTED(zobj->ce->ce_flags & ZEND_ACC_NO_DYNAMIC_PROPERTIES)) { in zend_std_get_property_ptr_ptr()
1155 zend_forbidden_dynamic_property(zobj->ce, name); in zend_std_get_property_ptr_ptr()
1158 if (UNEXPECTED(!(zobj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES))) { in zend_std_get_property_ptr_ptr()
1159 if (UNEXPECTED(!zend_deprecated_dynamic_property(zobj, name))) { in zend_std_get_property_ptr_ptr()
1163 if (UNEXPECTED(!zobj->properties)) { in zend_std_get_property_ptr_ptr()
1164 rebuild_object_properties(zobj); in zend_std_get_property_ptr_ptr()
1167 zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name)); in zend_std_get_property_ptr_ptr()
1169 retval = zend_hash_add(zobj->properties, name, &EG(uninitialized_zval)); in zend_std_get_property_ptr_ptr()
1171 } else if (zobj->ce->__get == NULL) { in zend_std_get_property_ptr_ptr()
1179 ZEND_API void zend_std_unset_property(zend_object *zobj, zend_string *name, void **cache_slot) /* {… in zend_std_unset_property() argument
1184 …property_offset = zend_get_property_offset(zobj->ce, name, (zobj->ce->__unset != NULL), cache_slot… in zend_std_unset_property()
1187 zval *slot = OBJ_PROP(zobj, property_offset); in zend_std_unset_property()
1208 if (zobj->properties) { in zend_std_unset_property()
1209 HT_FLAGS(zobj->properties) |= HASH_FLAG_HAS_EMPTY_IND; in zend_std_unset_property()
1215 && !verify_readonly_initialization_access(prop_info, zobj->ce, name, "unset"))) { in zend_std_unset_property()
1224 && EXPECTED(zobj->properties != NULL)) { in zend_std_unset_property()
1225 if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) { in zend_std_unset_property()
1226 if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) { in zend_std_unset_property()
1227 GC_DELREF(zobj->properties); in zend_std_unset_property()
1229 zobj->properties = zend_array_dup(zobj->properties); in zend_std_unset_property()
1231 if (EXPECTED(zend_hash_del(zobj->properties, name) != FAILURE)) { in zend_std_unset_property()
1239 if (zobj->ce->__unset) { in zend_std_unset_property()
1240 uint32_t *guard = zend_get_property_guard(zobj, name); in zend_std_unset_property()
1244 zend_std_call_unsetter(zobj, name); in zend_std_unset_property()
1248 zend_wrong_offset(zobj->ce, name); in zend_std_unset_property()
1408 zend_object *zobj = *obj_ptr; in zend_std_get_method() local
1425 if (UNEXPECTED((func = zend_hash_find(&zobj->ce->function_table, lc_method_name)) == NULL)) { in zend_std_get_method()
1429 if (zobj->ce->__call) { in zend_std_get_method()
1430 return zend_get_user_call_function(zobj->ce, method_name); in zend_std_get_method()
1444 zend_function *updated_fbc = zend_get_parent_private_method(scope, zobj->ce, lc_method_name); in zend_std_get_method()
1455 if (zobj->ce->__call) { in zend_std_get_method()
1456 fbc = zend_get_user_call_function(zobj->ce, method_name); in zend_std_get_method()
1673 ZEND_API zend_function *zend_std_get_constructor(zend_object *zobj) /* {{{ */ in zend_std_get_constructor() argument
1675 zend_function *constructor = zobj->ce->constructor; in zend_std_get_constructor()
1819 ZEND_API int zend_std_has_property(zend_object *zobj, zend_string *name, int has_set_exists, void *… in zend_std_has_property() argument
1827 property_offset = zend_get_property_offset(zobj->ce, name, 1, cache_slot, &prop_info); in zend_std_has_property()
1830 value = OBJ_PROP(zobj, property_offset); in zend_std_has_property()
1840 if (EXPECTED(zobj->properties != NULL)) { in zend_std_has_property()
1844 if (EXPECTED(idx < zobj->properties->nNumUsed * sizeof(Bucket))) { in zend_std_has_property()
1845 Bucket *p = (Bucket*)((char*)zobj->properties->arData + idx); in zend_std_has_property()
1857 value = zend_hash_find(zobj->properties, name); in zend_std_has_property()
1860 uintptr_t idx = (char*)value - (char*)zobj->properties->arData; in zend_std_has_property()
1883 if ((has_set_exists != ZEND_PROPERTY_EXISTS) && zobj->ce->__isset) { in zend_std_has_property()
1884 uint32_t *guard = zend_get_property_guard(zobj, name); in zend_std_has_property()
1893 GC_ADDREF(zobj); in zend_std_has_property()
1895 zend_std_call_issetter(zobj, name, &rv); in zend_std_has_property()
1899 if (EXPECTED(!EG(exception)) && zobj->ce->__get && !((*guard) & IN_GET)) { in zend_std_has_property()
1901 zend_std_call_getter(zobj, name, &rv); in zend_std_has_property()
1910 OBJ_RELEASE(zobj); in zend_std_has_property()
1920 ZEND_API zend_string *zend_std_get_class_name(const zend_object *zobj) /* {{{ */ in zend_std_get_class_name() argument
1922 return zend_string_copy(zobj->ce->name); in zend_std_get_class_name()
2009 zend_object *zobj = Z_OBJ_P(obj); in zend_get_properties_for() local
2011 if (zobj->handlers->get_properties_for) { in zend_get_properties_for()
2012 return zobj->handlers->get_properties_for(zobj, purpose); in zend_get_properties_for()
2015 return zend_std_get_properties_for(zobj, purpose); in zend_get_properties_for()