Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 514f76b

Browse files
authored
bpo-44581: Don't execute quickened instructions if tracing is on (GH-27064)
1 parent a3739b2 commit 514f76b

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

Python/ceval.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1623,7 +1623,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
16231623
JUMPTO(f->f_lasti);
16241624
stack_pointer = f->f_valuestack+f->f_stackdepth;
16251625
f->f_stackdepth = -1;
1626-
NEXTOPARG();
1626+
TRACING_NEXTOPARG();
16271627
}
16281628
}
16291629

@@ -2853,6 +2853,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
28532853
}
28542854

28552855
case TARGET(LOAD_GLOBAL_ADAPTIVE): {
2856+
assert(cframe.use_tracing == 0);
28562857
SpecializedCacheEntry *cache = GET_CACHE();
28572858
if (cache->adaptive.counter == 0) {
28582859
PyObject *name = GETITEM(names, cache->adaptive.original_oparg);
@@ -2871,6 +2872,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
28712872
}
28722873

28732874
case TARGET(LOAD_GLOBAL_MODULE): {
2875+
assert(cframe.use_tracing == 0);
28742876
DEOPT_IF(!PyDict_CheckExact(GLOBALS()), LOAD_GLOBAL);
28752877
PyDictObject *dict = (PyDictObject *)GLOBALS();
28762878
SpecializedCacheEntry *caches = GET_CACHE();
@@ -2888,6 +2890,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
28882890
}
28892891

28902892
case TARGET(LOAD_GLOBAL_BUILTIN): {
2893+
assert(cframe.use_tracing == 0);
28912894
DEOPT_IF(!PyDict_CheckExact(GLOBALS()), LOAD_GLOBAL);
28922895
DEOPT_IF(!PyDict_CheckExact(BUILTINS()), LOAD_GLOBAL);
28932896
PyDictObject *mdict = (PyDictObject *)GLOBALS();
@@ -3286,6 +3289,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
32863289
}
32873290

32883291
case TARGET(LOAD_ATTR_ADAPTIVE): {
3292+
assert(cframe.use_tracing == 0);
32893293
SpecializedCacheEntry *cache = GET_CACHE();
32903294
if (cache->adaptive.counter == 0) {
32913295
PyObject *owner = TOP();
@@ -3305,6 +3309,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
33053309
}
33063310

33073311
case TARGET(LOAD_ATTR_SPLIT_KEYS): {
3312+
assert(cframe.use_tracing == 0);
33083313
PyObject *owner = TOP();
33093314
PyObject *res;
33103315
PyTypeObject *tp = Py_TYPE(owner);
@@ -3329,6 +3334,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
33293334
}
33303335

33313336
case TARGET(LOAD_ATTR_MODULE): {
3337+
assert(cframe.use_tracing == 0);
33323338
PyObject *owner = TOP();
33333339
PyObject *res;
33343340
SpecializedCacheEntry *caches = GET_CACHE();
@@ -3352,6 +3358,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
33523358
}
33533359

33543360
case TARGET(LOAD_ATTR_WITH_HINT): {
3361+
assert(cframe.use_tracing == 0);
33553362
PyObject *owner = TOP();
33563363
PyObject *res;
33573364
PyTypeObject *tp = Py_TYPE(owner);
@@ -3380,6 +3387,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag)
33803387
}
33813388

33823389
case TARGET(LOAD_ATTR_SLOT): {
3390+
assert(cframe.use_tracing == 0);
33833391
PyObject *owner = TOP();
33843392
PyObject *res;
33853393
PyTypeObject *tp = Py_TYPE(owner);

0 commit comments

Comments
 (0)