@@ -527,7 +527,7 @@ codegen_yield_from_async(compiler *c, location loc, expr_ty e)
527527 NEW_JUMP_TARGET_LABEL (c , send );
528528 NEW_JUMP_TARGET_LABEL (c , exit );
529529 NEW_JUMP_TARGET_LABEL (c , use_anext );
530- NEW_JUMP_TARGET_LABEL (c , got_coroutine );
530+ NEW_JUMP_TARGET_LABEL (c , got_awaitable );
531531 NEW_JUMP_TARGET_LABEL (c , yield );
532532 NEW_JUMP_TARGET_LABEL (c , throw );
533533 NEW_JUMP_TARGET_LABEL (c , athrow );
@@ -538,9 +538,7 @@ codegen_yield_from_async(compiler *c, location loc, expr_ty e)
538538 VISIT (c , expr , e -> v .YieldFrom .value );
539539 // Stack: [value]
540540
541- ADDOP_NAME (c , loc , LOAD_ATTR , & _Py_ID (__aiter__ ), names );
542- ADDOP (c , loc , PUSH_NULL );
543- ADDOP_I (c , loc , CALL , 0 );
541+ ADDOP (c , loc , GET_AITER );
544542 // Stack: [aiterator]
545543
546544 ADDOP_LOAD_CONST (c , loc , Py_None );
@@ -558,19 +556,19 @@ codegen_yield_from_async(compiler *c, location loc, expr_ty e)
558556 ADDOP_I (c , loc , COPY , 3 );
559557 // Stack: [aiterator, asend_value, method, NULL, asend_value]
560558 ADDOP_I (c , loc , CALL , 1 );
561- ADDOP_JUMP (c , loc , JUMP_NO_INTERRUPT , got_coroutine );
559+ ADDOP_I (c , loc , GET_AWAITABLE , 0 );
560+ ADDOP_JUMP (c , loc , JUMP_NO_INTERRUPT , got_awaitable );
562561
563562 USE_LABEL (c , use_anext );
564563 // Stack: [aiterator, asend_value]
565564 ADDOP_I (c , loc , COPY , 2 );
566- ADDOP_NAME (c , loc , LOAD_ATTR , & _Py_ID (__anext__ ), names );
567- ADDOP (c , loc , PUSH_NULL );
568- // Stack: [aiterator, asend_value, method, NULL]
569- ADDOP_I (c , loc , CALL , 0 );
570- USE_LABEL (c , got_coroutine );
571- // Stack: [aiterator, asend_value, awaitable]
565+ ADDOP (c , loc , GET_ANEXT );
566+ // Stack: [aiterator, asend_value, aiterator, await_iter]
567+ ADDOP_I (c , loc , SWAP , 2 );
568+ ADDOP (c , loc , POP_TOP );
572569
573- ADDOP_I (c , loc , GET_AWAITABLE , 0 );
570+ USE_LABEL (c , got_awaitable );
571+ // Stack: [aiterator, asend_value, await_iter]
574572 ADDOP (c , loc , PUSH_NULL );
575573 ADDOP_LOAD_CONST (c , loc , Py_None );
576574 // Stack: [aiterator, asend_value, await_iter, NULL, None]
0 commit comments