@@ -1384,7 +1384,7 @@ static void* dasm_labels[zend_lb_MAX];
1384
1384
|.macro ZVAL_DTOR_FUNC, var_info, opline // arg1 must be in FCARG1a
1385
1385
|| do {
1386
1386
|| 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))) {
1388
1388
|| zend_uchar type = concrete_type((var_info) & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE));
1389
1389
|| if (type == IS_STRING && !ZEND_DEBUG) {
1390
1390
| EXT_CALL _efree, r0
@@ -1415,8 +1415,8 @@ static void* dasm_labels[zend_lb_MAX];
1415
1415
|.endmacro
1416
1416
1417
1417
|.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))) {
1420
1420
| // if (Z_REFCOUNTED_P(cv)) {
1421
1421
|| if (cold) {
1422
1422
| IF_ZVAL_REFCOUNTED addr, >1
@@ -1429,23 +1429,23 @@ static void* dasm_labels[zend_lb_MAX];
1429
1429
| // if (!Z_DELREF_P(cv)) {
1430
1430
| GET_ZVAL_PTR FCARG1a, addr
1431
1431
| 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)) ) {
1435
1435
| jnz >3
1436
1436
|| } else {
1437
1437
| jnz >4
1438
1438
|| }
1439
1439
|| }
1440
1440
| // zval_dtor_func(r);
1441
1441
| 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)) ) {
1443
1443
| jmp >4
1444
1444
|| }
1445
1445
|3:
1446
1446
|| }
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) ) {
1449
1449
|| zend_jit_addr ref_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FCARG1a, offsetof(zend_reference, val));
1450
1450
| IF_NOT_ZVAL_TYPE addr, IS_REFERENCE, >1
1451
1451
| IF_NOT_ZVAL_COLLECTABLE ref_addr, >4
@@ -1456,7 +1456,7 @@ static void* dasm_labels[zend_lb_MAX];
1456
1456
| // gc_possible_root(Z_COUNTED_P(z))
1457
1457
| EXT_CALL gc_possible_root, r0
1458
1458
|| }
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) {
1460
1460
| jmp >4
1461
1461
|.code
1462
1462
|| }
0 commit comments