Skip to content

Commit 6f56869

Browse files
committed
Zend: Make EG(fake_scope) a const zend_class_entry*
1 parent aa366b5 commit 6f56869

File tree

8 files changed

+33
-34
lines changed

8 files changed

+33
-34
lines changed

Zend/Optimizer/zend_inference.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2409,7 +2409,7 @@ static const zend_property_info *lookup_prop_info(const zend_class_entry *ce, ze
24092409
/* If the class is linked, reuse the precise runtime logic. */
24102410
if ((ce->ce_flags & ZEND_ACC_LINKED)
24112411
&& (!scope || (scope->ce_flags & ZEND_ACC_LINKED))) {
2412-
zend_class_entry *prev_scope = EG(fake_scope);
2412+
const zend_class_entry *prev_scope = EG(fake_scope);
24132413
EG(fake_scope) = scope;
24142414
prop_info = zend_get_property_info(ce, name, 1);
24152415
EG(fake_scope) = prev_scope;

Zend/zend_API.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1400,13 +1400,14 @@ ZEND_API void zend_merge_properties(zval *obj, HashTable *properties) /* {{{ */
14001400
{
14011401
zend_object *zobj = Z_OBJ_P(obj);
14021402
zend_object_write_property_t write_property = zobj->handlers->write_property;
1403-
zend_class_entry *old_scope = EG(fake_scope);
14041403
zend_string *key;
14051404
zval *value;
14061405

14071406
if (HT_IS_PACKED(properties)) {
14081407
return;
14091408
}
1409+
1410+
const zend_class_entry *old_scope = EG(fake_scope);
14101411
EG(fake_scope) = Z_OBJCE_P(obj);
14111412
ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(properties, key, value) {
14121413
if (key) {
@@ -1746,7 +1747,7 @@ ZEND_API void object_properties_load(zend_object *object, HashTable *properties)
17461747
size_t prop_name_len;
17471748
if (zend_unmangle_property_name_ex(key, &class_name, &prop_name, &prop_name_len) == SUCCESS) {
17481749
zend_string *pname = zend_string_init(prop_name, prop_name_len, 0);
1749-
zend_class_entry *prev_scope = EG(fake_scope);
1750+
const zend_class_entry *prev_scope = EG(fake_scope);
17501751
if (class_name && class_name[0] != '*') {
17511752
zend_string *cname = zend_string_init(class_name, strlen(class_name), 0);
17521753
EG(fake_scope) = zend_lookup_class(cname);
@@ -5005,7 +5006,7 @@ ZEND_API void zend_declare_class_constant_string(zend_class_entry *ce, const cha
50055006

50065007
ZEND_API void zend_update_property_ex(zend_class_entry *scope, zend_object *object, zend_string *name, zval *value) /* {{{ */
50075008
{
5008-
zend_class_entry *old_scope = EG(fake_scope);
5009+
const zend_class_entry *old_scope = EG(fake_scope);
50095010

50105011
EG(fake_scope) = scope;
50115012

@@ -5018,7 +5019,7 @@ ZEND_API void zend_update_property_ex(zend_class_entry *scope, zend_object *obje
50185019
ZEND_API void zend_update_property(zend_class_entry *scope, zend_object *object, const char *name, size_t name_length, zval *value) /* {{{ */
50195020
{
50205021
zend_string *property;
5021-
zend_class_entry *old_scope = EG(fake_scope);
5022+
const zend_class_entry *old_scope = EG(fake_scope);
50225023

50235024
EG(fake_scope) = scope;
50245025

@@ -5042,7 +5043,7 @@ ZEND_API void zend_update_property_null(zend_class_entry *scope, zend_object *ob
50425043
ZEND_API void zend_unset_property(zend_class_entry *scope, zend_object *object, const char *name, size_t name_length) /* {{{ */
50435044
{
50445045
zend_string *property;
5045-
zend_class_entry *old_scope = EG(fake_scope);
5046+
const zend_class_entry *old_scope = EG(fake_scope);
50465047

50475048
EG(fake_scope) = scope;
50485049

@@ -5114,14 +5115,14 @@ ZEND_API zend_result zend_update_static_property_ex(zend_class_entry *scope, zen
51145115
{
51155116
zval *property, tmp;
51165117
zend_property_info *prop_info;
5117-
zend_class_entry *old_scope = EG(fake_scope);
51185118

51195119
if (UNEXPECTED(!(scope->ce_flags & ZEND_ACC_CONSTANTS_UPDATED))) {
51205120
if (UNEXPECTED(zend_update_class_constants(scope) != SUCCESS)) {
51215121
return FAILURE;
51225122
}
51235123
}
51245124

5125+
const zend_class_entry *old_scope = EG(fake_scope);
51255126
EG(fake_scope) = scope;
51265127
property = zend_std_get_static_property_with_info(scope, name, BP_VAR_W, &prop_info);
51275128
EG(fake_scope) = old_scope;
@@ -5214,7 +5215,7 @@ ZEND_API zend_result zend_update_static_property_stringl(zend_class_entry *scope
52145215
ZEND_API zval *zend_read_property_ex(zend_class_entry *scope, zend_object *object, zend_string *name, bool silent, zval *rv) /* {{{ */
52155216
{
52165217
zval *value;
5217-
zend_class_entry *old_scope = EG(fake_scope);
5218+
const zend_class_entry *old_scope = EG(fake_scope);
52185219

52195220
EG(fake_scope) = scope;
52205221

@@ -5240,7 +5241,7 @@ ZEND_API zval *zend_read_property(zend_class_entry *scope, zend_object *object,
52405241
ZEND_API zval *zend_read_static_property_ex(zend_class_entry *scope, zend_string *name, bool silent) /* {{{ */
52415242
{
52425243
zval *property;
5243-
zend_class_entry *old_scope = EG(fake_scope);
5244+
const zend_class_entry *old_scope = EG(fake_scope);
52445245

52455246
EG(fake_scope) = scope;
52465247
property = zend_std_get_static_property(scope, name, silent ? BP_VAR_IS : BP_VAR_R);

Zend/zend_exceptions.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ static void zend_update_property_num_checked(zend_class_entry *scope, zend_objec
274274
return;
275275
}
276276
#if ZEND_DEBUG
277-
zend_class_entry *old_scope = EG(fake_scope);
277+
const zend_class_entry *old_scope = EG(fake_scope);
278278
EG(fake_scope) = i_get_exception_base(object);
279279
const zend_property_info *prop_info = zend_get_property_info(object->ce, member, true);
280280
ZEND_ASSERT(OBJ_PROP_TO_NUM(prop_info->offset) == prop_num);

Zend/zend_execute.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -932,7 +932,7 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_object_released_while_assigning_to_pr
932932
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_asymmetric_visibility_property_modification_error(
933933
const zend_property_info *prop_info, const char *operation
934934
) {
935-
zend_class_entry *scope;
935+
const zend_class_entry *scope;
936936
if (EG(fake_scope)) {
937937
scope = EG(fake_scope);
938938
} else {

Zend/zend_execute_API.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -814,7 +814,6 @@ zend_result zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_
814814
zend_function *func;
815815
uint32_t call_info;
816816
void *object_or_called_scope;
817-
zend_class_entry *orig_fake_scope;
818817

819818
ZVAL_UNDEF(fci->retval);
820819

@@ -1003,7 +1002,7 @@ zend_result zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_
10031002
fci_cache->function_handler = NULL;
10041003
}
10051004

1006-
orig_fake_scope = EG(fake_scope);
1005+
const zend_class_entry *orig_fake_scope = EG(fake_scope);
10071006
EG(fake_scope) = NULL;
10081007
if (func->type == ZEND_USER_FUNCTION) {
10091008
uint32_t orig_jit_trace_num = EG(jit_trace_num);

Zend/zend_globals.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ struct _zend_executor_globals {
198198
size_t vm_stack_page_size;
199199

200200
struct _zend_execute_data *current_execute_data;
201-
zend_class_entry *fake_scope; /* used to avoid checks accessing properties */
201+
const zend_class_entry *fake_scope; /* used to avoid checks accessing properties */
202202

203203
uint32_t jit_trace_num; /* Used by tracing JIT to reference the currently running trace */
204204

Zend/zend_object_handlers.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ static ZEND_COLD zend_never_inline void zend_readonly_property_unset_error(
350350
ZSTR_VAL(ce->name), ZSTR_VAL(member));
351351
}
352352

353-
static zend_always_inline zend_class_entry *get_fake_or_executed_scope(void)
353+
static zend_always_inline const zend_class_entry *get_fake_or_executed_scope(void)
354354
{
355355
if (UNEXPECTED(EG(fake_scope))) {
356356
return EG(fake_scope);
@@ -391,7 +391,7 @@ static zend_always_inline uintptr_t zend_get_property_offset(zend_class_entry *c
391391
flags = property_info->flags;
392392

393393
if (flags & (ZEND_ACC_CHANGED|ZEND_ACC_PRIVATE|ZEND_ACC_PROTECTED)) {
394-
zend_class_entry *scope = get_fake_or_executed_scope();
394+
const zend_class_entry *scope = get_fake_or_executed_scope();
395395

396396
if (property_info->ce != scope) {
397397
if (flags & ZEND_ACC_CHANGED) {
@@ -491,7 +491,7 @@ ZEND_API zend_property_info *zend_get_property_info(const zend_class_entry *ce,
491491
flags = property_info->flags;
492492

493493
if (flags & (ZEND_ACC_CHANGED|ZEND_ACC_PRIVATE|ZEND_ACC_PROTECTED)) {
494-
zend_class_entry *scope = get_fake_or_executed_scope();
494+
const zend_class_entry *scope = get_fake_or_executed_scope();
495495
if (property_info->ce != scope) {
496496
if (flags & ZEND_ACC_CHANGED) {
497497
zend_property_info *p = zend_get_parent_private_property(scope, ce, member);
@@ -583,7 +583,7 @@ ZEND_API zend_result zend_check_property_access(const zend_object *zobj, zend_st
583583
ZEND_API bool ZEND_FASTCALL zend_asymmetric_property_has_set_access(const zend_property_info *prop_info) {
584584
ZEND_ASSERT(prop_info->flags & ZEND_ACC_PPP_SET_MASK);
585585
ZEND_ASSERT(!(prop_info->flags & ZEND_ACC_PUBLIC_SET));
586-
zend_class_entry *scope = get_fake_or_executed_scope();
586+
const zend_class_entry *scope = get_fake_or_executed_scope();
587587
if (prop_info->ce == scope) {
588588
return true;
589589
}
@@ -2032,7 +2032,7 @@ ZEND_API zval *zend_std_get_static_property_with_info(zend_class_entry *ce, zend
20322032
}
20332033

20342034
if (!(property_info->flags & ZEND_ACC_PUBLIC)) {
2035-
zend_class_entry *scope = get_fake_or_executed_scope();
2035+
const zend_class_entry *scope = get_fake_or_executed_scope();
20362036
if (property_info->ce != scope) {
20372037
if (UNEXPECTED(property_info->flags & ZEND_ACC_PRIVATE)
20382038
|| UNEXPECTED(!is_protected_compatible_scope(property_info->ce, scope))) {
@@ -2116,7 +2116,7 @@ ZEND_API zend_function *zend_std_get_constructor(zend_object *zobj) /* {{{ */
21162116

21172117
if (constructor) {
21182118
if (UNEXPECTED(!(constructor->op_array.fn_flags & ZEND_ACC_PUBLIC))) {
2119-
zend_class_entry *scope = get_fake_or_executed_scope();
2119+
const zend_class_entry *scope = get_fake_or_executed_scope();
21202120
if (UNEXPECTED(constructor->common.scope != scope)) {
21212121
if (UNEXPECTED(constructor->op_array.fn_flags & ZEND_ACC_PRIVATE)
21222122
|| UNEXPECTED(!zend_check_protected(zend_get_function_root_class(constructor), scope))) {

ext/reflection/php_reflection.c

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4190,7 +4190,7 @@ ZEND_METHOD(ReflectionClass, getStaticProperties)
41904190
ZEND_METHOD(ReflectionClass, getStaticPropertyValue)
41914191
{
41924192
reflection_object *intern;
4193-
zend_class_entry *ce, *old_scope;
4193+
zend_class_entry *ce;
41944194
zend_string *name;
41954195
zval *prop, *def_value = NULL;
41964196

@@ -4204,7 +4204,7 @@ ZEND_METHOD(ReflectionClass, getStaticPropertyValue)
42044204
RETURN_THROWS();
42054205
}
42064206

4207-
old_scope = EG(fake_scope);
4207+
const zend_class_entry *old_scope = EG(fake_scope);
42084208
EG(fake_scope) = ce;
42094209
prop = zend_std_get_static_property(ce, name, BP_VAR_IS);
42104210
EG(fake_scope) = old_scope;
@@ -4231,7 +4231,7 @@ ZEND_METHOD(ReflectionClass, getStaticPropertyValue)
42314231
ZEND_METHOD(ReflectionClass, setStaticPropertyValue)
42324232
{
42334233
reflection_object *intern;
4234-
zend_class_entry *ce, *old_scope;
4234+
zend_class_entry *ce;
42354235
zend_property_info *prop_info;
42364236
zend_string *name;
42374237
zval *variable_ptr, *value;
@@ -4245,7 +4245,7 @@ ZEND_METHOD(ReflectionClass, setStaticPropertyValue)
42454245
if (UNEXPECTED(zend_update_class_constants(ce) != SUCCESS)) {
42464246
RETURN_THROWS();
42474247
}
4248-
old_scope = EG(fake_scope);
4248+
const zend_class_entry *old_scope = EG(fake_scope);
42494249
EG(fake_scope) = ce;
42504250
variable_ptr = zend_std_get_static_property_with_info(ce, name, BP_VAR_W, &prop_info);
42514251
EG(fake_scope) = old_scope;
@@ -4998,7 +4998,7 @@ ZEND_METHOD(ReflectionClass, isInstance)
49984998
ZEND_METHOD(ReflectionClass, newInstance)
49994999
{
50005000
reflection_object *intern;
5001-
zend_class_entry *ce, *old_scope;
5001+
zend_class_entry *ce;
50025002
zend_function *constructor;
50035003

50045004
GET_REFLECTION_OBJECT_PTR(ce);
@@ -5007,7 +5007,7 @@ ZEND_METHOD(ReflectionClass, newInstance)
50075007
return;
50085008
}
50095009

5010-
old_scope = EG(fake_scope);
5010+
const zend_class_entry *old_scope = EG(fake_scope);
50115011
EG(fake_scope) = ce;
50125012
constructor = Z_OBJ_HT_P(return_value)->get_constructor(Z_OBJ_P(return_value));
50135013
EG(fake_scope) = old_scope;
@@ -5065,7 +5065,7 @@ ZEND_METHOD(ReflectionClass, newInstanceWithoutConstructor)
50655065
ZEND_METHOD(ReflectionClass, newInstanceArgs)
50665066
{
50675067
reflection_object *intern;
5068-
zend_class_entry *ce, *old_scope;
5068+
zend_class_entry *ce;
50695069
int argc = 0;
50705070
HashTable *args = NULL;
50715071
zend_function *constructor;
@@ -5084,7 +5084,7 @@ ZEND_METHOD(ReflectionClass, newInstanceArgs)
50845084
return;
50855085
}
50865086

5087-
old_scope = EG(fake_scope);
5087+
const zend_class_entry *old_scope = EG(fake_scope);
50885088
EG(fake_scope) = ce;
50895089
constructor = Z_OBJ_HT_P(return_value)->get_constructor(Z_OBJ_P(return_value));
50905090
EG(fake_scope) = old_scope;
@@ -5908,7 +5908,7 @@ ZEND_METHOD(ReflectionProperty, getValue)
59085908
}
59095909
}
59105910

5911-
zend_class_entry *old_scope = EG(fake_scope);
5911+
const zend_class_entry *old_scope = EG(fake_scope);
59125912
EG(fake_scope) = intern->ce;
59135913
member_p = Z_OBJ_P(object)->handlers->read_property(Z_OBJ_P(object),
59145914
ref->unmangled_name, BP_VAR_R, ref->cache_slot, &rv);
@@ -5967,7 +5967,7 @@ ZEND_METHOD(ReflectionProperty, setValue)
59675967
Z_PARAM_ZVAL(value)
59685968
ZEND_PARSE_PARAMETERS_END();
59695969

5970-
zend_class_entry *old_scope = EG(fake_scope);
5970+
const zend_class_entry *old_scope = EG(fake_scope);
59715971
EG(fake_scope) = intern->ce;
59725972
object->handlers->write_property(object, ref->unmangled_name, value, ref->cache_slot);
59735973
EG(fake_scope) = old_scope;
@@ -6026,7 +6026,7 @@ ZEND_METHOD(ReflectionProperty, getRawValue)
60266026

60276027
if (!prop || !prop->hooks || !prop->hooks[ZEND_PROPERTY_HOOK_GET]) {
60286028
zval rv;
6029-
zend_class_entry *old_scope = EG(fake_scope);
6029+
const zend_class_entry *old_scope = EG(fake_scope);
60306030
EG(fake_scope) = intern->ce;
60316031
zval *member_p = Z_OBJ_P(object)->handlers->read_property(
60326032
Z_OBJ_P(object), ref->unmangled_name, BP_VAR_R,
@@ -6052,7 +6052,7 @@ static void reflection_property_set_raw_value(zend_property_info *prop,
60526052
zend_object *object, zval *value)
60536053
{
60546054
if (!prop || !prop->hooks || !prop->hooks[ZEND_PROPERTY_HOOK_SET]) {
6055-
zend_class_entry *old_scope = EG(fake_scope);
6055+
const zend_class_entry *old_scope = EG(fake_scope);
60566056
EG(fake_scope) = intern->ce;
60576057
object->handlers->write_property(object, unmangled_name, value, cache_slot);
60586058
EG(fake_scope) = old_scope;
@@ -6275,7 +6275,6 @@ ZEND_METHOD(ReflectionProperty, isInitialized)
62756275
}
62766276
RETURN_FALSE;
62776277
} else {
6278-
zend_class_entry *old_scope;
62796278
int retval;
62806279

62816280
if (!object) {
@@ -6298,7 +6297,7 @@ ZEND_METHOD(ReflectionProperty, isInitialized)
62986297
}
62996298
}
63006299

6301-
old_scope = EG(fake_scope);
6300+
const zend_class_entry *old_scope = EG(fake_scope);
63026301
EG(fake_scope) = intern->ce;
63036302
retval = Z_OBJ_HT_P(object)->has_property(Z_OBJ_P(object),
63046303
ref->unmangled_name, ZEND_PROPERTY_EXISTS, ref->cache_slot);

0 commit comments

Comments
 (0)