@@ -1384,7 +1384,7 @@ static void* dasm_labels[zend_lb_MAX];
13841384|.macro ZVAL_DTOR_FUNC, var_info, opline // arg1 must be in FCARG1a
13851385|| do {
13861386|| if (!((var_info) & MAY_BE_GUARD)
1387- || && has_concrete_type((var_info) & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_INDIRECT ))) {
1387+ || && has_concrete_type((var_info) & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
13881388|| zend_uchar type = concrete_type((var_info) & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE));
13891389|| if (type == IS_STRING && !ZEND_DEBUG) {
13901390| EXT_CALL _efree, r0
@@ -1415,8 +1415,8 @@ static void* dasm_labels[zend_lb_MAX];
14151415|.endmacro
14161416
14171417|.macro ZVAL_PTR_DTOR, addr, op_info, gc, cold, opline
1418- || if ((op_info) & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF)) {
1419- || if ((op_info) & ((MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_INDIRECT)-(MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
1418+ || if ((op_info) & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF|MAY_BE_GUARD )) {
1419+ || if ((op_info) & ((MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_INDIRECT|MAY_BE_GUARD )-(MAY_BE_OBJECT|MAY_BE_RESOURCE))) {
14201420| // if (Z_REFCOUNTED_P(cv)) {
14211421|| if (cold) {
14221422| IF_ZVAL_REFCOUNTED addr, >1
@@ -1429,23 +1429,23 @@ static void* dasm_labels[zend_lb_MAX];
14291429| // if (!Z_DELREF_P(cv)) {
14301430| GET_ZVAL_PTR FCARG1a, addr
14311431| GC_DELREF FCARG1a
1432- || if (RC_MAY_BE_1(op_info)) {
1433- || if (RC_MAY_BE_N(op_info)) {
1434- || if (gc && RC_MAY_BE_N(op_info) && ((op_info) & (MAY_BE_REF|MAY_BE_ARRAY|MAY_BE_OBJECT)) != 0) {
1432+ || if (((op_info) & MAY_BE_GUARD) || RC_MAY_BE_1(op_info)) {
1433+ || if (((op_info) & MAY_BE_GUARD) || RC_MAY_BE_N(op_info)) {
1434+ || if (gc && (((op_info) & MAY_BE_GUARD) || ( RC_MAY_BE_N(op_info) && ((op_info) & (MAY_BE_REF|MAY_BE_ARRAY|MAY_BE_OBJECT)) != 0)) ) {
14351435| jnz >3
14361436|| } else {
14371437| jnz >4
14381438|| }
14391439|| }
14401440| // zval_dtor_func(r);
14411441| ZVAL_DTOR_FUNC op_info, opline
1442- || if (gc && RC_MAY_BE_N(op_info) && ((op_info) & (MAY_BE_REF|MAY_BE_ARRAY|MAY_BE_OBJECT)) != 0) {
1442+ || if (gc && (((op_info) & MAY_BE_GUARD) || ( RC_MAY_BE_N(op_info) && ((op_info) & (MAY_BE_REF|MAY_BE_ARRAY|MAY_BE_OBJECT)) != 0)) ) {
14431443| jmp >4
14441444|| }
14451445|3:
14461446|| }
1447- || if (gc && RC_MAY_BE_N(op_info) && ((op_info) & (MAY_BE_REF|MAY_BE_ARRAY|MAY_BE_OBJECT)) != 0) {
1448- || if ((op_info) & MAY_BE_REF) {
1447+ || if (gc && (((op_info) & MAY_BE_GUARD) || ( RC_MAY_BE_N(op_info) && ((op_info) & (MAY_BE_REF|MAY_BE_ARRAY|MAY_BE_OBJECT)) != 0)) ) {
1448+ || if ((op_info) & ( MAY_BE_REF|MAY_BE_GUARD) ) {
14491449|| zend_jit_addr ref_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FCARG1a, offsetof(zend_reference, val));
14501450| IF_NOT_ZVAL_TYPE addr, IS_REFERENCE, >1
14511451| IF_NOT_ZVAL_COLLECTABLE ref_addr, >4
@@ -1456,7 +1456,7 @@ static void* dasm_labels[zend_lb_MAX];
14561456| // gc_possible_root(Z_COUNTED_P(z))
14571457| EXT_CALL gc_possible_root, r0
14581458|| }
1459- || if (cold && ((op_info) & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_OBJECT|MAY_BE_RESOURCE))) != 0) {
1459+ || if (cold && ((op_info) & ((MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_INDIRECT|MAY_BE_GUARD )-(MAY_BE_OBJECT|MAY_BE_RESOURCE))) != 0) {
14601460| jmp >4
14611461|.code
14621462|| }
0 commit comments