GH-118095: Add dynamic exit support and FOR_ITER_GEN support to tier 2 (GH-118279)

This commit is contained in:
Mark Shannon 2024-04-26 18:08:50 +01:00 committed by GitHub
parent 63add11704
commit 3e06c7f719
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 315 additions and 139 deletions

View file

@ -132,7 +132,7 @@ def iter_opnames(ex):
def get_opnames(ex):
return set(iter_opnames(ex))
return list(iter_opnames(ex))
@requires_specialization
@ -1298,5 +1298,20 @@ class TestUopsOptimization(unittest.TestCase):
self.assertIsNotNone(ex)
self.assertIn("_RETURN_GENERATOR", get_opnames(ex))
def test_for_iter_gen(self):
def gen(n):
for i in range(n):
yield i
def testfunc(n):
g = gen(n)
s = 0
for i in g:
s += i
return s
res, ex = self._run_with_optimizer(testfunc, 20)
self.assertEqual(res, 190)
self.assertIsNotNone(ex)
self.assertIn("_FOR_ITER_GEN_FRAME", get_opnames(ex))
if __name__ == "__main__":
unittest.main()