Blame SOURCES/0001-Change-frame-object-update-asyncio-tests.patch

rdobuilder 883d97
From e939a82ae8a1617a821547060e7a581492adda01 Mon Sep 17 00:00:00 2001
rdobuilder 883d97
From: =?UTF-8?q?S=C3=BCmer=20Cip?= <sumer.cip@platform.sh>
rdobuilder 883d97
Date: Tue, 2 Aug 2022 11:27:29 +0300
rdobuilder 883d97
Subject: [PATCH 01/11] Change frame object + update asyncio tests
rdobuilder 883d97
rdobuilder 883d97
---
rdobuilder 883d97
 tests/test_asyncio.py | 53 ++++++++++++++++++-------------------------
rdobuilder 883d97
 yappi/_yappi.c        | 21 +++++++++++++----
rdobuilder 883d97
 yappi/timing.c        |  3 +--
rdobuilder 883d97
 3 files changed, 39 insertions(+), 38 deletions(-)
rdobuilder 883d97
rdobuilder 883d97
diff --git a/tests/test_asyncio.py b/tests/test_asyncio.py
rdobuilder 883d97
index b547674..8e9e631 100644
rdobuilder 883d97
--- a/tests/test_asyncio.py
rdobuilder 883d97
+++ b/tests/test_asyncio.py
rdobuilder 883d97
@@ -5,20 +5,18 @@ import threading
rdobuilder 883d97
 from utils import YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io
rdobuilder 883d97
 
rdobuilder 883d97
 
rdobuilder 883d97
-@asyncio.coroutine
rdobuilder 883d97
-def async_sleep(sec):
rdobuilder 883d97
-    yield from asyncio.sleep(sec)
rdobuilder 883d97
+async def async_sleep(sec):
rdobuilder 883d97
+    await asyncio.sleep(sec)
rdobuilder 883d97
 
rdobuilder 883d97
 
rdobuilder 883d97
 class SingleThreadTests(YappiUnitTestCase):
rdobuilder 883d97
 
rdobuilder 883d97
     def test_issue58(self):
rdobuilder 883d97
 
rdobuilder 883d97
-        @asyncio.coroutine
rdobuilder 883d97
-        def mt(d):
rdobuilder 883d97
+        async def mt(d):
rdobuilder 883d97
             t = asyncio.Task(async_sleep(3 + d))
rdobuilder 883d97
-            yield from async_sleep(3)
rdobuilder 883d97
-            yield from t
rdobuilder 883d97
+            await async_sleep(3)
rdobuilder 883d97
+            await t
rdobuilder 883d97
 
rdobuilder 883d97
         yappi.set_clock_type('wall')
rdobuilder 883d97
 
rdobuilder 883d97
@@ -41,14 +39,13 @@ class SingleThreadTests(YappiUnitTestCase):
rdobuilder 883d97
 
rdobuilder 883d97
     def test_recursive_coroutine(self):
rdobuilder 883d97
 
rdobuilder 883d97
-        @asyncio.coroutine
rdobuilder 883d97
-        def a(n):
rdobuilder 883d97
+        async def a(n):
rdobuilder 883d97
             if n <= 0:
rdobuilder 883d97
                 return
rdobuilder 883d97
-            yield from async_sleep(0.1)
rdobuilder 883d97
+            await async_sleep(0.1)
rdobuilder 883d97
             burn_cpu(0.1)
rdobuilder 883d97
-            yield from a(n - 1)
rdobuilder 883d97
-            yield from a(n - 2)
rdobuilder 883d97
+            await a(n - 1)
rdobuilder 883d97
+            await a(n - 2)
rdobuilder 883d97
 
rdobuilder 883d97
         yappi.set_clock_type("cpu")
rdobuilder 883d97
         yappi.start()
rdobuilder 883d97
@@ -65,13 +62,12 @@ class SingleThreadTests(YappiUnitTestCase):
rdobuilder 883d97
 
rdobuilder 883d97
     def test_basic_old_style(self):
rdobuilder 883d97
 
rdobuilder 883d97
-        @asyncio.coroutine
rdobuilder 883d97
-        def a():
rdobuilder 883d97
-            yield from async_sleep(0.1)
rdobuilder 883d97
+        async def a():
rdobuilder 883d97
+            await async_sleep(0.1)
rdobuilder 883d97
             burn_io(0.1)
