mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
bpo-44581: Don't execute quickened instructions if tracing is on (GH-27064)
This commit is contained in:
parent
a3739b207a
commit
514f76bbac
1 changed files with 9 additions and 1 deletions
|
@ -1623,7 +1623,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
|
||||||
JUMPTO(f->f_lasti);
|
JUMPTO(f->f_lasti);
|
||||||
stack_pointer = f->f_valuestack+f->f_stackdepth;
|
stack_pointer = f->f_valuestack+f->f_stackdepth;
|
||||||
f->f_stackdepth = -1;
|
f->f_stackdepth = -1;
|
||||||
NEXTOPARG();
|
TRACING_NEXTOPARG();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2853,6 +2853,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
|
||||||
}
|
}
|
||||||
|
|
||||||
case TARGET(LOAD_GLOBAL_ADAPTIVE): {
|
case TARGET(LOAD_GLOBAL_ADAPTIVE): {
|
||||||
|
assert(cframe.use_tracing == 0);
|
||||||
SpecializedCacheEntry *cache = GET_CACHE();
|
SpecializedCacheEntry *cache = GET_CACHE();
|
||||||
if (cache->adaptive.counter == 0) {
|
if (cache->adaptive.counter == 0) {
|
||||||
PyObject *name = GETITEM(names, cache->adaptive.original_oparg);
|
PyObject *name = GETITEM(names, cache->adaptive.original_oparg);
|
||||||
|
@ -2871,6 +2872,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
|
||||||
}
|
}
|
||||||
|
|
||||||
case TARGET(LOAD_GLOBAL_MODULE): {
|
case TARGET(LOAD_GLOBAL_MODULE): {
|
||||||
|
assert(cframe.use_tracing == 0);
|
||||||
DEOPT_IF(!PyDict_CheckExact(GLOBALS()), LOAD_GLOBAL);
|
DEOPT_IF(!PyDict_CheckExact(GLOBALS()), LOAD_GLOBAL);
|
||||||
PyDictObject *dict = (PyDictObject *)GLOBALS();
|
PyDictObject *dict = (PyDictObject *)GLOBALS();
|
||||||
SpecializedCacheEntry *caches = GET_CACHE();
|
SpecializedCacheEntry *caches = GET_CACHE();
|
||||||
|
@ -2888,6 +2890,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
|
||||||
}
|
}
|
||||||
|
|
||||||
case TARGET(LOAD_GLOBAL_BUILTIN): {
|
case TARGET(LOAD_GLOBAL_BUILTIN): {
|
||||||
|
assert(cframe.use_tracing == 0);
|
||||||
DEOPT_IF(!PyDict_CheckExact(GLOBALS()), LOAD_GLOBAL);
|
DEOPT_IF(!PyDict_CheckExact(GLOBALS()), LOAD_GLOBAL);
|
||||||
DEOPT_IF(!PyDict_CheckExact(BUILTINS()), LOAD_GLOBAL);
|
DEOPT_IF(!PyDict_CheckExact(BUILTINS()), LOAD_GLOBAL);
|
||||||
PyDictObject *mdict = (PyDictObject *)GLOBALS();
|
PyDictObject *mdict = (PyDictObject *)GLOBALS();
|
||||||
|
@ -3286,6 +3289,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
|
||||||
}
|
}
|
||||||
|
|
||||||
case TARGET(LOAD_ATTR_ADAPTIVE): {
|
case TARGET(LOAD_ATTR_ADAPTIVE): {
|
||||||
|
assert(cframe.use_tracing == 0);
|
||||||
SpecializedCacheEntry *cache = GET_CACHE();
|
SpecializedCacheEntry *cache = GET_CACHE();
|
||||||
if (cache->adaptive.counter == 0) {
|
if (cache->adaptive.counter == 0) {
|
||||||
PyObject *owner = TOP();
|
PyObject *owner = TOP();
|
||||||
|
@ -3305,6 +3309,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
|
||||||
}
|
}
|
||||||
|
|
||||||
case TARGET(LOAD_ATTR_SPLIT_KEYS): {
|
case TARGET(LOAD_ATTR_SPLIT_KEYS): {
|
||||||
|
assert(cframe.use_tracing == 0);
|
||||||
PyObject *owner = TOP();
|
PyObject *owner = TOP();
|
||||||
PyObject *res;
|
PyObject *res;
|
||||||
PyTypeObject *tp = Py_TYPE(owner);
|
PyTypeObject *tp = Py_TYPE(owner);
|
||||||
|
@ -3329,6 +3334,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
|
||||||
}
|
}
|
||||||
|
|
||||||
case TARGET(LOAD_ATTR_MODULE): {
|
case TARGET(LOAD_ATTR_MODULE): {
|
||||||
|
assert(cframe.use_tracing == 0);
|
||||||
PyObject *owner = TOP();
|
PyObject *owner = TOP();
|
||||||
PyObject *res;
|
PyObject *res;
|
||||||
SpecializedCacheEntry *caches = GET_CACHE();
|
SpecializedCacheEntry *caches = GET_CACHE();
|
||||||
|
@ -3352,6 +3358,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
|
||||||
}
|
}
|
||||||
|
|
||||||
case TARGET(LOAD_ATTR_WITH_HINT): {
|
case TARGET(LOAD_ATTR_WITH_HINT): {
|
||||||
|
assert(cframe.use_tracing == 0);
|
||||||
PyObject *owner = TOP();
|
PyObject *owner = TOP();
|
||||||
PyObject *res;
|
PyObject *res;
|
||||||
PyTypeObject *tp = Py_TYPE(owner);
|
PyTypeObject *tp = Py_TYPE(owner);
|
||||||
|
@ -3380,6 +3387,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
|
||||||
}
|
}
|
||||||
|
|
||||||
case TARGET(LOAD_ATTR_SLOT): {
|
case TARGET(LOAD_ATTR_SLOT): {
|
||||||
|
assert(cframe.use_tracing == 0);
|
||||||
PyObject *owner = TOP();
|
PyObject *owner = TOP();
|
||||||
PyObject *res;
|
PyObject *res;
|
||||||
PyTypeObject *tp = Py_TYPE(owner);
|
PyTypeObject *tp = Py_TYPE(owner);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue