@@ -727,6 +727,19 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_bw_xor_helpe
727
727
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
728
728
}
729
729
730
+ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_bw_not_helper_SPEC(zval *op_1 ZEND_OPCODE_HANDLER_ARGS_DC)
731
+ {
732
+ USE_OPLINE
733
+
734
+ SAVE_OPLINE();
735
+ if (UNEXPECTED(Z_TYPE_P(op_1) == IS_UNDEF)) {
736
+ op_1 = ZVAL_UNDEFINED_OP1();
737
+ }
738
+ bitwise_not_function(EX_VAR(opline->result.var), op_1);
739
+ FREE_OP(opline->op1_type, opline->op1.var);
740
+ ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
741
+ }
742
+
730
743
static zend_never_inline ZEND_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
731
744
{
732
745
USE_OPLINE
@@ -3201,13 +3214,7 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_NOT_SPEC_CONST
3201
3214
ZEND_VM_NEXT_OPCODE();
3202
3215
}
3203
3216
3204
- SAVE_OPLINE();
3205
- if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
3206
- op1 = ZVAL_UNDEFINED_OP1();
3207
- }
3208
- bitwise_not_function(EX_VAR(opline->result.var), op1);
3209
-
3210
- ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3217
+ ZEND_VM_TAIL_CALL(zend_bw_not_helper_SPEC(op1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
3211
3218
}
3212
3219
3213
3220
static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
@@ -10733,6 +10740,20 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CV_HANDLER(ZE
10733
10740
ZEND_VM_RETURN();
10734
10741
}
10735
10742
10743
+ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_NOT_SPEC_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10744
+ {
10745
+ USE_OPLINE
10746
+ zval *op1;
10747
+
10748
+ op1 = EX_VAR(opline->op1.var);
10749
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
10750
+ ZVAL_LONG(EX_VAR(opline->result.var), ~Z_LVAL_P(op1));
10751
+ ZEND_VM_NEXT_OPCODE();
10752
+ }
10753
+
10754
+ ZEND_VM_TAIL_CALL(zend_bw_not_helper_SPEC(op1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
10755
+ }
10756
+
10736
10757
static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10737
10758
{
10738
10759
USE_OPLINE
@@ -11217,7 +11238,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUA
11217
11238
ZEND_VM_TAIL_CALL(zend_is_smaller_or_equal_helper_SPEC(op1, op2 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
11218
11239
}
11219
11240
11220
- static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11241
+ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11221
11242
{
11222
11243
USE_OPLINE
11223
11244
zval *op1, *op2;
@@ -11235,7 +11256,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_TMPVARCV_CONST_HAND
11235
11256
ZEND_VM_TAIL_CALL(zend_bw_or_helper_SPEC(op1, op2 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
11236
11257
}
11237
11258
11238
- static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11259
+ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11239
11260
{
11240
11261
USE_OPLINE
11241
11262
zval *op1, *op2;
@@ -11253,7 +11274,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_TMPVARCV_CONST_HAN
11253
11274
ZEND_VM_TAIL_CALL(zend_bw_and_helper_SPEC(op1, op2 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
11254
11275
}
11255
11276
11256
- static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11277
+ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11257
11278
{
11258
11279
USE_OPLINE
11259
11280
zval *op1, *op2;
@@ -12196,7 +12217,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUA
12196
12217
ZEND_VM_TAIL_CALL(zend_is_smaller_or_equal_helper_SPEC(op1, op2 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
12197
12218
}
12198
12219
12199
- static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12220
+ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12200
12221
{
12201
12222
USE_OPLINE
12202
12223
zval *op1, *op2;
@@ -12214,7 +12235,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_TMPVARCV_TMPVARCV_H
12214
12235
ZEND_VM_TAIL_CALL(zend_bw_or_helper_SPEC(op1, op2 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
12215
12236
}
12216
12237
12217
- static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12238
+ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12218
12239
{
12219
12240
USE_OPLINE
12220
12241
zval *op1, *op2;
@@ -12232,7 +12253,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_TMPVARCV_TMPVARCV_
12232
12253
ZEND_VM_TAIL_CALL(zend_bw_and_helper_SPEC(op1, op2 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
12233
12254
}
12234
12255
12235
- static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12256
+ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12236
12257
{
12237
12258
USE_OPLINE
12238
12259
zval *op1, *op2;
@@ -12672,26 +12693,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_
12672
12693
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12673
12694
}
12674
12695
12675
- static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_NOT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12676
- {
12677
- USE_OPLINE
12678
- zval *op1;
12679
-
12680
- op1 = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
12681
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
12682
- ZVAL_LONG(EX_VAR(opline->result.var), ~Z_LVAL_P(op1));
12683
- ZEND_VM_NEXT_OPCODE();
12684
- }
12685
-
12686
- SAVE_OPLINE();
12687
- if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
12688
- op1 = ZVAL_UNDEFINED_OP1();
12689
- }
12690
- bitwise_not_function(EX_VAR(opline->result.var), op1);
12691
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
12692
- ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12693
- }
12694
-
12695
12696
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12696
12697
{
12697
12698
USE_OPLINE
@@ -35127,26 +35128,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_CV_HANDLER(Z
35127
35128
ZEND_VM_RETURN();
35128
35129
}
35129
35130
35130
- static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35131
- {
35132
- USE_OPLINE
35133
- zval *op1;
35134
-
35135
- op1 = EX_VAR(opline->op1.var);
35136
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
35137
- ZVAL_LONG(EX_VAR(opline->result.var), ~Z_LVAL_P(op1));
35138
- ZEND_VM_NEXT_OPCODE();
35139
- }
35140
-
35141
- SAVE_OPLINE();
35142
- if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
35143
- op1 = ZVAL_UNDEFINED_OP1();
35144
- }
35145
- bitwise_not_function(EX_VAR(opline->result.var), op1);
35146
-
35147
- ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35148
- }
35149
-
35150
35131
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35151
35132
{
35152
35133
USE_OPLINE
@@ -48793,10 +48774,10 @@ ZEND_API void execute_ex(zend_execute_data *ex)
48793
48774
(void*)&&ZEND_NULL_LABEL,
48794
48775
(void*)&&ZEND_POW_SPEC_CV_CV_LABEL,
48795
48776
(void*)&&ZEND_BW_NOT_SPEC_CONST_LABEL,
48796
- (void*)&&ZEND_BW_NOT_SPEC_TMPVAR_LABEL ,
48797
- (void*)&&ZEND_BW_NOT_SPEC_TMPVAR_LABEL ,
48777
+ (void*)&&ZEND_BW_NOT_SPEC_TMPVARCV_LABEL ,
48778
+ (void*)&&ZEND_BW_NOT_SPEC_TMPVARCV_LABEL ,
48798
48779
(void*)&&ZEND_NULL_LABEL,
48799
- (void*)&&ZEND_BW_NOT_SPEC_CV_LABEL ,
48780
+ (void*)&&ZEND_BW_NOT_SPEC_TMPVARCV_LABEL ,
48800
48781
(void*)&&ZEND_BOOL_NOT_SPEC_CONST_LABEL,
48801
48782
(void*)&&ZEND_BOOL_NOT_SPEC_TMPVAR_LABEL,
48802
48783
(void*)&&ZEND_BOOL_NOT_SPEC_TMPVAR_LABEL,
@@ -52814,6 +52795,10 @@ ZEND_API void execute_ex(zend_execute_data *ex)
52814
52795
VM_TRACE(ZEND_YIELD_SPEC_CONST_CV)
52815
52796
ZEND_YIELD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
52816
52797
HYBRID_BREAK();
52798
+ HYBRID_CASE(ZEND_BW_NOT_SPEC_TMPVARCV):
52799
+ VM_TRACE(ZEND_BW_NOT_SPEC_TMPVARCV)
52800
+ ZEND_BW_NOT_SPEC_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
52801
+ HYBRID_BREAK();
52817
52802
HYBRID_CASE(ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV):
52818
52803
VM_TRACE(ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV)
52819
52804
ZEND_QM_ASSIGN_LONG_SPEC_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -53230,10 +53215,6 @@ ZEND_API void execute_ex(zend_execute_data *ex)
53230
53215
VM_TRACE(ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV)
53231
53216
ZEND_FETCH_LIST_R_SPEC_TMPVARCV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
53232
53217
HYBRID_BREAK();
53233
- HYBRID_CASE(ZEND_BW_NOT_SPEC_TMPVAR):
53234
- VM_TRACE(ZEND_BW_NOT_SPEC_TMPVAR)
53235
- ZEND_BW_NOT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
53236
- HYBRID_BREAK();
53237
53218
HYBRID_CASE(ZEND_BOOL_NOT_SPEC_TMPVAR):
53238
53219
VM_TRACE(ZEND_BOOL_NOT_SPEC_TMPVAR)
53239
53220
ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -54880,10 +54861,6 @@ ZEND_API void execute_ex(zend_execute_data *ex)
54880
54861
VM_TRACE(ZEND_YIELD_SPEC_UNUSED_CV)
54881
54862
ZEND_YIELD_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
54882
54863
HYBRID_BREAK();
54883
- HYBRID_CASE(ZEND_BW_NOT_SPEC_CV):
54884
- VM_TRACE(ZEND_BW_NOT_SPEC_CV)
54885
- ZEND_BW_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
54886
- HYBRID_BREAK();
54887
54864
HYBRID_CASE(ZEND_BOOL_NOT_SPEC_CV):
54888
54865
VM_TRACE(ZEND_BOOL_NOT_SPEC_CV)
54889
54866
ZEND_BOOL_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -56329,10 +56306,10 @@ void zend_vm_init(void)
56329
56306
ZEND_NULL_HANDLER,
56330
56307
ZEND_POW_SPEC_CV_CV_HANDLER,
56331
56308
ZEND_BW_NOT_SPEC_CONST_HANDLER,
56332
- ZEND_BW_NOT_SPEC_TMPVAR_HANDLER ,
56333
- ZEND_BW_NOT_SPEC_TMPVAR_HANDLER ,
56309
+ ZEND_BW_NOT_SPEC_TMPVARCV_HANDLER ,
56310
+ ZEND_BW_NOT_SPEC_TMPVARCV_HANDLER ,
56334
56311
ZEND_NULL_HANDLER,
56335
- ZEND_BW_NOT_SPEC_CV_HANDLER ,
56312
+ ZEND_BW_NOT_SPEC_TMPVARCV_HANDLER ,
56336
56313
ZEND_BOOL_NOT_SPEC_CONST_HANDLER,
56337
56314
ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER,
56338
56315
ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER,
0 commit comments