@@ -3941,61 +3941,70 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
3941
3941
3942
3942
TARGET (POP_JUMP_BACKWARD_IF_FALSE ) {
3943
3943
PREDICTED (POP_JUMP_BACKWARD_IF_FALSE );
3944
- oparg = - oparg ;
3945
- JUMP_TO_INSTRUCTION (POP_JUMP_FORWARD_IF_FALSE );
3946
- }
3947
-
3948
- TARGET (POP_JUMP_FORWARD_IF_FALSE ) {
3949
- PREDICTED (POP_JUMP_FORWARD_IF_FALSE );
3950
3944
PyObject * cond = POP ();
3951
- int err ;
3952
3945
if (Py_IsTrue (cond )) {
3953
3946
Py_DECREF (cond );
3954
3947
DISPATCH ();
3955
3948
}
3956
3949
if (Py_IsFalse (cond )) {
3957
3950
Py_DECREF (cond );
3958
- JUMPBY (oparg );
3951
+ JUMPBY (- oparg );
3959
3952
CHECK_EVAL_BREAKER ();
3960
3953
DISPATCH ();
3961
3954
}
3962
- err = PyObject_IsTrue (cond );
3955
+ int err = PyObject_IsTrue (cond );
3963
3956
Py_DECREF (cond );
3964
3957
if (err > 0 )
3965
3958
;
3966
3959
else if (err == 0 ) {
3967
- JUMPBY (oparg );
3960
+ JUMPBY (- oparg );
3968
3961
CHECK_EVAL_BREAKER ();
3969
3962
}
3970
3963
else
3971
3964
goto error ;
3972
3965
DISPATCH ();
3973
3966
}
3974
3967
3975
- TARGET (POP_JUMP_BACKWARD_IF_TRUE ) {
3976
- PREDICTED (POP_JUMP_BACKWARD_IF_TRUE );
3977
- oparg = - oparg ;
3978
- JUMP_TO_INSTRUCTION (POP_JUMP_FORWARD_IF_TRUE );
3968
+ TARGET (POP_JUMP_FORWARD_IF_FALSE ) {
3969
+ PREDICTED (POP_JUMP_FORWARD_IF_FALSE );
3970
+ PyObject * cond = POP ();
3971
+ if (Py_IsTrue (cond )) {
3972
+ Py_DECREF (cond );
3973
+ }
3974
+ else if (Py_IsFalse (cond )) {
3975
+ Py_DECREF (cond );
3976
+ JUMPBY (oparg );
3977
+ }
3978
+ else {
3979
+ int err = PyObject_IsTrue (cond );
3980
+ Py_DECREF (cond );
3981
+ if (err > 0 )
3982
+ ;
3983
+ else if (err == 0 ) {
3984
+ JUMPBY (oparg );
3985
+ }
3986
+ else
3987
+ goto error ;
3988
+ }
3989
+ DISPATCH ();
3979
3990
}
3980
3991
3981
- TARGET (POP_JUMP_FORWARD_IF_TRUE ) {
3982
- PREDICTED (POP_JUMP_FORWARD_IF_TRUE );
3992
+ TARGET (POP_JUMP_BACKWARD_IF_TRUE ) {
3983
3993
PyObject * cond = POP ();
3984
- int err ;
3985
3994
if (Py_IsFalse (cond )) {
3986
3995
Py_DECREF (cond );
3987
3996
DISPATCH ();
3988
3997
}
3989
3998
if (Py_IsTrue (cond )) {
3990
3999
Py_DECREF (cond );
3991
- JUMPBY (oparg );
4000
+ JUMPBY (- oparg );
3992
4001
CHECK_EVAL_BREAKER ();
3993
4002
DISPATCH ();
3994
4003
}
3995
- err = PyObject_IsTrue (cond );
4004
+ int err = PyObject_IsTrue (cond );
3996
4005
Py_DECREF (cond );
3997
4006
if (err > 0 ) {
3998
- JUMPBY (oparg );
4007
+ JUMPBY (- oparg );
3999
4008
CHECK_EVAL_BREAKER ();
4000
4009
}
4001
4010
else if (err == 0 )
@@ -4005,6 +4014,30 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
4005
4014
DISPATCH ();
4006
4015
}
4007
4016
4017
+ TARGET (POP_JUMP_FORWARD_IF_TRUE ) {
4018
+ PyObject * cond = POP ();
4019
+ if (Py_IsFalse (cond )) {
4020
+ Py_DECREF (cond );
4021
+ }
4022
+ else if (Py_IsTrue (cond )) {
4023
+ Py_DECREF (cond );
4024
+ JUMPBY (oparg );
4025
+ }
4026
+ else {
4027
+ int err = PyObject_IsTrue (cond );
4028
+ Py_DECREF (cond );
4029
+ if (err > 0 ) {
4030
+ JUMPBY (oparg );
4031
+ CHECK_EVAL_BREAKER ();
4032
+ }
4033
+ else if (err == 0 )
4034
+ ;
4035
+ else
4036
+ goto error ;
4037
+ }
4038
+ DISPATCH ();
4039
+ }
4040
+
4008
4041
TARGET (POP_JUMP_BACKWARD_IF_NOT_NONE ) {
4009
4042
PyObject * value = POP ();
4010
4043
if (!Py_IsNone (value )) {
0 commit comments