Skip to content

Commit a01dd9f

Browse files
committed
Revert "Port all internally used classes to use default_object_handlers"
This reverts commit 94ee4f9. The commit was a bit too late to be included in PHP 8.2 RC1. Given it's a massive ABI break, we decide to postpone the change to PHP 8.3.
1 parent d228651 commit a01dd9f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+115
-108
lines changed

Zend/zend_inheritance.c

-1
Original file line numberDiff line numberDiff line change
@@ -1472,7 +1472,6 @@ ZEND_API void zend_do_inheritance_ex(zend_class_entry *ce, zend_class_entry *par
14721472
zend_string_release_ex(ce->parent_name, 0);
14731473
}
14741474
ce->parent = parent_ce;
1475-
ce->default_object_handlers = parent_ce->default_object_handlers;
14761475
ce->ce_flags |= ZEND_ACC_RESOLVED_PARENT;
14771476

14781477
/* Inherit properties */

Zend/zend_iterators.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ static const zend_object_handlers iterator_object_handlers = {
5757
ZEND_API void zend_register_iterator_wrapper(void)
5858
{
5959
INIT_CLASS_ENTRY(zend_iterator_class_entry, "__iterator_wrapper", NULL);
60-
zend_iterator_class_entry.default_object_handlers = &iterator_object_handlers;
6160
}
6261

6362
static void iter_wrapper_free(zend_object *object)
@@ -84,6 +83,7 @@ static HashTable *iter_wrapper_get_gc(zend_object *object, zval **table, int *n)
8483
ZEND_API void zend_iterator_init(zend_object_iterator *iter)
8584
{
8685
zend_object_std_init(&iter->std, &zend_iterator_class_entry);
86+
iter->std.handlers = &iterator_object_handlers;
8787
}
8888

8989
ZEND_API void zend_iterator_dtor(zend_object_iterator *iter)

ext/com_dotnet/com_extension.c

-4
Original file line numberDiff line numberDiff line change
@@ -184,22 +184,18 @@ PHP_MINIT_FUNCTION(com_dotnet)
184184

185185
php_com_saproxy_class_entry = register_class_com_safearray_proxy();
186186
/* php_com_saproxy_class_entry->constructor->common.fn_flags |= ZEND_ACC_PROTECTED; */
187-
php_com_saproxy_class_entry->default_object_handlers = &php_com_saproxy_handlers;
188187
php_com_saproxy_class_entry->get_iterator = php_com_saproxy_iter_get;
189188

190189
php_com_variant_class_entry = register_class_variant();
191-
php_com_variant_class_entry->default_object_handlers = &php_com_object_handlers;
192190
php_com_variant_class_entry->create_object = php_com_object_new;
193191
php_com_variant_class_entry->get_iterator = php_com_iter_get;
194192

195193
tmp = register_class_com(php_com_variant_class_entry);
196-
tmp->default_object_handlers = &php_com_object_handlers;
197194
tmp->create_object = php_com_object_new;
198195
tmp->get_iterator = php_com_iter_get;
199196

200197
#if HAVE_MSCOREE_H
201198
tmp = register_class_dotnet(php_com_variant_class_entry);
202-
tmp->default_object_handlers = &php_com_object_handlers;
203199
tmp->create_object = php_com_object_new;
204200
tmp->get_iterator = php_com_iter_get;
205201
#endif

ext/com_dotnet/com_handlers.c

+1
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,7 @@ zend_object* php_com_object_new(zend_class_entry *ce)
627627
obj->ce = ce;
628628

629629
zend_object_std_init(&obj->zo, ce);
630+
obj->zo.handlers = &php_com_object_handlers;
630631

631632
obj->typeinfo = NULL;
632633

ext/com_dotnet/com_misc.c

+2
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ PHP_COM_DOTNET_API void php_com_wrap_dispatch(zval *z, IDispatch *disp,
6161
IDispatch_GetTypeInfo(V_DISPATCH(&obj->v), 0, LANG_NEUTRAL, &obj->typeinfo);
6262

6363
zend_object_std_init(&obj->zo, php_com_variant_class_entry);
64+
obj->zo.handlers = &php_com_object_handlers;
6465
ZVAL_OBJ(z, &obj->zo);
6566
}
6667

@@ -84,6 +85,7 @@ PHP_COM_DOTNET_API void php_com_wrap_variant(zval *z, VARIANT *v,
8485
}
8586

8687
zend_object_std_init(&obj->zo, php_com_variant_class_entry);
88+
obj->zo.handlers = &php_com_object_handlers;
8789
ZVAL_OBJ(z, &obj->zo);
8890
}
8991

