mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
GH-118095: Add dynamic exit support and FOR_ITER_GEN support to tier 2 (GH-118279)
This commit is contained in:
parent
63add11704
commit
3e06c7f719
12 changed files with 315 additions and 139 deletions
|
@ -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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue