|
rdobuilder |
0a9e34 |
From caadf3fbbdc89528c1f4833c6cbb153a9de4fd0c Mon Sep 17 00:00:00 2001
|
|
rdobuilder |
0a9e34 |
From: =?UTF-8?q?S=C3=BCmer=20Cip?= <sumer.cip@platform.sh>
|
|
rdobuilder |
0a9e34 |
Date: Thu, 18 Aug 2022 15:14:08 +0300
|
|
rdobuilder |
0a9e34 |
Subject: [PATCH 07/11] Fix IS_SUSPENDED() call to use
|
|
rdobuilder |
0a9e34 |
PyFrame_GetGenerator()->gi_frame_state
|
|
rdobuilder |
0a9e34 |
|
|
rdobuilder |
0a9e34 |
---
|
|
rdobuilder |
0a9e34 |
yappi/_yappi.c | 19 ++++++++++---------
|
|
rdobuilder |
0a9e34 |
1 file changed, 10 insertions(+), 9 deletions(-)
|
|
rdobuilder |
0a9e34 |
|
|
rdobuilder |
0a9e34 |
diff --git a/yappi/_yappi.c b/yappi/_yappi.c
|
|
rdobuilder |
0a9e34 |
index 641cc84..88236ee 100644
|
|
rdobuilder |
0a9e34 |
--- a/yappi/_yappi.c
|
|
rdobuilder |
0a9e34 |
+++ b/yappi/_yappi.c
|
|
rdobuilder |
0a9e34 |
@@ -25,10 +25,6 @@
|
|
rdobuilder |
0a9e34 |
#include "mem.h"
|
|
rdobuilder |
0a9e34 |
#include "tls.h"
|
|
rdobuilder |
0a9e34 |
|
|
rdobuilder |
0a9e34 |
-#if PY_VERSION_HEX > 0x030b0000
|
|
rdobuilder |
0a9e34 |
-#include "internal/pycore_code.h"
|
|
rdobuilder |
0a9e34 |
-#endif
|
|
rdobuilder |
0a9e34 |
-
|
|
rdobuilder |
0a9e34 |
#define SUPPRESS_WARNING(a) (void)a
|
|
rdobuilder |
0a9e34 |
|
|
rdobuilder |
0a9e34 |
#ifdef IS_PY3K
|
|
rdobuilder |
0a9e34 |
@@ -227,12 +223,17 @@ static void _DebugPrintObjects(unsigned int arg_count, ...)
|
|
rdobuilder |
0a9e34 |
}
|
|
rdobuilder |
0a9e34 |
|
|
rdobuilder |
0a9e34 |
int
|
|
rdobuilder |
0a9e34 |
-IS_SUSPENDED(PyFrameObject *frame)
|
|
rdobuilder |
0a9e34 |
-{
|
|
rdobuilder |
0a9e34 |
-#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 11
|
|
rdobuilder |
0a9e34 |
+IS_SUSPENDED(PyFrameObject *frame) {
|
|
rdobuilder |
0a9e34 |
+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION == 11
|
|
rdobuilder |
0a9e34 |
+ PyGenObject *gen = (PyGenObject *)PyFrame_GetGenerator(frame);
|
|
rdobuilder |
0a9e34 |
+ if (gen == NULL) {
|
|
rdobuilder |
0a9e34 |
+ return 0;
|
|
rdobuilder |
0a9e34 |
+ }
|
|
rdobuilder |
0a9e34 |
+
|
|
rdobuilder |
0a9e34 |
+ // -1 is FRAME_SUSPENDED. See internal/pycore_frame.h
|
|
rdobuilder |
0a9e34 |
+ // TODO: Remove these after 3.12 make necessary public APIs.
|
|
rdobuilder |
0a9e34 |
// See https://discuss.python.org/t/python-3-11-frame-structure-and-various-changes/17895
|
|
rdobuilder |
0a9e34 |
- // TODO: _PyFrame_GetGenerator(frame)->gi_frame_state ???
|
|
rdobuilder |
0a9e34 |
- return 1;
|
|
rdobuilder |
0a9e34 |
+ return gen->gi_frame_state == -1;
|
|
rdobuilder |
0a9e34 |
#elif PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION == 10
|
|
rdobuilder |
0a9e34 |
return (frame->f_state == FRAME_SUSPENDED);
|
|
rdobuilder |
0a9e34 |
#else
|
|
rdobuilder |
0a9e34 |
--
|
|
rdobuilder |
0a9e34 |
2.34.1
|
|
rdobuilder |
0a9e34 |
|