rdobuilder 883d97
-            yield from async_sleep(0.1)
rdobuilder 883d97
+            await async_sleep(0.1)
rdobuilder 883d97
             burn_io(0.1)
rdobuilder 883d97
-            yield from async_sleep(0.1)
rdobuilder 883d97
+            await async_sleep(0.1)
rdobuilder 883d97
             burn_cpu(0.3)
rdobuilder 883d97
 
rdobuilder 883d97
         yappi.set_clock_type("wall")
rdobuilder 883d97
@@ -111,22 +107,19 @@ class MultiThreadTests(YappiUnitTestCase):
rdobuilder 883d97
 
rdobuilder 883d97
     def test_basic(self):
rdobuilder 883d97
 
rdobuilder 883d97
-        @asyncio.coroutine
rdobuilder 883d97
-        def a():
rdobuilder 883d97
-            yield from async_sleep(0.3)
rdobuilder 883d97
+        async def a():
rdobuilder 883d97
+            await async_sleep(0.3)
rdobuilder 883d97
             burn_cpu(0.4)
rdobuilder 883d97
 
rdobuilder 883d97
-        @asyncio.coroutine
rdobuilder 883d97
-        def b():
rdobuilder 883d97
-            yield from a()
rdobuilder 883d97
+        async def b():
rdobuilder 883d97
+            await a()
rdobuilder 883d97
 
rdobuilder 883d97
-        @asyncio.coroutine
rdobuilder 883d97
-        def recursive_a(n):
rdobuilder 883d97
+        async def recursive_a(n):
rdobuilder 883d97
             if not n:
rdobuilder 883d97
                 return
rdobuilder 883d97
             burn_io(0.3)
rdobuilder 883d97
-            yield from async_sleep(0.3)
rdobuilder 883d97
-            yield from recursive_a(n - 1)
rdobuilder 883d97
+            await async_sleep(0.3)
rdobuilder 883d97
+            await recursive_a(n - 1)
rdobuilder 883d97
 
rdobuilder 883d97
         tlocal = threading.local()
rdobuilder 883d97
 
rdobuilder 883d97
@@ -158,12 +151,10 @@ class MultiThreadTests(YappiUnitTestCase):
rdobuilder 883d97
             ts.append(t)
rdobuilder 883d97
             _ctag += 1
rdobuilder 883d97
 
rdobuilder 883d97
-        @asyncio.coroutine
rdobuilder 883d97
-        def stop_loop():
rdobuilder 883d97
+        async def stop_loop():
rdobuilder 883d97
             asyncio.get_event_loop().stop()
rdobuilder 883d97
 
rdobuilder 883d97
-        @asyncio.coroutine
rdobuilder 883d97
-        def driver():
rdobuilder 883d97
+        async def driver():
rdobuilder 883d97
             futs = []
rdobuilder 883d97
             fut = asyncio.run_coroutine_threadsafe(a(), ts[0]._loop)
rdobuilder 883d97
             futs.append(fut)
rdobuilder 883d97
diff --git a/yappi/_yappi.c b/yappi/_yappi.c
rdobuilder 883d97
index fa3884e..0b10935 100644
rdobuilder 883d97
--- a/yappi/_yappi.c
rdobuilder 883d97
+++ b/yappi/_yappi.c
rdobuilder 883d97
@@ -200,6 +200,15 @@ static int _pitenumdel(_hitem *item, void *arg);
rdobuilder 883d97
 
rdobuilder 883d97
 // funcs
rdobuilder 883d97
 
rdobuilder 883d97
+static PyCodeObject *
rdobuilder 883d97
+FRAME2CODE(PyFrameObject *frame) {
rdobuilder 883d97
+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 10
rdobuilder 883d97
+    return PyFrame_GetCode(frame);
rdobuilder 883d97
+#else
rdobuilder 883d97
+    return frame->f_code;
rdobuilder 883d97
+#endif
rdobuilder 883d97
+}
rdobuilder 883d97
+
rdobuilder 883d97
 static void _DebugPrintObjects(unsigned int arg_count, ...)
