@@ -386,7 +386,6 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) {
386
386
387
387
#define Z_GC_INFO (zval ) GC_INFO(Z_COUNTED(zval))
388
388
#define Z_GC_INFO_P (zval_p ) Z_GC_INFO(*(zval_p))
389
-
390
389
#define Z_GC_TYPE_INFO (zval ) GC_TYPE_INFO(Z_COUNTED(zval))
391
390
#define Z_GC_TYPE_INFO_P (zval_p ) Z_GC_TYPE_INFO(*(zval_p))
392
391
@@ -402,7 +401,6 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) {
402
401
403
402
/* zval.u1.v.type_flags */
404
403
#define IS_TYPE_CONSTANT (1<<0)
405
- #define IS_TYPE_IMMUTABLE (1<<1)
406
404
#define IS_TYPE_REFCOUNTED (1<<2)
407
405
#define IS_TYPE_COPYABLE (1<<4)
408
406
@@ -437,7 +435,7 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) {
437
435
#define IS_STR_CONSTANT_UNQUALIFIED (1<<4) /* the same as IS_CONSTANT_UNQUALIFIED */
438
436
439
437
/* array flags */
440
- #define IS_ARRAY_IMMUTABLE (1<<1) /* the same as IS_TYPE_IMMUTABLE */
438
+ #define IS_ARRAY_IMMUTABLE (1<<1)
441
439
442
440
/* object flags (zval.value->gc.u.flags) */
443
441
#define IS_OBJ_APPLY_COUNT 0x07
@@ -475,9 +473,6 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) {
475
473
#define Z_COPYABLE (zval ) ((Z_TYPE_FLAGS(zval) & IS_TYPE_COPYABLE) != 0)
476
474
#define Z_COPYABLE_P (zval_p ) Z_COPYABLE(*(zval_p))
477
475
478
- #define Z_IMMUTABLE (zval ) ((Z_TYPE_FLAGS(zval) & IS_TYPE_IMMUTABLE) != 0)
479
- #define Z_IMMUTABLE_P (zval_p ) Z_IMMUTABLE(*(zval_p))
480
-
481
476
/* the following Z_OPT_* macros make better code when Z_TYPE_INFO accessed before */
482
477
#define Z_OPT_TYPE (zval ) (Z_TYPE_INFO(zval) & Z_TYPE_MASK)
483
478
#define Z_OPT_TYPE_P (zval_p ) Z_OPT_TYPE(*(zval_p))
@@ -491,9 +486,6 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) {
491
486
#define Z_OPT_COPYABLE (zval ) ((Z_TYPE_INFO(zval) & (IS_TYPE_COPYABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
492
487
#define Z_OPT_COPYABLE_P (zval_p ) Z_OPT_COPYABLE(*(zval_p))
493
488
494
- #define Z_OPT_IMMUTABLE (zval ) ((Z_TYPE_INFO(zval) & (IS_TYPE_IMMUTABLE << Z_TYPE_FLAGS_SHIFT)) != 0)
495
- #define Z_OPT_IMMUTABLE_P (zval_p ) Z_OPT_IMMUTABLE(*(zval_p))
496
-
497
489
#define Z_OPT_ISREF (zval ) (Z_OPT_TYPE(zval) == IS_REFERENCE)
498
490
#define Z_OPT_ISREF_P (zval_p ) Z_OPT_ISREF(*(zval_p))
499
491
@@ -818,7 +810,7 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) {
818
810
#define Z_TRY_DELREF (z ) Z_TRY_DELREF_P(&(z))
819
811
820
812
static zend_always_inline uint32_t zval_refcount_p (zval * pz ) {
821
- ZEND_ASSERT (Z_REFCOUNTED_P (pz ) || Z_IMMUTABLE_P (pz ));
813
+ ZEND_ASSERT (Z_REFCOUNTED_P (pz ) || Z_COPYABLE_P (pz ));
822
814
return GC_REFCOUNT (Z_COUNTED_P (pz ));
823
815
}
824
816
@@ -883,8 +875,8 @@ static zend_always_inline uint32_t zval_delref_p(zval* pz) {
883
875
zend_refcounted *_gc = Z_COUNTED_P(_z2); \
884
876
uint32_t _t = Z_TYPE_INFO_P(_z2); \
885
877
ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t); \
886
- if ((_t & ((IS_TYPE_REFCOUNTED|IS_TYPE_IMMUTABLE ) << Z_TYPE_FLAGS_SHIFT)) != 0) { \
887
- if ((_t & (( IS_TYPE_COPYABLE|IS_TYPE_IMMUTABLE) << Z_TYPE_FLAGS_SHIFT)) != 0) { \
878
+ if ((_t & ((IS_TYPE_REFCOUNTED|IS_TYPE_COPYABLE ) << Z_TYPE_FLAGS_SHIFT)) != 0) { \
879
+ if ((_t & (IS_TYPE_COPYABLE << Z_TYPE_FLAGS_SHIFT)) != 0) { \
888
880
_zval_copy_ctor_func(_z1 ZEND_FILE_LINE_CC); \
889
881
} else { \
890
882
GC_REFCOUNT(_gc)++; \
@@ -950,7 +942,7 @@ static zend_always_inline uint32_t zval_delref_p(zval* pz) {
950
942
zval *_zv = (zv); \
951
943
zend_array *_arr = Z_ARR_P(_zv); \
952
944
if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) { \
953
- if (!Z_IMMUTABLE_P (_zv)) { \
945
+ if (Z_REFCOUNTED_P (_zv)) { \
954
946
GC_REFCOUNT(_arr)--; \
955
947
} \
956
948
ZVAL_ARR(_zv, zend_array_dup(_arr)); \
@@ -960,10 +952,9 @@ static zend_always_inline uint32_t zval_delref_p(zval* pz) {
960
952
#define SEPARATE_ZVAL_NOREF (zv ) do { \
961
953
zval *_zv = (zv); \
962
954
ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE); \
963
- if (Z_COPYABLE_P(_zv) || \
964
- Z_IMMUTABLE_P(_zv)) { \
955
+ if (Z_COPYABLE_P(_zv)) { \
965
956
if (Z_REFCOUNT_P(_zv) > 1) { \
966
- if (!Z_IMMUTABLE_P (_zv)) { \
957
+ if (Z_REFCOUNTED_P (_zv)) { \
967
958
Z_DELREF_P(_zv); \
968
959
} \
969
960
zval_copy_ctor_func(_zv); \
@@ -974,11 +965,10 @@ static zend_always_inline uint32_t zval_delref_p(zval* pz) {
974
965
#define SEPARATE_ZVAL (zv ) do { \
975
966
zval *_zv = (zv); \
976
967
if (Z_REFCOUNTED_P(_zv) || \
977
- Z_IMMUTABLE_P (_zv)) { \
968
+ Z_COPYABLE_P (_zv)) { \
978
969
if (Z_REFCOUNT_P(_zv) > 1) { \
979
- if (Z_COPYABLE_P(_zv) || \
980
- Z_IMMUTABLE_P(_zv)) { \
981
- if (!Z_IMMUTABLE_P(_zv)) { \
970
+ if (Z_COPYABLE_P(_zv)) { \
971
+ if (Z_REFCOUNTED_P(_zv)) { \
982
972
Z_DELREF_P(_zv); \
983
973
} \
984
974
zval_copy_ctor_func(_zv); \
@@ -992,10 +982,9 @@ static zend_always_inline uint32_t zval_delref_p(zval* pz) {
992
982
993
983
#define SEPARATE_ZVAL_IF_NOT_REF (zv ) do { \
994
984
zval *_zv = (zv); \
995
- if (Z_COPYABLE_P(_zv) || \
996
- Z_IMMUTABLE_P(_zv)) { \
985
+ if (Z_COPYABLE_P(_zv)) { \
997
986
if (Z_REFCOUNT_P(_zv) > 1) { \
998
- if (!Z_IMMUTABLE_P (_zv)) { \
987
+ if (Z_REFCOUNTED_P (_zv)) { \
999
988
Z_DELREF_P(_zv); \
1000
989
} \
1001
990
zval_copy_ctor_func(_zv); \
0 commit comments