mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Set PROPERTY_TYPES_RESOLVED flag for internal classes
Also make sure that the resolution happens before preloading runs.
This commit is contained in:
parent
09041151de
commit
1fea887cc0
1 changed files with 8 additions and 3 deletions
11
Zend/zend.c
11
Zend/zend.c
|
@ -956,7 +956,11 @@ static void zend_resolve_property_types(void) /* {{{ */
|
||||||
zend_property_info *prop_info;
|
zend_property_info *prop_info;
|
||||||
|
|
||||||
ZEND_HASH_FOREACH_PTR(CG(class_table), ce) {
|
ZEND_HASH_FOREACH_PTR(CG(class_table), ce) {
|
||||||
if (UNEXPECTED(ce->type == ZEND_INTERNAL_CLASS && ZEND_CLASS_HAS_TYPE_HINTS(ce))) {
|
if (ce->type != ZEND_INTERNAL_CLASS) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (UNEXPECTED(ZEND_CLASS_HAS_TYPE_HINTS(ce))) {
|
||||||
ZEND_HASH_FOREACH_PTR(&ce->properties_info, prop_info) {
|
ZEND_HASH_FOREACH_PTR(&ce->properties_info, prop_info) {
|
||||||
if (ZEND_TYPE_IS_NAME(prop_info->type)) {
|
if (ZEND_TYPE_IS_NAME(prop_info->type)) {
|
||||||
zend_string *type_name = ZEND_TYPE_NAME(prop_info->type);
|
zend_string *type_name = ZEND_TYPE_NAME(prop_info->type);
|
||||||
|
@ -970,6 +974,7 @@ static void zend_resolve_property_types(void) /* {{{ */
|
||||||
}
|
}
|
||||||
} ZEND_HASH_FOREACH_END();
|
} ZEND_HASH_FOREACH_END();
|
||||||
}
|
}
|
||||||
|
ce->ce_flags |= ZEND_ACC_PROPERTY_TYPES_RESOLVED;
|
||||||
} ZEND_HASH_FOREACH_END();
|
} ZEND_HASH_FOREACH_END();
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
@ -986,6 +991,8 @@ int zend_post_startup(void) /* {{{ */
|
||||||
zend_executor_globals *executor_globals = ts_resource(executor_globals_id);
|
zend_executor_globals *executor_globals = ts_resource(executor_globals_id);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
zend_resolve_property_types();
|
||||||
|
|
||||||
if (zend_post_startup_cb) {
|
if (zend_post_startup_cb) {
|
||||||
int (*cb)(void) = zend_post_startup_cb;
|
int (*cb)(void) = zend_post_startup_cb;
|
||||||
|
|
||||||
|
@ -995,8 +1002,6 @@ int zend_post_startup(void) /* {{{ */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
zend_resolve_property_types();
|
|
||||||
|
|
||||||
#ifdef ZTS
|
#ifdef ZTS
|
||||||
*GLOBAL_FUNCTION_TABLE = *compiler_globals->function_table;
|
*GLOBAL_FUNCTION_TABLE = *compiler_globals->function_table;
|
||||||
*GLOBAL_CLASS_TABLE = *compiler_globals->class_table;
|
*GLOBAL_CLASS_TABLE = *compiler_globals->class_table;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue