@@ -3252,22 +3252,25 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_CONST_HANDLER(
3252
3252
} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
3253
3253
zend_object *zobj = Z_OBJ_P(array_ptr);
3254
3254
if (!zobj->ce->get_iterator) {
3255
+ HashTable *properties;
3256
+
3255
3257
result = EX_VAR(opline->result.var);
3256
3258
ZVAL_OBJ(result, zobj);
3257
3259
if (IS_CONST != IS_TMP_VAR) {
3258
3260
GC_ADDREF(zobj);
3259
3261
}
3260
- if (zobj->properties) {
3261
- if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
3262
- if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
3263
- GC_DELREF(zobj->properties);
3262
+ properties = zobj->properties;
3263
+ if (properties) {
3264
+ if (UNEXPECTED(GC_REFCOUNT(properties) > 1)) {
3265
+ if (EXPECTED(!(GC_FLAGS(properties) & IS_ARRAY_IMMUTABLE))) {
3266
+ GC_DELREF(properties);
3264
3267
}
3265
- zobj->properties = zend_array_dup(zobj-> properties);
3268
+ properties = zobj->properties = zend_array_dup(properties);
3266
3269
}
3267
3270
} else {
3268
- zobj-> properties = zobj->handlers->get_properties(zobj);
3271
+ properties = zobj->handlers->get_properties(zobj);
3269
3272
}
3270
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(zobj-> properties, 0);
3273
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(properties, 0);
3271
3274
3272
3275
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3273
3276
} else {
@@ -19518,22 +19521,25 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_TMP_HANDLER(ZE
19518
19521
} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
19519
19522
zend_object *zobj = Z_OBJ_P(array_ptr);
19520
19523
if (!zobj->ce->get_iterator) {
19524
+ HashTable *properties;
19525
+
19521
19526
result = EX_VAR(opline->result.var);
19522
19527
ZVAL_OBJ(result, zobj);
19523
19528
if (IS_TMP_VAR != IS_TMP_VAR) {
19524
19529
GC_ADDREF(zobj);
19525
19530
}
19526
- if (zobj->properties) {
19527
- if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
19528
- if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
19529
- GC_DELREF(zobj->properties);
19531
+ properties = zobj->properties;
19532
+ if (properties) {
19533
+ if (UNEXPECTED(GC_REFCOUNT(properties) > 1)) {
19534
+ if (EXPECTED(!(GC_FLAGS(properties) & IS_ARRAY_IMMUTABLE))) {
19535
+ GC_DELREF(properties);
19530
19536
}
19531
- zobj->properties = zend_array_dup(zobj-> properties);
19537
+ properties = zobj->properties = zend_array_dup(properties);
19532
19538
}
19533
19539
} else {
19534
- zobj-> properties = zobj->handlers->get_properties(zobj);
19540
+ properties = zobj->handlers->get_properties(zobj);
19535
19541
}
19536
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(zobj-> properties, 0);
19542
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(properties, 0);
19537
19543
19538
19544
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19539
19545
} else {
@@ -23022,22 +23028,25 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_VAR_HANDLER(ZE
23022
23028
} else if (IS_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
23023
23029
zend_object *zobj = Z_OBJ_P(array_ptr);
23024
23030
if (!zobj->ce->get_iterator) {
23031
+ HashTable *properties;
23032
+
23025
23033
result = EX_VAR(opline->result.var);
23026
23034
ZVAL_OBJ(result, zobj);
23027
23035
if (IS_VAR != IS_TMP_VAR) {
23028
23036
GC_ADDREF(zobj);
23029
23037
}
23030
- if (zobj->properties) {
23031
- if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
23032
- if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
23033
- GC_DELREF(zobj->properties);
23038
+ properties = zobj->properties;
23039
+ if (properties) {
23040
+ if (UNEXPECTED(GC_REFCOUNT(properties) > 1)) {
23041
+ if (EXPECTED(!(GC_FLAGS(properties) & IS_ARRAY_IMMUTABLE))) {
23042
+ GC_DELREF(properties);
23034
23043
}
23035
- zobj->properties = zend_array_dup(zobj-> properties);
23044
+ properties = zobj->properties = zend_array_dup(properties);
23036
23045
}
23037
23046
} else {
23038
- zobj-> properties = zobj->handlers->get_properties(zobj);
23047
+ properties = zobj->handlers->get_properties(zobj);
23039
23048
}
23040
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(zobj-> properties, 0);
23049
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(properties, 0);
23041
23050
23042
23051
zval_ptr_dtor_nogc(free_op1);
23043
23052
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -42154,22 +42163,25 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_CV_HANDLER(ZEN
42154
42163
} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
42155
42164
zend_object *zobj = Z_OBJ_P(array_ptr);
42156
42165
if (!zobj->ce->get_iterator) {
42166
+ HashTable *properties;
42167
+
42157
42168
result = EX_VAR(opline->result.var);
42158
42169
ZVAL_OBJ(result, zobj);
42159
42170
if (IS_CV != IS_TMP_VAR) {
42160
42171
GC_ADDREF(zobj);
42161
42172
}
42162
- if (zobj->properties) {
42163
- if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
42164
- if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
42165
- GC_DELREF(zobj->properties);
42173
+ properties = zobj->properties;
42174
+ if (properties) {
42175
+ if (UNEXPECTED(GC_REFCOUNT(properties) > 1)) {
42176
+ if (EXPECTED(!(GC_FLAGS(properties) & IS_ARRAY_IMMUTABLE))) {
42177
+ GC_DELREF(properties);
42166
42178
}
42167
- zobj->properties = zend_array_dup(zobj-> properties);
42179
+ properties = zobj->properties = zend_array_dup(properties);
42168
42180
}
42169
42181
} else {
42170
- zobj-> properties = zobj->handlers->get_properties(zobj);
42182
+ properties = zobj->handlers->get_properties(zobj);
42171
42183
}
42172
- Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(zobj-> properties, 0);
42184
+ Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(properties, 0);
42173
42185
42174
42186
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42175
42187
} else {
0 commit comments