@@ -387,7 +387,7 @@ typedef ZEND_OPCODE_HANDLER_RET (ZEND_FASTCALL *opcode_handler_t) (ZEND_OPCODE_H
387
387
#define HANDLE_EXCEPTION() LOAD_OPLINE(); ZEND_VM_CONTINUE()
388
388
#define HANDLE_EXCEPTION_LEAVE() LOAD_OPLINE(); ZEND_VM_LEAVE()
389
389
#if defined(ZEND_VM_FP_GLOBAL_REG)
390
- # define ZEND_VM_ENTER() execute_data = EG(current_execute_data); LOAD_OPLINE(); ZEND_VM_CONTINUE()
390
+ # define ZEND_VM_ENTER() execute_data = EG(current_execute_data); LOAD_OPLINE(); ZEND_VM_INTERRUPT_CHECK(); ZEND_VM_CONTINUE()
391
391
# define ZEND_VM_LEAVE() ZEND_VM_CONTINUE()
392
392
#elif defined(ZEND_VM_IP_GLOBAL_REG)
393
393
# define ZEND_VM_ENTER() opline = EG(current_execute_data)->opline; return 1
@@ -415,6 +415,7 @@ ZEND_API void execute_ex(zend_execute_data *ex)
415
415
416
416
417
417
LOAD_OPLINE();
418
+ ZEND_VM_INTERRUPT_CHECK();
418
419
419
420
while (1) {
420
421
#if !defined(ZEND_VM_FP_GLOBAL_REG) || !defined(ZEND_VM_IP_GLOBAL_REG)
@@ -435,6 +436,7 @@ ZEND_API void execute_ex(zend_execute_data *ex)
435
436
#else
436
437
if (EXPECTED(ret > 0)) {
437
438
execute_data = EG(current_execute_data);
439
+ ZEND_VM_INTERRUPT_CHECK();
438
440
} else {
439
441
# ifdef ZEND_VM_IP_GLOBAL_REG
440
442
opline = orig_opline;
@@ -638,8 +640,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HA
638
640
HANDLE_EXCEPTION();
639
641
}
640
642
641
- ZEND_VM_INTERRUPT_CHECK( );
642
- ZEND_VM_NEXT_OPCODE ();
643
+ ZEND_VM_SET_OPCODE(opline + 1 );
644
+ ZEND_VM_CONTINUE ();
643
645
}
644
646
645
647
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
@@ -685,8 +687,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_ICALL_SPEC_RETVAL_USED_HAND
685
687
HANDLE_EXCEPTION();
686
688
}
687
689
688
- ZEND_VM_INTERRUPT_CHECK( );
689
- ZEND_VM_NEXT_OPCODE ();
690
+ ZEND_VM_SET_OPCODE(opline + 1 );
691
+ ZEND_VM_CONTINUE ();
690
692
}
691
693
692
694
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
@@ -826,8 +828,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_U
826
828
}
827
829
HANDLE_EXCEPTION();
828
830
}
829
- ZEND_VM_INTERRUPT_CHECK( );
830
- ZEND_VM_NEXT_OPCODE ();
831
+ ZEND_VM_SET_OPCODE(opline + 1 );
832
+ ZEND_VM_CONTINUE ();
831
833
}
832
834
833
835
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
@@ -919,8 +921,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_U
919
921
}
920
922
HANDLE_EXCEPTION();
921
923
}
922
- ZEND_VM_INTERRUPT_CHECK( );
923
- ZEND_VM_NEXT_OPCODE ();
924
+ ZEND_VM_SET_OPCODE(opline + 1 );
925
+ ZEND_VM_CONTINUE ();
924
926
}
925
927
926
928
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
@@ -1079,8 +1081,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HA
1079
1081
HANDLE_EXCEPTION();
1080
1082
}
1081
1083
1082
- ZEND_VM_INTERRUPT_CHECK( );
1083
- ZEND_VM_NEXT_OPCODE ();
1084
+ ZEND_VM_SET_OPCODE(opline + 1 );
1085
+ ZEND_VM_CONTINUE ();
1084
1086
}
1085
1087
1086
1088
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
@@ -1239,8 +1241,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_USED_HAND
1239
1241
HANDLE_EXCEPTION();
1240
1242
}
1241
1243
1242
- ZEND_VM_INTERRUPT_CHECK( );
1243
- ZEND_VM_NEXT_OPCODE ();
1244
+ ZEND_VM_SET_OPCODE(opline + 1 );
1245
+ ZEND_VM_CONTINUE ();
1244
1246
}
1245
1247
1246
1248
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_UNPACK_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
@@ -1725,8 +1727,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(
1725
1727
uint32_t catch_op_num = 0, finally_op_num = 0, finally_op_end = 0;
1726
1728
int in_finally = 0;
1727
1729
1728
- ZEND_VM_INTERRUPT_CHECK();
1729
-
1730
1730
{
1731
1731
const zend_op *exc_opline = EG(opline_before_exception);
1732
1732
if ((exc_opline->opcode == ZEND_FREE || exc_opline->opcode == ZEND_FE_FREE)
@@ -1876,10 +1876,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_RET_SPEC_HANDLER(ZEND_OPC
1876
1876
1877
1877
if (fast_call->u2.lineno != (uint32_t)-1) {
1878
1878
const zend_op *fast_ret = EX(func)->op_array.opcodes + fast_call->u2.lineno;
1879
- ZEND_VM_SET_OPCODE(fast_ret + 1);
1880
1879
if (fast_ret->extended_value & ZEND_FAST_CALL_FROM_FINALLY) {
1881
1880
fast_call->u2.lineno = EX(func)->op_array.try_catch_array[fast_ret->op2.num].finally_op - 2;
1882
1881
}
1882
+ ZEND_VM_SET_OPCODE(fast_ret + 1);
1883
1883
ZEND_VM_CONTINUE();
1884
1884
} else {
1885
1885
/* special case for unhandled exceptions */
@@ -3457,8 +3457,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HAN
3457
3457
} else if (RETURN_VALUE_USED(opline)) {
3458
3458
ZVAL_FALSE(EX_VAR(opline->result.var));
3459
3459
}
3460
- ZEND_VM_INTERRUPT_CHECK( );
3461
- ZEND_VM_NEXT_OPCODE ();
3460
+ ZEND_VM_SET_OPCODE(opline + 1 );
3461
+ ZEND_VM_CONTINUE ();
3462
3462
}
3463
3463
3464
3464
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
@@ -35529,8 +35529,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLE
35529
35529
} else if (RETURN_VALUE_USED(opline)) {
35530
35530
ZVAL_FALSE(EX_VAR(opline->result.var));
35531
35531
}
35532
- ZEND_VM_INTERRUPT_CHECK( );
35533
- ZEND_VM_NEXT_OPCODE ();
35532
+ ZEND_VM_SET_OPCODE(opline + 1 );
35533
+ ZEND_VM_CONTINUE ();
35534
35534
}
35535
35535
35536
35536
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
@@ -50276,8 +50276,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HA
50276
50276
} else if (RETURN_VALUE_USED(opline)) {
50277
50277
ZVAL_FALSE(EX_VAR(opline->result.var));
50278
50278
}
50279
- ZEND_VM_INTERRUPT_CHECK( );
50280
- ZEND_VM_NEXT_OPCODE ();
50279
+ ZEND_VM_SET_OPCODE(opline + 1 );
50280
+ ZEND_VM_CONTINUE ();
50281
50281
}
50282
50282
50283
50283
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXIT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
0 commit comments