@@ -5116,15 +5116,15 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_CONS
5116
5116
{
5117
5117
USE_OPLINE
5118
5118
zval *value;
5119
- zval *ref = NULL;
5119
+ zend_reference *ref = NULL;
5120
5120
bool ret;
5121
5121
5122
5122
SAVE_OPLINE();
5123
5123
value = RT_CONSTANT(opline, opline->op1);
5124
5124
5125
5125
if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) && Z_ISREF_P(value)) {
5126
5126
if (IS_CONST == IS_VAR) {
5127
- ref = value;
5127
+ ref = Z_REF_P( value) ;
5128
5128
}
5129
5129
value = Z_REFVAL_P(value);
5130
5130
}
@@ -5146,10 +5146,8 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_CONS
5146
5146
} else if (IS_CONST == IS_CV) {
5147
5147
if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
5148
5148
} else if (IS_CONST == IS_VAR && ref) {
5149
- zend_reference *r = Z_REF_P(ref);
5150
-
5151
- if (UNEXPECTED(GC_DELREF(r) == 0)) {
5152
- efree_size(r, sizeof(zend_reference));
5149
+ if (UNEXPECTED(GC_DELREF(ref) == 0)) {
5150
+ efree_size(ref, sizeof(zend_reference));
5153
5151
} else if (Z_OPT_REFCOUNTED_P(result)) {
5154
5152
Z_ADDREF_P(result);
5155
5153
}
@@ -5164,14 +5162,14 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_CON
5164
5162
{
5165
5163
USE_OPLINE
5166
5164
zval *value;
5167
- zval *ref = NULL;
5165
+ zend_reference *ref = NULL;
5168
5166
5169
5167
SAVE_OPLINE();
5170
5168
value = RT_CONSTANT(opline, opline->op1);
5171
5169
5172
5170
if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
5173
5171
if (IS_CONST & IS_VAR) {
5174
- ref = value;
5172
+ ref = Z_REF_P( value) ;
5175
5173
}
5176
5174
value = Z_REFVAL_P(value);
5177
5175
}
@@ -5184,17 +5182,20 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_CON
5184
5182
} else if (IS_CONST == IS_CV) {
5185
5183
if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
5186
5184
} else if ((IS_CONST & IS_VAR) && ref) {
5187
- zend_reference *r = Z_REF_P(ref);
5188
-
5189
- if (UNEXPECTED(GC_DELREF(r) == 0)) {
5190
- efree_size(r, sizeof(zend_reference));
5185
+ if (UNEXPECTED(GC_DELREF(ref) == 0)) {
5186
+ efree_size(ref, sizeof(zend_reference));
5191
5187
} else if (Z_OPT_REFCOUNTED_P(result)) {
5192
5188
Z_ADDREF_P(result);
5193
5189
}
5194
5190
}
5195
5191
ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
5196
5192
}
5197
5193
5194
+ if ((IS_CONST & IS_VAR) && ref) {
5195
+ if (UNEXPECTED(GC_DELREF(ref) == 0)) {
5196
+ efree_size(ref, sizeof(zend_reference));
5197
+ }
5198
+ }
5198
5199
ZEND_VM_NEXT_OPCODE();
5199
5200
}
5200
5201
@@ -19210,15 +19211,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_TMP_HANDLER(ZEND_
19210
19211
{
19211
19212
USE_OPLINE
19212
19213
zval *value;
19213
- zval *ref = NULL;
19214
+ zend_reference *ref = NULL;
19214
19215
bool ret;
19215
19216
19216
19217
SAVE_OPLINE();
19217
19218
value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
19218
19219
19219
19220
if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) && Z_ISREF_P(value)) {
19220
19221
if (IS_TMP_VAR == IS_VAR) {
19221
- ref = value;
19222
+ ref = Z_REF_P( value) ;
19222
19223
}
19223
19224
value = Z_REFVAL_P(value);
19224
19225
}
@@ -19240,10 +19241,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_TMP_HANDLER(ZEND_
19240
19241
} else if (IS_TMP_VAR == IS_CV) {
19241
19242
if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
19242
19243
} else if (IS_TMP_VAR == IS_VAR && ref) {
19243
- zend_reference *r = Z_REF_P(ref);
19244
-
19245
- if (UNEXPECTED(GC_DELREF(r) == 0)) {
19246
- efree_size(r, sizeof(zend_reference));
19244
+ if (UNEXPECTED(GC_DELREF(ref) == 0)) {
19245
+ efree_size(ref, sizeof(zend_reference));
19247
19246
} else if (Z_OPT_REFCOUNTED_P(result)) {
19248
19247
Z_ADDREF_P(result);
19249
19248
}
@@ -19259,14 +19258,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_TMP_HANDLER(ZEND
19259
19258
{
19260
19259
USE_OPLINE
19261
19260
zval *value;
19262
- zval *ref = NULL;
19261
+ zend_reference *ref = NULL;
19263
19262
19264
19263
SAVE_OPLINE();
19265
19264
value = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
19266
19265
19267
19266
if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
19268
19267
if (IS_TMP_VAR & IS_VAR) {
19269
- ref = value;
19268
+ ref = Z_REF_P( value) ;
19270
19269
}
19271
19270
value = Z_REFVAL_P(value);
19272
19271
}
@@ -19279,18 +19278,20 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_TMP_HANDLER(ZEND
19279
19278
} else if (IS_TMP_VAR == IS_CV) {
19280
19279
if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
19281
19280
} else if ((IS_TMP_VAR & IS_VAR) && ref) {
19282
- zend_reference *r = Z_REF_P(ref);
19283
-
19284
- if (UNEXPECTED(GC_DELREF(r) == 0)) {
19285
- efree_size(r, sizeof(zend_reference));
19281
+ if (UNEXPECTED(GC_DELREF(ref) == 0)) {
19282
+ efree_size(ref, sizeof(zend_reference));
19286
19283
} else if (Z_OPT_REFCOUNTED_P(result)) {
19287
19284
Z_ADDREF_P(result);
19288
19285
}
19289
19286
}
19290
19287
ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
19291
19288
}
19292
19289
19293
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
19290
+ if ((IS_TMP_VAR & IS_VAR) && ref) {
19291
+ if (UNEXPECTED(GC_DELREF(ref) == 0)) {
19292
+ efree_size(ref, sizeof(zend_reference));
19293
+ }
19294
+ }
19294
19295
ZEND_VM_NEXT_OPCODE();
19295
19296
}
19296
19297
@@ -22045,15 +22046,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_VAR_HANDLER(ZEND_
22045
22046
{
22046
22047
USE_OPLINE
22047
22048
zval *value;
22048
- zval *ref = NULL;
22049
+ zend_reference *ref = NULL;
22049
22050
bool ret;
22050
22051
22051
22052
SAVE_OPLINE();
22052
22053
value = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
22053
22054
22054
22055
if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) && Z_ISREF_P(value)) {
22055
22056
if (IS_VAR == IS_VAR) {
22056
- ref = value;
22057
+ ref = Z_REF_P( value) ;
22057
22058
}
22058
22059
value = Z_REFVAL_P(value);
22059
22060
}
@@ -22075,10 +22076,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_VAR_HANDLER(ZEND_
22075
22076
} else if (IS_VAR == IS_CV) {
22076
22077
if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
22077
22078
} else if (IS_VAR == IS_VAR && ref) {
22078
- zend_reference *r = Z_REF_P(ref);
22079
-
22080
- if (UNEXPECTED(GC_DELREF(r) == 0)) {
22081
- efree_size(r, sizeof(zend_reference));
22079
+ if (UNEXPECTED(GC_DELREF(ref) == 0)) {
22080
+ efree_size(ref, sizeof(zend_reference));
22082
22081
} else if (Z_OPT_REFCOUNTED_P(result)) {
22083
22082
Z_ADDREF_P(result);
22084
22083
}
@@ -22094,14 +22093,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_VAR_HANDLER(ZEND
22094
22093
{
22095
22094
USE_OPLINE
22096
22095
zval *value;
22097
- zval *ref = NULL;
22096
+ zend_reference *ref = NULL;
22098
22097
22099
22098
SAVE_OPLINE();
22100
22099
value = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
22101
22100
22102
22101
if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
22103
22102
if (IS_VAR & IS_VAR) {
22104
- ref = value;
22103
+ ref = Z_REF_P( value) ;
22105
22104
}
22106
22105
value = Z_REFVAL_P(value);
22107
22106
}
@@ -22114,18 +22113,20 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_VAR_HANDLER(ZEND
22114
22113
} else if (IS_VAR == IS_CV) {
22115
22114
if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
22116
22115
} else if ((IS_VAR & IS_VAR) && ref) {
22117
- zend_reference *r = Z_REF_P(ref);
22118
-
22119
- if (UNEXPECTED(GC_DELREF(r) == 0)) {
22120
- efree_size(r, sizeof(zend_reference));
22116
+ if (UNEXPECTED(GC_DELREF(ref) == 0)) {
22117
+ efree_size(ref, sizeof(zend_reference));
22121
22118
} else if (Z_OPT_REFCOUNTED_P(result)) {
22122
22119
Z_ADDREF_P(result);
22123
22120
}
22124
22121
}
22125
22122
ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
22126
22123
}
22127
22124
22128
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
22125
+ if ((IS_VAR & IS_VAR) && ref) {
22126
+ if (UNEXPECTED(GC_DELREF(ref) == 0)) {
22127
+ efree_size(ref, sizeof(zend_reference));
22128
+ }
22129
+ }
22129
22130
ZEND_VM_NEXT_OPCODE();
22130
22131
}
22131
22132
@@ -38402,15 +38403,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_CV_HANDLER(ZEND_O
38402
38403
{
38403
38404
USE_OPLINE
38404
38405
zval *value;
38405
- zval *ref = NULL;
38406
+ zend_reference *ref = NULL;
38406
38407
bool ret;
38407
38408
38408
38409
SAVE_OPLINE();
38409
38410
value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
38410
38411
38411
38412
if ((IS_CV == IS_VAR || IS_CV == IS_CV) && Z_ISREF_P(value)) {
38412
38413
if (IS_CV == IS_VAR) {
38413
- ref = value;
38414
+ ref = Z_REF_P( value) ;
38414
38415
}
38415
38416
value = Z_REFVAL_P(value);
38416
38417
}
@@ -38432,10 +38433,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_CV_HANDLER(ZEND_O
38432
38433
} else if (IS_CV == IS_CV) {
38433
38434
if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
38434
38435
} else if (IS_CV == IS_VAR && ref) {
38435
- zend_reference *r = Z_REF_P(ref);
38436
-
38437
- if (UNEXPECTED(GC_DELREF(r) == 0)) {
38438
- efree_size(r, sizeof(zend_reference));
38436
+ if (UNEXPECTED(GC_DELREF(ref) == 0)) {
38437
+ efree_size(ref, sizeof(zend_reference));
38439
38438
} else if (Z_OPT_REFCOUNTED_P(result)) {
38440
38439
Z_ADDREF_P(result);
38441
38440
}
@@ -38450,14 +38449,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_CV_HANDLER(ZEND_
38450
38449
{
38451
38450
USE_OPLINE
38452
38451
zval *value;
38453
- zval *ref = NULL;
38452
+ zend_reference *ref = NULL;
38454
38453
38455
38454
SAVE_OPLINE();
38456
38455
value = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
38457
38456
38458
38457
if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
38459
38458
if (IS_CV & IS_VAR) {
38460
- ref = value;
38459
+ ref = Z_REF_P( value) ;
38461
38460
}
38462
38461
value = Z_REFVAL_P(value);
38463
38462
}
@@ -38470,17 +38469,20 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_CV_HANDLER(ZEND_
38470
38469
} else if (IS_CV == IS_CV) {
38471
38470
if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
38472
38471
} else if ((IS_CV & IS_VAR) && ref) {
38473
- zend_reference *r = Z_REF_P(ref);
38474
-
38475
- if (UNEXPECTED(GC_DELREF(r) == 0)) {
38476
- efree_size(r, sizeof(zend_reference));
38472
+ if (UNEXPECTED(GC_DELREF(ref) == 0)) {
38473
+ efree_size(ref, sizeof(zend_reference));
38477
38474
} else if (Z_OPT_REFCOUNTED_P(result)) {
38478
38475
Z_ADDREF_P(result);
38479
38476
}
38480
38477
}
38481
38478
ZEND_VM_JMP_EX(OP_JMP_ADDR(opline, opline->op2), 0);
38482
38479
}
38483
38480
38481
+ if ((IS_CV & IS_VAR) && ref) {
38482
+ if (UNEXPECTED(GC_DELREF(ref) == 0)) {
38483
+ efree_size(ref, sizeof(zend_reference));
38484
+ }
38485
+ }
38484
38486
ZEND_VM_NEXT_OPCODE();
38485
38487
}
38486
38488
0 commit comments