ext/com_dotnet/com_persist.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,7 @@ static zend_object* helper_new(zend_class_entry *ce)
709709
memset(helper, 0, sizeof(*helper));
710710

711711
zend_object_std_init(&helper->std, helper_ce);
712+
helper->std.handlers = &helper_handlers;
712713

713714
return &helper->std;
714715
}
@@ -721,7 +722,6 @@ void php_com_persist_minit(INIT_FUNC_ARGS)
721722

722723
helper_ce = register_class_COMPersistHelper();
723724
helper_ce->create_object = helper_new;
724-
helper_ce->default_object_handlers = &helper_handlers;
725725

726726
le_istream = zend_register_list_destructors_ex(istream_dtor,
727727
NULL, "com_dotnet_istream_wrapper", module_number);

ext/com_dotnet/com_saproxy.c

+1
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,7 @@ void php_com_saproxy_create(zend_object *com_object, zval *proxy_out, zval *inde
440440
ZVAL_DUP(&proxy->indices[proxy->dimensions-1], index);
441441

442442
zend_object_std_init(&proxy->std, php_com_saproxy_class_entry);
443+
proxy->std.handlers = &php_com_saproxy_handlers;
443444
ZVAL_OBJ(proxy_out, &proxy->std);
444445
}
445446

ext/com_dotnet/php_com_dotnet_internal.h

-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ void php_com_object_enable_event_sink(php_com_dotnet_object *obj, bool enable);
7878
/* com_saproxy.c */
7979
zend_object_iterator *php_com_saproxy_iter_get(zend_class_entry *ce, zval *object, int by_ref);
8080
void php_com_saproxy_create(zend_object *com_object, zval *proxy_out, zval *index);
81-
extern zend_object_handlers php_com_saproxy_handlers;
8281

8382
/* com_olechar.c */
8483
PHP_COM_DOTNET_API zend_string *php_com_olestring_to_string(OLECHAR *olestring, int codepage);

ext/curl/interface.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,6 @@ PHP_MINIT_FUNCTION(curl)
398398

399399
curl_ce = register_class_CurlHandle();
400400
curl_ce->create_object = curl_create_object;
401-
curl_ce->default_object_handlers = &curl_object_handlers;
402401

403402
memcpy(&curl_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));
404403
curl_object_handlers.offset = XtOffsetOf(php_curl, std);
@@ -427,6 +426,7 @@ static zend_object *curl_create_object(zend_class_entry *class_type) {
427426

428427
zend_object_std_init(&intern->std, class_type);
429428
object_properties_init(&intern->std, class_type);
429+
intern->std.handlers = &curl_object_handlers;
430430

431431
return &intern->std;
432432
}

ext/curl/multi.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -512,11 +512,14 @@ PHP_FUNCTION(curl_multi_setopt)
512512

513513
/* CurlMultiHandle class */
514514

