@@ -799,6 +799,27 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_STATIC_PROP_OP_SPEC_HAN
799
799
ZEND_VM_NEXT_OPCODE_EX(1, 2);
800
800
}
801
801
802
+ static zend_never_inline ZEND_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_assign_dim_op_obj_undef_helper_SPEC(zend_object *obj ZEND_OPCODE_HANDLER_ARGS_DC)
803
+ {
804
+ USE_OPLINE
805
+ zval *dim;
806
+
807
+ GC_ADDREF(obj);
808
+ dim = ZVAL_UNDEFINED_OP2();
809
+ if (UNEXPECTED(GC_DELREF(obj) == 0)) {
810
+ zend_objects_store_del(obj);
811
+ FREE_OP((opline+1)->op1_type, (opline+1)->op1.var);
812
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
813
+ ZVAL_NULL(EX_VAR(opline->result.var));
814
+ }
815
+ } else {
816
+ zend_binary_assign_op_obj_dim(obj, dim OPLINE_CC EXECUTE_DATA_CC);
817
+ }
818
+ FREE_OP(opline->op2_type, opline->op2.var);
819
+ FREE_OP(opline->op1_type, opline->op1.var);
820
+ ZEND_VM_NEXT_OPCODE_EX(1, 2);
821
+ }
822
+
802
823
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_STATIC_PROP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
803
824
{
804
825
USE_OPLINE
@@ -22514,19 +22535,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_VAR_CONST_H
22514
22535
}
22515
22536
22516
22537
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
22538
+ zend_object *obj = Z_OBJ_P(container);
22539
+
22517
22540
dim = RT_CONSTANT(opline, opline->op2);
22518
22541
if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
22519
- zend_object *obj = Z_OBJ_P(container);
22520
- GC_ADDREF(obj);
22521
- dim = ZVAL_UNDEFINED_OP2();
22522
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
22523
- zend_objects_store_del(obj);
22524
- goto assign_dim_op_ret_null;
22525
- }
22542
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22526
22543
} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
22527
22544
dim++;
22528
22545
}
22529
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
22546
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
22530
22547
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
22531
22548
HashTable *ht;
22532
22549
zend_uchar old_type;
@@ -25193,19 +25210,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_VAR_TMPVAR_
25193
25210
}
25194
25211
25195
25212
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
25213
+ zend_object *obj = Z_OBJ_P(container);
25214
+
25196
25215
dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC);
25197
25216
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
25198
- zend_object *obj = Z_OBJ_P(container);
25199
- GC_ADDREF(obj);
25200
- dim = ZVAL_UNDEFINED_OP2();
25201
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
25202
- zend_objects_store_del(obj);
25203
- goto assign_dim_op_ret_null;
25204
- }
25217
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
25205
25218
} else if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
25206
25219
dim++;
25207
25220
}
25208
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
25221
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
25209
25222
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
25210
25223
HashTable *ht;
25211
25224
zend_uchar old_type;
@@ -27510,19 +27523,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_VAR_UNUSED_
27510
27523
}
27511
27524
27512
27525
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
27526
+ zend_object *obj = Z_OBJ_P(container);
27527
+
27513
27528
dim = NULL;
27514
27529
if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
27515
- zend_object *obj = Z_OBJ_P(container);
27516
- GC_ADDREF(obj);
27517
- dim = ZVAL_UNDEFINED_OP2();
27518
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
27519
- zend_objects_store_del(obj);
27520
- goto assign_dim_op_ret_null;
27521
- }
27530
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27522
27531
} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
27523
27532
dim++;
27524
27533
}
27525
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
27534
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
27526
27535
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
27527
27536
HashTable *ht;
27528
27537
zend_uchar old_type;
@@ -29375,19 +29384,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_VAR_CV_HAND
29375
29384
}
29376
29385
29377
29386
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
29387
+ zend_object *obj = Z_OBJ_P(container);
29388
+
29378
29389
dim = EX_VAR(opline->op2.var);
29379
29390
if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
29380
- zend_object *obj = Z_OBJ_P(container);
29381
- GC_ADDREF(obj);
29382
- dim = ZVAL_UNDEFINED_OP2();
29383
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
29384
- zend_objects_store_del(obj);
29385
- goto assign_dim_op_ret_null;
29386
- }
29391
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29387
29392
} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
29388
29393
dim++;
29389
29394
}
29390
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
29395
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
29391
29396
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
29392
29397
HashTable *ht;
29393
29398
zend_uchar old_type;
@@ -40168,19 +40173,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_CV_CONST_HA
40168
40173
}
40169
40174
40170
40175
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
40176
+ zend_object *obj = Z_OBJ_P(container);
40177
+
40171
40178
dim = RT_CONSTANT(opline, opline->op2);
40172
40179
if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
40173
- zend_object *obj = Z_OBJ_P(container);
40174
- GC_ADDREF(obj);
40175
- dim = ZVAL_UNDEFINED_OP2();
40176
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
40177
- zend_objects_store_del(obj);
40178
- goto assign_dim_op_ret_null;
40179
- }
40180
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40180
40181
} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
40181
40182
dim++;
40182
40183
}
40183
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
40184
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
40184
40185
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
40185
40186
HashTable *ht;
40186
40187
zend_uchar old_type;
@@ -43935,19 +43936,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_CV_TMPVAR_H
43935
43936
}
43936
43937
43937
43938
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
43939
+ zend_object *obj = Z_OBJ_P(container);
43940
+
43938
43941
dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC);
43939
43942
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
43940
- zend_object *obj = Z_OBJ_P(container);
43941
- GC_ADDREF(obj);
43942
- dim = ZVAL_UNDEFINED_OP2();
43943
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
43944
- zend_objects_store_del(obj);
43945
- goto assign_dim_op_ret_null;
43946
- }
43943
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43947
43944
} else if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
43948
43945
dim++;
43949
43946
}
43950
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
43947
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
43951
43948
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
43952
43949
HashTable *ht;
43953
43950
zend_uchar old_type;
@@ -46837,19 +46834,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_CV_UNUSED_H
46837
46834
}
46838
46835
46839
46836
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
46837
+ zend_object *obj = Z_OBJ_P(container);
46838
+
46840
46839
dim = NULL;
46841
46840
if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
46842
- zend_object *obj = Z_OBJ_P(container);
46843
- GC_ADDREF(obj);
46844
- dim = ZVAL_UNDEFINED_OP2();
46845
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
46846
- zend_objects_store_del(obj);
46847
- goto assign_dim_op_ret_null;
46848
- }
46841
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46849
46842
} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
46850
46843
dim++;
46851
46844
}
46852
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
46845
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
46853
46846
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
46854
46847
HashTable *ht;
46855
46848
zend_uchar old_type;
@@ -49234,19 +49227,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_CV_CV_HANDL
49234
49227
}
49235
49228
49236
49229
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
49230
+ zend_object *obj = Z_OBJ_P(container);
49231
+
49237
49232
dim = EX_VAR(opline->op2.var);
49238
49233
if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
49239
- zend_object *obj = Z_OBJ_P(container);
49240
- GC_ADDREF(obj);
49241
- dim = ZVAL_UNDEFINED_OP2();
49242
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
49243
- zend_objects_store_del(obj);
49244
- goto assign_dim_op_ret_null;
49245
- }
49234
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49246
49235
} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
49247
49236
dim++;
49248
49237
}
49249
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
49238
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
49250
49239
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
49251
49240
HashTable *ht;
49252
49241
zend_uchar old_type;
0 commit comments