@@ -4864,10 +4864,24 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HAN
4864
4864
if (RETURN_VALUE_USED(opline)) {
4865
4865
ZVAL_TRUE(EX_VAR(opline->result.var));
4866
4866
}
4867
- } else if (EXPECTED(new_op_array != NULL)) {
4867
+ } else if (UNEXPECTED(new_op_array == NULL)) {
4868
+ if (RETURN_VALUE_USED(opline)) {
4869
+ ZVAL_FALSE(EX_VAR(opline->result.var));
4870
+ }
4871
+ } else if (new_op_array->last == 1
4872
+ && new_op_array->opcodes[0].opcode == ZEND_RETURN
4873
+ && new_op_array->opcodes[0].op1_type == IS_CONST) {
4874
+ if (RETURN_VALUE_USED(opline)) {
4875
+ const zend_op *op = new_op_array->opcodes;
4876
+
4877
+ ZVAL_COPY(EX_VAR(opline->result.var), RT_CONSTANT(op, op->op1));
4878
+ }
4879
+ zend_destroy_static_vars(new_op_array);
4880
+ destroy_op_array(new_op_array);
4881
+ efree_size(new_op_array, sizeof(zend_op_array));
4882
+ } else {
4868
4883
zval *return_value = NULL;
4869
4884
zend_execute_data *call;
4870
-
4871
4885
if (RETURN_VALUE_USED(opline)) {
4872
4886
return_value = EX_VAR(opline->result.var);
4873
4887
}
@@ -4906,8 +4920,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HAN
4906
4920
UNDEF_RESULT();
4907
4921
HANDLE_EXCEPTION();
4908
4922
}
4909
- } else if (RETURN_VALUE_USED(opline)) {
4910
- ZVAL_FALSE(EX_VAR(opline->result.var));
4911
4923
}
4912
4924
4913
4925
ZEND_VM_NEXT_OPCODE();
@@ -4934,10 +4946,24 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER_
4934
4946
if (RETURN_VALUE_USED(opline)) {
4935
4947
ZVAL_TRUE(EX_VAR(opline->result.var));
4936
4948
}
4937
- } else if (EXPECTED(new_op_array != NULL)) {
4949
+ } else if (UNEXPECTED(new_op_array == NULL)) {
4950
+ if (RETURN_VALUE_USED(opline)) {
4951
+ ZVAL_FALSE(EX_VAR(opline->result.var));
4952
+ }
4953
+ } else if (new_op_array->last == 1
4954
+ && new_op_array->opcodes[0].opcode == ZEND_RETURN
4955
+ && new_op_array->opcodes[0].op1_type == IS_CONST) {
4956
+ if (RETURN_VALUE_USED(opline)) {
4957
+ const zend_op *op = new_op_array->opcodes;
4958
+
4959
+ ZVAL_COPY(EX_VAR(opline->result.var), RT_CONSTANT(op, op->op1));
4960
+ }
4961
+ zend_destroy_static_vars(new_op_array);
4962
+ destroy_op_array(new_op_array);
4963
+ efree_size(new_op_array, sizeof(zend_op_array));
4964
+ } else {
4938
4965
zval *return_value = NULL;
4939
4966
zend_execute_data *call;
4940
-
4941
4967
if (RETURN_VALUE_USED(opline)) {
4942
4968
return_value = EX_VAR(opline->result.var);
4943
4969
}
@@ -4976,8 +5002,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_OBSERVER_
4976
5002
UNDEF_RESULT();
4977
5003
HANDLE_EXCEPTION();
4978
5004
}
4979
- } else if (RETURN_VALUE_USED(opline)) {
4980
- ZVAL_FALSE(EX_VAR(opline->result.var));
4981
5005
}
4982
5006
FREE_OP(opline->op1_type, opline->op1.var);
4983
5007
ZEND_VM_NEXT_OPCODE();
@@ -14502,10 +14526,24 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HA
14502
14526
if (RETURN_VALUE_USED(opline)) {
14503
14527
ZVAL_TRUE(EX_VAR(opline->result.var));
14504
14528
}
14505
- } else if (EXPECTED(new_op_array != NULL)) {
14529
+ } else if (UNEXPECTED(new_op_array == NULL)) {
14530
+ if (RETURN_VALUE_USED(opline)) {
14531
+ ZVAL_FALSE(EX_VAR(opline->result.var));
14532
+ }
14533
+ } else if (new_op_array->last == 1
14534
+ && new_op_array->opcodes[0].opcode == ZEND_RETURN
14535
+ && new_op_array->opcodes[0].op1_type == IS_CONST) {
14536
+ if (RETURN_VALUE_USED(opline)) {
14537
+ const zend_op *op = new_op_array->opcodes;
14538
+
14539
+ ZVAL_COPY(EX_VAR(opline->result.var), RT_CONSTANT(op, op->op1));
14540
+ }
14541
+ zend_destroy_static_vars(new_op_array);
14542
+ destroy_op_array(new_op_array);
14543
+ efree_size(new_op_array, sizeof(zend_op_array));
14544
+ } else {
14506
14545
zval *return_value = NULL;
14507
14546
zend_execute_data *call;
14508
-
14509
14547
if (RETURN_VALUE_USED(opline)) {
14510
14548
return_value = EX_VAR(opline->result.var);
14511
14549
}
@@ -14544,8 +14582,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HA
14544
14582
UNDEF_RESULT();
14545
14583
HANDLE_EXCEPTION();
14546
14584
}
14547
- } else if (RETURN_VALUE_USED(opline)) {
14548
- ZVAL_FALSE(EX_VAR(opline->result.var));
14549
14585
}
14550
14586
zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
14551
14587
ZEND_VM_NEXT_OPCODE();
@@ -38644,10 +38680,24 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLE
38644
38680
if (RETURN_VALUE_USED(opline)) {
38645
38681
ZVAL_TRUE(EX_VAR(opline->result.var));
38646
38682
}
38647
- } else if (EXPECTED(new_op_array != NULL)) {
38683
+ } else if (UNEXPECTED(new_op_array == NULL)) {
38684
+ if (RETURN_VALUE_USED(opline)) {
38685
+ ZVAL_FALSE(EX_VAR(opline->result.var));
38686
+ }
38687
+ } else if (new_op_array->last == 1
38688
+ && new_op_array->opcodes[0].opcode == ZEND_RETURN
38689
+ && new_op_array->opcodes[0].op1_type == IS_CONST) {
38690
+ if (RETURN_VALUE_USED(opline)) {
38691
+ const zend_op *op = new_op_array->opcodes;
38692
+
38693
+ ZVAL_COPY(EX_VAR(opline->result.var), RT_CONSTANT(op, op->op1));
38694
+ }
38695
+ zend_destroy_static_vars(new_op_array);
38696
+ destroy_op_array(new_op_array);
38697
+ efree_size(new_op_array, sizeof(zend_op_array));
38698
+ } else {
38648
38699
zval *return_value = NULL;
38649
38700
zend_execute_data *call;
38650
-
38651
38701
if (RETURN_VALUE_USED(opline)) {
38652
38702
return_value = EX_VAR(opline->result.var);
38653
38703
}
@@ -38686,8 +38736,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLE
38686
38736
UNDEF_RESULT();
38687
38737
HANDLE_EXCEPTION();
38688
38738
}
38689
- } else if (RETURN_VALUE_USED(opline)) {
38690
- ZVAL_FALSE(EX_VAR(opline->result.var));
38691
38739
}
38692
38740
38693
38741
ZEND_VM_NEXT_OPCODE();
0 commit comments