515+
static zend_object_handlers curl_multi_handlers;
516+
515517
static zend_object *curl_multi_create_object(zend_class_entry *class_type) {
516518
php_curlm *intern = zend_object_alloc(sizeof(php_curlm), class_type);
517519

518520
zend_object_std_init(&intern->std, class_type);
519521
object_properties_init(&intern->std, class_type);
522+
intern->std.handlers = &curl_multi_handlers;
520523

521524
return &intern->std;
522525
}
@@ -579,11 +582,8 @@ static HashTable *curl_multi_get_gc(zend_object *object, zval **table, int *n)
579582
return zend_std_get_properties(object);
580583
}
581584

582-
static zend_object_handlers curl_multi_handlers;
583-
584585
void curl_multi_register_handlers(void) {
585586
curl_multi_ce->create_object = curl_multi_create_object;
586-
curl_multi_ce->default_object_handlers = &curl_multi_handlers;
587587

588588
memcpy(&curl_multi_handlers, &std_object_handlers, sizeof(zend_object_handlers));
589589
curl_multi_handlers.offset = XtOffsetOf(php_curlm, std);

ext/curl/share.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,14 @@ PHP_FUNCTION(curl_share_strerror)
136136

137137
/* CurlShareHandle class */
138138

139+
static zend_object_handlers curl_share_handlers;
140+
139141
static zend_object *curl_share_create_object(zend_class_entry *class_type) {
140142
php_curlsh *intern = zend_object_alloc(sizeof(php_curlsh), class_type);
141143

142144
zend_object_std_init(&intern->std, class_type);
143145
object_properties_init(&intern->std, class_type);
146+
intern->std.handlers = &curl_share_handlers;
144147

145148
return &intern->std;
146149
}
@@ -158,11 +161,8 @@ void curl_share_free_obj(zend_object *object)
158161
zend_object_std_dtor(&sh->std);
159162
}
160163

