@@ -1044,7 +1044,7 @@ static void gc_scan_black(zend_refcounted *ref, gc_stack *stack)
1044
1044
* counts and mark visited nodes grey. See MarkGray() in Bacon & Rajan. */
1045
1045
static void gc_mark_grey (zend_refcounted * ref , gc_stack * stack )
1046
1046
{
1047
- HashTable * ht , * zvals_ht = NULL ;
1047
+ HashTable * ht , * primitive_ht = NULL ;
1048
1048
Bucket * p ;
1049
1049
zval * zv ;
1050
1050
uint32_t n ;
@@ -1135,7 +1135,7 @@ static void gc_mark_grey(zend_refcounted *ref, gc_stack *stack)
1135
1135
handle_zvals :
1136
1136
for (; n != 0 ; n -- ) {
1137
1137
if (Z_COLLECTABLE_P (zv )) {
1138
- zvals_ht = NULL ;
1138
+ primitive_ht = NULL ;
1139
1139
ref = Z_COUNTED_P (zv );
1140
1140
GC_DELREF (ref );
1141
1141
if (!GC_REF_CHECK_COLOR (ref , GC_GREY )) {
@@ -1157,9 +1157,9 @@ static void gc_mark_grey(zend_refcounted *ref, gc_stack *stack)
1157
1157
}
1158
1158
zv ++ ;
1159
1159
}
1160
- if (zvals_ht ) {
1161
- GC_ADD_FLAGS (zvals_ht , GC_NOT_COLLECTABLE );
1162
- zvals_ht = NULL ;
1160
+ if (primitive_ht ) {
1161
+ GC_ADD_FLAGS (primitive_ht , GC_NOT_COLLECTABLE );
1162
+ primitive_ht = NULL ;
1163
1163
}
1164
1164
}
1165
1165
} else if (GC_TYPE (ref ) == IS_ARRAY ) {
@@ -1170,21 +1170,20 @@ static void gc_mark_grey(zend_refcounted *ref, gc_stack *stack)
1170
1170
if (GC_FLAGS (ht ) & GC_NOT_COLLECTABLE ) {
1171
1171
goto next ;
1172
1172
}
1173
+ primitive_ht = ht ;
1173
1174
if (HT_IS_PACKED (ht )) {
1174
1175
zv = ht -> arPacked ;
1175
- zvals_ht = ht ;
1176
1176
goto handle_zvals ;
1177
1177
}
1178
1178
1179
- bool is_primitive = true;
1180
1179
p = ht -> arData ;
1181
1180
for (; n != 0 ; n -- ) {
1182
1181
zv = & p -> val ;
1183
1182
if (Z_TYPE_P (zv ) == IS_INDIRECT ) {
1184
1183
zv = Z_INDIRECT_P (zv );
1185
1184
}
1186
1185
if (Z_COLLECTABLE_P (zv )) {
1187
- is_primitive = false ;
1186
+ primitive_ht = NULL ;
1188
1187
ref = Z_COUNTED_P (zv );
1189
1188
GC_DELREF (ref );
1190
1189
if (!GC_REF_CHECK_COLOR (ref , GC_GREY )) {
@@ -1210,8 +1209,9 @@ static void gc_mark_grey(zend_refcounted *ref, gc_stack *stack)
1210
1209
}
1211
1210
p ++ ;
1212
1211
}
1213
- if (is_primitive ) {
1212
+ if (primitive_ht ) {
1214
1213
GC_ADD_FLAGS (ht , GC_NOT_COLLECTABLE );
1214
+ primitive_ht = NULL ;
1215
1215
}
1216
1216
} else if (GC_TYPE (ref ) == IS_REFERENCE ) {
1217
1217
if (Z_COLLECTABLE (((zend_reference * )ref )-> val )) {
0 commit comments