https://github.com/python/cpython/commit/57e4c81ae1cd605efa173885574aedc3fded4b8b
commit: 57e4c81ae1cd605efa173885574aedc3fded4b8b
branch: main
author: Ken Jin <[email protected]>
committer: Yhg1s <[email protected]>
date: 2024-02-14T12:12:52+01:00
summary:

gh-114058: Fix flaky globals to constant test (#115423)


Co-authored-by: Victor Stinner <[email protected]>

files:
M Lib/test/test_capi/test_opt.py

diff --git a/Lib/test/test_capi/test_opt.py b/Lib/test/test_capi/test_opt.py
index b64aed10d2d653..1a8ed3441fa855 100644
--- a/Lib/test/test_capi/test_opt.py
+++ b/Lib/test/test_capi/test_opt.py
@@ -7,6 +7,8 @@
 
 import _testinternalcapi
 
+from test.support import script_helper
+
 
 @contextlib.contextmanager
 def temporary_optimizer(opt):
@@ -659,7 +661,7 @@ def dummy(x):
 
         opt = _testinternalcapi.get_uop_optimizer()
         with temporary_optimizer(opt):
-            testfunc(20)
+            testfunc(32)
 
         ex = get_first_executor(testfunc)
         self.assertIsNotNone(ex)
@@ -677,10 +679,10 @@ def testfunc(n):
 
         opt = _testinternalcapi.get_uop_optimizer()
         with temporary_optimizer(opt):
-            res = testfunc(20)
+            res = testfunc(32)
 
         ex = get_first_executor(testfunc)
-        self.assertEqual(res, 19 * 2)
+        self.assertEqual(res, 62)
         self.assertIsNotNone(ex)
         uops = {opname for opname, _, _ in ex}
         self.assertNotIn("_GUARD_BOTH_INT", uops)
@@ -699,7 +701,7 @@ def testfunc(n):
 
         opt = _testinternalcapi.get_uop_optimizer()
         with temporary_optimizer(opt):
-            res = testfunc(20)
+            res = testfunc(32)
 
         ex = get_first_executor(testfunc)
         self.assertEqual(res, 4)
@@ -716,7 +718,7 @@ def testfunc(n):
 
         opt = _testinternalcapi.get_uop_optimizer()
         with temporary_optimizer(opt):
-            testfunc(20)
+            testfunc(32)
 
         ex = get_first_executor(testfunc)
         self.assertIsNotNone(ex)
@@ -740,7 +742,7 @@ def testfunc(n):
 
             def dummy(x):
                 return x + 2
-            testfunc(10)
+            testfunc(32)
 
         ex = get_first_executor(testfunc)
         # Honestly as long as it doesn't crash it's fine.
@@ -749,20 +751,39 @@ def dummy(x):
         # This test is a little implementation specific.
 
     def test_promote_globals_to_constants(self):
+
+        result = script_helper.run_python_until_end('-c', textwrap.dedent("""
+        import _testinternalcapi
+        import opcode
+
+        def get_first_executor(func):
+            code = func.__code__
+            co_code = code.co_code
+            JUMP_BACKWARD = opcode.opmap["JUMP_BACKWARD"]
+            for i in range(0, len(co_code), 2):
+                if co_code[i] == JUMP_BACKWARD:
+                    try:
+                        return _testinternalcapi.get_executor(code, i)
+                    except ValueError:
+                        pass
+            return None
+
         def testfunc(n):
             for i in range(n):
                 x = range(i)
             return x
 
         opt = _testinternalcapi.get_uop_optimizer()
-        with temporary_optimizer(opt):
-            testfunc(20)
+        _testinternalcapi.set_optimizer(opt)
+        testfunc(64)
 
         ex = get_first_executor(testfunc)
-        self.assertIsNotNone(ex)
+        assert ex is not None
         uops = {opname for opname, _, _ in ex}
-        self.assertNotIn("_LOAD_GLOBAL_BUILTIN", uops)
-        self.assertIn("_LOAD_CONST_INLINE_BORROW_WITH_NULL", uops)
+        assert "_LOAD_GLOBAL_BUILTINS" not in uops
+        assert "_LOAD_CONST_INLINE_BORROW_WITH_NULL" in uops
+        """))
+        self.assertEqual(result[0].rc, 0, result)
 
 
 

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to