rdobuilder 883d97
 {
rdobuilder 883d97
     unsigned int i;
rdobuilder 883d97
@@ -216,7 +225,9 @@ static void _DebugPrintObjects(unsigned int arg_count, ...)
rdobuilder 883d97
 int 
rdobuilder 883d97
 IS_SUSPENDED(PyFrameObject *frame)
rdobuilder 883d97
 {
rdobuilder 883d97
-#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 10
rdobuilder 883d97
+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 11
rdobuilder 883d97
+    return 1;
rdobuilder 883d97
+#elif PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION == 10
rdobuilder 883d97
     return (frame->f_state == FRAME_SUSPENDED);
rdobuilder 883d97
 #else
rdobuilder 883d97
     return (frame->f_stacktop != NULL);
rdobuilder 883d97
@@ -229,11 +240,11 @@ int IS_ASYNC(PyFrameObject *frame)
rdobuilder 883d97
 
rdobuilder 883d97
 #if defined(IS_PY3K) 
rdobuilder 883d97
 #if PY_MINOR_VERSION >= 4
rdobuilder 883d97
-    result = frame->f_code->co_flags & CO_COROUTINE || 
rdobuilder 883d97
-        frame->f_code->co_flags & CO_ITERABLE_COROUTINE;
rdobuilder 883d97
+    result = FRAME2CODE(frame)->co_flags & CO_COROUTINE || 
rdobuilder 883d97
+        FRAME2CODE(frame)->co_flags & CO_ITERABLE_COROUTINE;
rdobuilder 883d97
 #endif
rdobuilder 883d97
 #if PY_MINOR_VERSION >= 6
rdobuilder 883d97
-    result = result || frame->f_code->co_flags & CO_ASYNC_GENERATOR;
rdobuilder 883d97
+    result = result || FRAME2CODE(frame)->co_flags & CO_ASYNC_GENERATOR;
rdobuilder 883d97
 #endif
rdobuilder 883d97
 #endif
rdobuilder 883d97
 
rdobuilder 883d97
@@ -650,7 +661,7 @@ _code2pit(PyFrameObject *fobj, uintptr_t current_tag)
rdobuilder 883d97
         return NULL;
rdobuilder 883d97
     }
rdobuilder 883d97
 
rdobuilder 883d97
-    cobj = fobj->f_code;
rdobuilder 883d97
+    cobj = FRAME2CODE(fobj);
rdobuilder 883d97
     it = hfind(pits, (uintptr_t)cobj);
rdobuilder 883d97
     if (it) {
rdobuilder 883d97
         return ((_pit *)it->val);
rdobuilder 883d97
diff --git a/yappi/timing.c b/yappi/timing.c
rdobuilder 883d97
index fa2ad24..b5bf083 100644
rdobuilder 883d97
--- a/yappi/timing.c
rdobuilder 883d97
+++ b/yappi/timing.c
rdobuilder 883d97
@@ -81,13 +81,12 @@ tickcount(void)
rdobuilder 883d97
 
rdobuilder 883d97
     rc = 0;
rdobuilder 883d97
     if (g_clock_type == CPU_CLOCK) {
rdobuilder 883d97
-        kern_return_t kr;
rdobuilder 883d97
         thread_basic_info_t tinfo_b;
rdobuilder 883d97
         thread_info_data_t tinfo_d;
rdobuilder 883d97
         mach_msg_type_number_t tinfo_cnt;
rdobuilder 883d97
 
rdobuilder 883d97
         tinfo_cnt = THREAD_INFO_MAX;
rdobuilder 883d97
-        kr = thread_info(mach_thread_self(), THREAD_BASIC_INFO, (thread_info_t)tinfo_d, &tinfo_cnt);
rdobuilder 883d97
+        thread_info(mach_thread_self(), THREAD_BASIC_INFO, (thread_info_t)tinfo_d, &tinfo_cnt);
rdobuilder 883d97
         tinfo_b = (thread_basic_info_t)tinfo_d;
rdobuilder 883d97
 
rdobuilder 883d97
         if (!(tinfo_b->flags & TH_FLAGS_IDLE))
rdobuilder 883d97
-- 
rdobuilder 883d97
2.34.1
rdobuilder 883d97