161-
static zend_object_handlers curl_share_handlers;
162-
163164
void curl_share_register_handlers(void) {
164165
curl_share_ce->create_object = curl_share_create_object;
165-
curl_share_ce->default_object_handlers = &curl_share_handlers;
166166

167167
memcpy(&curl_share_handlers, &std_object_handlers, sizeof(zend_object_handlers));
168168
curl_share_handlers.offset = XtOffsetOf(php_curlsh, std);

ext/date/php_date.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -1722,7 +1722,6 @@ static void date_register_classes(void) /* {{{ */
17221722

17231723
date_ce_date = register_class_DateTime(date_ce_interface);
17241724
date_ce_date->create_object = date_object_new_date;
1725-
date_ce_date->default_object_handlers = &date_object_handlers_date;
17261725
memcpy(&date_object_handlers_date, &std_object_handlers, sizeof(zend_object_handlers));
17271726
date_object_handlers_date.offset = XtOffsetOf(php_date_obj, std);
17281727
date_object_handlers_date.free_obj = date_object_free_storage_date;
@@ -1733,7 +1732,6 @@ static void date_register_classes(void) /* {{{ */
17331732

17341733
date_ce_immutable = register_class_DateTimeImmutable(date_ce_interface);
17351734
date_ce_immutable->create_object = date_object_new_date;
1736-
date_ce_immutable->default_object_handlers = &date_object_handlers_date;
17371735
memcpy(&date_object_handlers_immutable, &std_object_handlers, sizeof(zend_object_handlers));
17381736
date_object_handlers_immutable.clone_obj = date_object_clone_date;
17391737
date_object_handlers_immutable.compare = date_object_compare_date;
@@ -1742,7 +1740,6 @@ static void date_register_classes(void) /* {{{ */
17421740

17431741
date_ce_timezone = register_class_DateTimeZone();
17441742
date_ce_timezone->create_object = date_object_new_timezone;
1745-
date_ce_timezone->default_object_handlers = &date_object_handlers_timezone;
17461743
memcpy(&date_object_handlers_timezone, &std_object_handlers, sizeof(zend_object_handlers));
17471744
date_object_handlers_timezone.offset = XtOffsetOf(php_timezone_obj, std);
17481745
date_object_handlers_timezone.free_obj = date_object_free_storage_timezone;
@@ -1754,7 +1751,6 @@ static void date_register_classes(void) /* {{{ */
17541751

17551752
date_ce_interval = register_class_DateInterval();
17561753
date_ce_interval->create_object = date_object_new_interval;
1757-
date_ce_interval->default_object_handlers = &date_object_handlers_interval;
17581754
memcpy(&date_object_handlers_interval, &std_object_handlers, sizeof(zend_object_handlers));
17591755
date_object_handlers_interval.offset = XtOffsetOf(php_interval_obj, std);
17601756
date_object_handlers_interval.free_obj = date_object_free_storage_interval;
@@ -1769,7 +1765,6 @@ static void date_register_classes(void) /* {{{ */
17691765

17701766
date_ce_period = register_class_DatePeriod(zend_ce_aggregate);
17711767
date_ce_period->create_object = date_object_new_period;
1772-
date_ce_period->default_object_handlers = &date_object_handlers_period;
17731768
date_ce_period->get_iterator = date_object_period_get_iterator;
17741769
memcpy(&date_object_handlers_period, &std_object_handlers, sizeof(zend_object_handlers));
17751770
date_object_handlers_period.offset = XtOffsetOf(php_period_obj, std);
@@ -1787,6 +1782,7 @@ static zend_object *date_object_new_date(zend_class_entry *class_type) /* {{{ */
17871782

17881783
zend_object_std_init(&intern->std, class_type);
17891784
object_properties_init(&intern->std, class_type);
1785+
intern->std.handlers = &date_object_handlers_date;
17901786

17911787
return &intern->std;
17921788
} /* }}} */
@@ -1927,6 +1923,7 @@ static zend_object *date_object_new_timezone(zend_class_entry *class_type) /* {{
19271923

19281924
zend_object_std_init(&intern->std, class_type);
19291925
object_properties_init(&intern->std, class_type);
1926+
intern->std.handlers = &date_object_handlers_timezone;
19301927

19311928
return &intern->std;
19321929
} /* }}} */
@@ -2079,6 +2076,7 @@ static zend_object *date_object_new_interval(zend_class_entry *class_type) /* {{
20792076

20802077
zend_object_std_init(&intern->std, class_type);
20812078
object_properties_init(&intern->std, class_type);
2079+
intern->std.handlers = &date_object_handlers_interval;
20822080

20832081
return &intern->std;
20842082
} /* }}} */
@@ -2171,6 +2169,8 @@ static zend_object *date_object_new_period(zend_class_entry *class_type) /* {{{
21712169
zend_object_std_init(&intern->std, class_type);
21722170
object_properties_init(&intern->std, class_type);
21732171

2172+
intern->std.handlers = &date_object_handlers_period;
2173+
21742174
return &intern->std;
21752175
} /* }}} */
21762176

ext/dom/php_dom.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -660,7 +660,6 @@ PHP_MINIT_FUNCTION(dom)
660660

661661
dom_nodelist_class_entry = register_class_DOMNodeList(zend_ce_aggregate, zend_ce_countable);
662662
dom_nodelist_class_entry->create_object = dom_nnodemap_objects_new;
663-
dom_nodelist_class_entry->default_object_handlers = &dom_nnodemap_object_handlers;
664663
dom_nodelist_class_entry->get_iterator = php_dom_get_iterator;
665664

666665
zend_hash_init(&dom_nodelist_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
@@ -669,7 +668,6 @@ PHP_MINIT_FUNCTION(dom)
669668

670669
dom_namednodemap_class_entry = register_class_DOMNamedNodeMap(zend_ce_aggregate, zend_ce_countable);
671670
dom_namednodemap_class_entry->create_object = dom_nnodemap_objects_new;
672-
dom_namednodemap_class_entry->default_object_handlers = &dom_nnodemap_object_handlers;
673671
dom_namednodemap_class_entry->get_iterator = php_dom_get_iterator;
674672

675673
zend_hash_init(&dom_namednodemap_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1);
@@ -1041,6 +1039,8 @@ zend_object *dom_nnodemap_objects_new(zend_class_entry *class_type) /* {{{ */
10411039
objmap->local = NULL;
10421040
objmap->ns = NULL;
10431041

1042+
intern->std.handlers = &dom_nnodemap_object_handlers;
1043+
10441044
return &intern->std;
10451045
}
10461046
/* }}} */

