@@ -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
@@ -22445,19 +22466,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_VAR_CONST_H
22445
22466
}
22446
22467
22447
22468
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
22469
+ zend_object *obj = Z_OBJ_P(container);
22470
+
22448
22471
dim = RT_CONSTANT(opline, opline->op2);
22449
22472
if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
22450
- zend_object *obj = Z_OBJ_P(container);
22451
- GC_ADDREF(obj);
22452
- dim = ZVAL_UNDEFINED_OP2();
22453
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
22454
- zend_objects_store_del(obj);
22455
- goto assign_dim_op_ret_null;
22456
- }
22473
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22457
22474
} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
22458
22475
dim++;
22459
22476
}
22460
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
22477
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
22461
22478
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
22462
22479
HashTable *ht;
22463
22480
zend_uchar old_type;
@@ -25124,19 +25141,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_VAR_TMPVAR_
25124
25141
}
25125
25142
25126
25143
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
25144
+ zend_object *obj = Z_OBJ_P(container);
25145
+
25127
25146
dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC);
25128
25147
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
25129
- zend_object *obj = Z_OBJ_P(container);
25130
- GC_ADDREF(obj);
25131
- dim = ZVAL_UNDEFINED_OP2();
25132
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
25133
- zend_objects_store_del(obj);
25134
- goto assign_dim_op_ret_null;
25135
- }
25148
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
25136
25149
} else if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
25137
25150
dim++;
25138
25151
}
25139
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
25152
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
25140
25153
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
25141
25154
HashTable *ht;
25142
25155
zend_uchar old_type;
@@ -27441,19 +27454,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_VAR_UNUSED_
27441
27454
}
27442
27455
27443
27456
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
27457
+ zend_object *obj = Z_OBJ_P(container);
27458
+
27444
27459
dim = NULL;
27445
27460
if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
27446
- zend_object *obj = Z_OBJ_P(container);
27447
- GC_ADDREF(obj);
27448
- dim = ZVAL_UNDEFINED_OP2();
27449
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
27450
- zend_objects_store_del(obj);
27451
- goto assign_dim_op_ret_null;
27452
- }
27461
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27453
27462
} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
27454
27463
dim++;
27455
27464
}
27456
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
27465
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
27457
27466
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
27458
27467
HashTable *ht;
27459
27468
zend_uchar old_type;
@@ -29306,19 +29315,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_VAR_CV_HAND
29306
29315
}
29307
29316
29308
29317
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
29318
+ zend_object *obj = Z_OBJ_P(container);
29319
+
29309
29320
dim = EX_VAR(opline->op2.var);
29310
29321
if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
29311
- zend_object *obj = Z_OBJ_P(container);
29312
- GC_ADDREF(obj);
29313
- dim = ZVAL_UNDEFINED_OP2();
29314
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
29315
- zend_objects_store_del(obj);
29316
- goto assign_dim_op_ret_null;
29317
- }
29322
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29318
29323
} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
29319
29324
dim++;
29320
29325
}
29321
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
29326
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
29322
29327
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
29323
29328
HashTable *ht;
29324
29329
zend_uchar old_type;
@@ -40038,19 +40043,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_CV_CONST_HA
40038
40043
}
40039
40044
40040
40045
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
40046
+ zend_object *obj = Z_OBJ_P(container);
40047
+
40041
40048
dim = RT_CONSTANT(opline, opline->op2);
40042
40049
if (IS_CONST == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
40043
- zend_object *obj = Z_OBJ_P(container);
40044
- GC_ADDREF(obj);
40045
- dim = ZVAL_UNDEFINED_OP2();
40046
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
40047
- zend_objects_store_del(obj);
40048
- goto assign_dim_op_ret_null;
40049
- }
40050
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40050
40051
} else if (IS_CONST == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
40051
40052
dim++;
40052
40053
}
40053
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
40054
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
40054
40055
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
40055
40056
HashTable *ht;
40056
40057
zend_uchar old_type;
@@ -43796,19 +43797,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_CV_TMPVAR_H
43796
43797
}
43797
43798
43798
43799
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
43800
+ zend_object *obj = Z_OBJ_P(container);
43801
+
43799
43802
dim = _get_zval_ptr_var(opline->op2.var EXECUTE_DATA_CC);
43800
43803
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
43801
- zend_object *obj = Z_OBJ_P(container);
43802
- GC_ADDREF(obj);
43803
- dim = ZVAL_UNDEFINED_OP2();
43804
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
43805
- zend_objects_store_del(obj);
43806
- goto assign_dim_op_ret_null;
43807
- }
43804
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
43808
43805
} else if ((IS_TMP_VAR|IS_VAR) == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
43809
43806
dim++;
43810
43807
}
43811
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
43808
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
43812
43809
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
43813
43810
HashTable *ht;
43814
43811
zend_uchar old_type;
@@ -46689,19 +46686,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_CV_UNUSED_H
46689
46686
}
46690
46687
46691
46688
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
46689
+ zend_object *obj = Z_OBJ_P(container);
46690
+
46692
46691
dim = NULL;
46693
46692
if (IS_UNUSED == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
46694
- zend_object *obj = Z_OBJ_P(container);
46695
- GC_ADDREF(obj);
46696
- dim = ZVAL_UNDEFINED_OP2();
46697
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
46698
- zend_objects_store_del(obj);
46699
- goto assign_dim_op_ret_null;
46700
- }
46693
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46701
46694
} else if (IS_UNUSED == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
46702
46695
dim++;
46703
46696
}
46704
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
46697
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
46705
46698
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
46706
46699
HashTable *ht;
46707
46700
zend_uchar old_type;
@@ -49085,19 +49078,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_OP_SPEC_CV_CV_HANDL
49085
49078
}
49086
49079
49087
49080
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
49081
+ zend_object *obj = Z_OBJ_P(container);
49082
+
49088
49083
dim = EX_VAR(opline->op2.var);
49089
49084
if (IS_CV == IS_CV && UNEXPECTED(Z_ISUNDEF_P(dim))) {
49090
- zend_object *obj = Z_OBJ_P(container);
49091
- GC_ADDREF(obj);
49092
- dim = ZVAL_UNDEFINED_OP2();
49093
- if (UNEXPECTED(GC_DELREF(obj) == 0)) {
49094
- zend_objects_store_del(obj);
49095
- goto assign_dim_op_ret_null;
49096
- }
49085
+ ZEND_VM_TAIL_CALL(zend_assign_dim_op_obj_undef_helper_SPEC(obj ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49097
49086
} else if (IS_CV == IS_CONST && Z_EXTRA_P(dim) == ZEND_EXTRA_VALUE) {
49098
49087
dim++;
49099
49088
}
49100
- zend_binary_assign_op_obj_dim(container , dim OPLINE_CC EXECUTE_DATA_CC);
49089
+ zend_binary_assign_op_obj_dim(obj , dim OPLINE_CC EXECUTE_DATA_CC);
49101
49090
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
49102
49091
HashTable *ht;
49103
49092
zend_uchar old_type;
0 commit comments