Author: Raffael Tfirst <raffael.tfi...@gmail.com>
Branch: py3.5-async
Changeset: r85941:e35d85a4246f
Date: 2016-07-30 23:10 +0200
http://bitbucket.org/pypy/pypy/changeset/e35d85a4246f/

Log:    Peek instead of pull in GET_ANEXT

diff --git a/pypy/interpreter/pyopcode.py b/pypy/interpreter/pyopcode.py
--- a/pypy/interpreter/pyopcode.py
+++ b/pypy/interpreter/pyopcode.py
@@ -1427,7 +1427,7 @@
     def GET_YIELD_FROM_ITER(self, oparg, next_instr):
         from pypy.interpreter.astcompiler import consts
         from pypy.interpreter.generator import GeneratorIterator, Coroutine
-        w_iterable = self.popvalue()
+        w_iterable = self.peekvalue()
         if isinstance(w_iterable, Coroutine):
             if not self.pycode.co_flags & (consts.CO_COROUTINE |
                                        consts.CO_ITERABLE_COROUTINE):
@@ -1438,12 +1438,12 @@
                             "in a non-coroutine generator")
         elif not isinstance(w_iterable, GeneratorIterator):
             w_iterator = self.space.iter(w_iterable)
-            self.pushvalue(w_iterator)
+            self.settopvalue(w_iterator)
     
     def GET_AWAITABLE(self, oparg, next_instr):
-        w_iterable = self.popvalue()
+        w_iterable = self.peekvalue()
         w_iter = w_iterable._GetAwaitableIter(self.space)
-        self.pushvalue(w_iter)
+        self.settopvalue(w_iter)
     
     def SETUP_ASYNC_WITH(self, offsettoend, next_instr):
         res = self.popvalue()
@@ -1466,7 +1466,7 @@
         self.pushvalue(w_result)
     
     def GET_AITER(self, oparg, next_instr):
-        w_obj = self.popvalue()
+        w_obj = self.peekvalue()
         w_func = self.space.lookup(w_obj, "__aiter__")
         if w_func is None:
             raise oefmt(space.w_AttributeError,
@@ -1478,10 +1478,10 @@
             raise oefmt(space.w_TypeError,
                         "'async for' received an invalid object "
                         "from __aiter__: %T", w_iter)
-        self.pushvalue(w_awaitable)
+        self.settopvalue(w_awaitable)
     
     def GET_ANEXT(self, oparg, next_instr):
-        w_aiter = self.popvalue()
+        w_aiter = self.peekvalue()
         w_func = self.space.lookup(w_aiter, "__anext__")
         if w_func is None:
             raise oefmt(space.w_AttributeError,
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to