ext/enchant/enchant.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ static zend_object *enchant_broker_create_object(zend_class_entry *class_type) {
6161

6262
zend_object_std_init(&intern->std, class_type);
6363
object_properties_init(&intern->std, class_type);
64+
intern->std.handlers = &enchant_broker_handlers;
6465

6566
return &intern->std;
6667
}
@@ -79,6 +80,7 @@ static zend_object *enchant_dict_create_object(zend_class_entry *class_type) {
7980

8081
zend_object_std_init(&intern->std, class_type);
8182
object_properties_init(&intern->std, class_type);
83+
intern->std.handlers = &enchant_dict_handlers;
8284

8385
return &intern->std;
8486
}
@@ -189,7 +191,6 @@ PHP_MINIT_FUNCTION(enchant)
189191
{
190192
enchant_broker_ce = register_class_EnchantBroker();
191193
enchant_broker_ce->create_object = enchant_broker_create_object;
192-
enchant_broker_ce->default_object_handlers = &enchant_broker_handlers;
193194

194195
memcpy(&enchant_broker_handlers, &std_object_handlers, sizeof(zend_object_handlers));
195196
enchant_broker_handlers.offset = XtOffsetOf(enchant_broker, std);
@@ -199,7 +200,6 @@ PHP_MINIT_FUNCTION(enchant)
199200

200201
enchant_dict_ce = register_class_EnchantDictionary();
201202
enchant_dict_ce->create_object = enchant_dict_create_object;
202-
enchant_dict_ce->default_object_handlers = &enchant_dict_handlers;
203203

204204
memcpy(&enchant_dict_handlers, &std_object_handlers, sizeof(zend_object_handlers));
205205
enchant_dict_handlers.offset = XtOffsetOf(enchant_dict, std);

ext/ffi/ffi.c

+5-4
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,6 @@ static zend_always_inline void zend_ffi_object_init(zend_object *object, zend_cl
234234
GC_SET_REFCOUNT(object, 1);
235235
GC_TYPE_INFO(object) = GC_OBJECT | (IS_OBJ_DESTRUCTOR_CALLED << GC_FLAGS_SHIFT);
236236
object->ce = ce;
237-
object->handlers = ce->default_object_handlers;
238237
object->properties = NULL;
239238
zend_objects_store_put(object);
240239
}
@@ -247,6 +246,7 @@ static zend_object *zend_ffi_cdata_new(zend_class_entry *class_type) /* {{{ */
247246
cdata = emalloc(sizeof(zend_ffi_cdata));
248247

249248
zend_ffi_object_init(&cdata->std, class_type);
249+
cdata->std.handlers = &zend_ffi_cdata_handlers;
250250

251251
cdata->type = NULL;
252252
cdata->ptr = NULL;
@@ -495,6 +495,7 @@ static zend_never_inline zend_ffi_cdata *zend_ffi_cdata_to_zval_slow_ptr(void *p
495495
zend_ffi_cdata *cdata = emalloc(sizeof(zend_ffi_cdata));
496496

497497
zend_ffi_object_init(&cdata->std, zend_ffi_cdata_ce);
498+
cdata->std.handlers = &zend_ffi_cdata_handlers;
498499
cdata->type = type;
499500
cdata->flags = flags;
500501
cdata->ptr = (void*)&cdata->ptr_holder;
@@ -2173,6 +2174,7 @@ static zend_object *zend_ffi_ctype_new(zend_class_entry *class_type) /* {{{ */
21732174
ctype = emalloc(sizeof(zend_ffi_ctype));
21742175

21752176
zend_ffi_object_init(&ctype->std, class_type);
2177+
ctype->std.handlers = &zend_ffi_ctype_handlers;
21762178

21772179
ctype->type = NULL;
21782180

@@ -2259,6 +2261,7 @@ static zend_object *zend_ffi_new(zend_class_entry *class_type) /* {{{ */
22592261
ffi = emalloc(sizeof(zend_ffi));
22602262

22612263
zend_ffi_object_init(&ffi->std, class_type);
2264+
ffi->std.handlers = &zend_ffi_handlers;
22622265

22632266
ffi->lib = NULL;
22642267
ffi->symbols = NULL;
@@ -2470,6 +2473,7 @@ static zval *zend_ffi_read_var(zend_object *obj, zend_string *var_name, int read
24702473

24712474
cdata = emalloc(sizeof(zend_ffi_cdata));
24722475
zend_ffi_object_init(&cdata->std, zend_ffi_cdata_ce);
2476+
cdata->std.handlers = &zend_ffi_cdata_handlers;
24732477
cdata->type = ZEND_FFI_TYPE_MAKE_OWNED(new_type);
24742478
cdata->flags = ZEND_FFI_FLAG_CONST;
24752479
cdata->ptr_holder = sym->addr;
@@ -5301,7 +5305,6 @@ ZEND_MINIT_FUNCTION(ffi)
53015305

53025306
zend_ffi_ce = register_class_FFI();
53035307
zend_ffi_ce->create_object = zend_ffi_new;
5304-
zend_ffi_ce->default_object_handlers = &zend_ffi_handlers;
53055308

53065309
memcpy(&zend_ffi_new_fn, zend_hash_str_find_ptr(&zend_ffi_ce->function_table, "new", sizeof("new")-1), sizeof(zend_internal_function));
53075310
zend_ffi_new_fn.fn_flags &= ~ZEND_ACC_STATIC;
@@ -5333,7 +5336,6 @@ ZEND_MINIT_FUNCTION(ffi)
53335336

53345337
zend_ffi_cdata_ce = register_class_FFI_CData();
53355338
zend_ffi_cdata_ce->create_object = zend_ffi_cdata_new;
5336-
zend_ffi_cdata_ce->default_object_handlers = &zend_ffi_cdata_handlers;
53375339
zend_ffi_cdata_ce->get_iterator = zend_ffi_cdata_get_iterator;
53385340

53395341
memcpy(&zend_ffi_cdata_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
@@ -5408,7 +5410,6 @@ ZEND_MINIT_FUNCTION(ffi)
54085410

54095411
zend_ffi_ctype_ce = register_class_FFI_CType();
54105412
zend_ffi_ctype_ce->create_object = zend_ffi_ctype_new;
5411-
zend_ffi_ctype_ce->default_object_handlers = &zend_ffi_ctype_handlers;
54125413

54135414
memcpy(&zend_ffi_ctype_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
54145415
zend_ffi_ctype_handlers.get_constructor = zend_fake_get_constructor;

ext/fileinfo/fileinfo.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ PHP_FILEINFO_API zend_object *finfo_objects_new(zend_class_entry *class_type)
8989

9090
zend_object_std_init(&intern->zo, class_type);
9191
object_properties_init(&intern->zo, class_type);
92+
intern->zo.handlers = &finfo_object_handlers;
9293

9394
return &intern->zo;
9495
}
@@ -107,7 +108,6 @@ PHP_MINIT_FUNCTION(finfo)
107108
{
108109
finfo_class_entry = register_class_finfo();
109110
finfo_class_entry->create_object = finfo_objects_new;
110-
finfo_class_entry->default_object_handlers = &finfo_object_handlers;
111111

112112
/* copy the standard object handlers to you handler table */
113113
memcpy(&finfo_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));

0 commit comments

Comments
 (0)