mirror of
https://github.com/python/cpython.git
synced 2026-04-20 02:40:59 +00:00
gh-131798: Add _IS_NONE to the JIT optimizer (GH-148369)
This commit is contained in:
parent
1c89817f51
commit
a059e85866
3 changed files with 37 additions and 1 deletions
|
|
@ -724,6 +724,16 @@ dummy_func(void) {
|
|||
r = right;
|
||||
}
|
||||
|
||||
op(_IS_NONE, (value -- b)) {
|
||||
if (sym_is_const(ctx, value)) {
|
||||
PyObject *value_o = sym_get_const(ctx, value);
|
||||
b = sym_new_const(ctx, Py_IsNone(value_o) ? Py_True : Py_False);
|
||||
}
|
||||
else {
|
||||
b = sym_new_type(ctx, &PyBool_Type);
|
||||
}
|
||||
}
|
||||
|
||||
op(_CONTAINS_OP, (left, right -- b, l, r)) {
|
||||
b = sym_new_type(ctx, &PyBool_Type);
|
||||
l = left;
|
||||
|
|
|
|||
10
Python/optimizer_cases.c.h
generated
10
Python/optimizer_cases.c.h
generated
|
|
@ -3193,8 +3193,16 @@
|
|||
/* _POP_JUMP_IF_TRUE is not a viable micro-op for tier 2 */
|
||||
|
||||
case _IS_NONE: {
|
||||
JitOptRef value;
|
||||
JitOptRef b;
|
||||
b = sym_new_not_null(ctx);
|
||||
value = stack_pointer[-1];
|
||||
if (sym_is_const(ctx, value)) {
|
||||
PyObject *value_o = sym_get_const(ctx, value);
|
||||
b = sym_new_const(ctx, Py_IsNone(value_o) ? Py_True : Py_False);
|
||||
}
|
||||
else {
|
||||
b = sym_new_type(ctx, &PyBool_Type);
|
||||
}
|
||||
stack_pointer[-1] = b;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue