mirror of
https://github.com/python/cpython.git
synced 2025-10-19 16:03:42 +00:00
gh-132732: Clear errors in JIT optimizer on error (GH-136048)
This commit is contained in:
parent
26cfb17942
commit
46f823bb81
1 changed files with 10 additions and 3 deletions
|
@ -462,7 +462,7 @@ const uint16_t op_without_decref_inputs[MAX_UOP_ID + 1] = {
|
|||
[_BINARY_OP_SUBTRACT_FLOAT] = _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS,
|
||||
};
|
||||
|
||||
/* 1 for success, 0 for not ready, cannot error at the moment. */
|
||||
/* >0 (length) for success, 0 for not ready, clears all possible errors. */
|
||||
static int
|
||||
optimize_uops(
|
||||
PyCodeObject *co,
|
||||
|
@ -472,6 +472,7 @@ optimize_uops(
|
|||
_PyBloomFilter *dependencies
|
||||
)
|
||||
{
|
||||
assert(!PyErr_Occurred());
|
||||
|
||||
JitOptContext context;
|
||||
JitOptContext *ctx = &context;
|
||||
|
@ -555,7 +556,11 @@ optimize_uops(
|
|||
OPT_ERROR_IN_OPCODE(opcode);
|
||||
}
|
||||
_Py_uop_abstractcontext_fini(ctx);
|
||||
return -1;
|
||||
|
||||
assert(PyErr_Occurred());
|
||||
PyErr_Clear();
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
@ -702,10 +707,12 @@ _Py_uop_analyze_and_optimize(
|
|||
_PyFrame_GetCode(frame), buffer,
|
||||
length, curr_stacklen, dependencies);
|
||||
|
||||
if (length <= 0) {
|
||||
if (length == 0) {
|
||||
return length;
|
||||
}
|
||||
|
||||
assert(length > 0);
|
||||
|
||||
length = remove_unneeded_uops(buffer, length);
|
||||
assert(length > 0);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue