This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author Mark.Shannon
Recipients Mark.Shannon, Yonatan Goldschmidt, chris.jerdonek, corona10, gvanrossum, hauntsaninja, rhettinger, serhiy.storchaka
Date 2021-04-21.10:23:20
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1619000601.04.0.0570466460459.issue40222@roundup.psfhosted.org>
In-reply-to
Content
The changes to pyc format aren't user visible so shouldn't matter,
but what about the dis output?

Consider this program:

def f():
    try:
        1/0
    except:
        return "fail"

Currently it compiles to:
  2           0 SETUP_FINALLY            7 (to 16)

  3           2 LOAD_CONST               1 (1)
              4 LOAD_CONST               2 (0)
              6 BINARY_TRUE_DIVIDE
              8 POP_TOP
             10 POP_BLOCK
             12 LOAD_CONST               0 (None)
             14 RETURN_VALUE

  4     >>   16 POP_TOP
             18 POP_TOP
             20 POP_TOP

  5          22 POP_EXCEPT
             24 LOAD_CONST               3 ('fail')
             26 RETURN_VALUE

With zero-cost exception handling, it will compile to something like:  
  2           0 NOP
  3           2 LOAD_CONST               1 (1)
              4 LOAD_CONST               2 (0)
              6 BINARY_TRUE_DIVIDE
              8 POP_TOP
             10 LOAD_CONST               0 (None)
             12 RETURN_VALUE

  None       14 PUSH_EXCEPT

  4          16 POP_TOP
             18 POP_TOP
             20 POP_TOP

  5          22 POP_EXCEPT
             24 LOAD_CONST               3 ('fail')
             26 RETURN_VALUE

(There are additional optimizations that should be applied, but those are a separate issue)

The problem is that the exception handling flow is no longer visible.
Should we add it back in somehow, or just append the exception jump table?
History
Date User Action Args
2021-04-21 10:23:21Mark.Shannonsetrecipients: + Mark.Shannon, gvanrossum, rhettinger, chris.jerdonek, serhiy.storchaka, corona10, Yonatan Goldschmidt, hauntsaninja
2021-04-21 10:23:21Mark.Shannonsetmessageid: <1619000601.04.0.0570466460459.issue40222@roundup.psfhosted.org>
2021-04-21 10:23:21Mark.Shannonlinkissue40222 messages
2021-04-21 10:23:20Mark.Shannoncreate