Git Product home page Git Product logo

Comments (5)

MatthieuDartiailh avatar MatthieuDartiailh commented on July 19, 2024

Yes but I plan to work on it at one point by my current bandwidth for OSS is really low. So if you have the inclination to start something feel free to do so.

from bytecode.

MatthieuDartiailh avatar MatthieuDartiailh commented on July 19, 2024

I am going to start working on this slowly and post here about my progress.

The first topic I looked into is the new exception table feature. Basically it means try except are now really represented at the bytecode level as instructions but only in the table. At the ConcreteBytecode level, I think that simply having a human readable version of the format describe in https://github.com/python/cpython/blob/main/Objects/exception_handling_notes.txt is properly the right abstraction.

At the Bytecode and CFG level the story is a bit different. First we will use labels to indicate jump target as for any other jump. However I believe it would make sense to also have pseudo-instruction delineating the block in which an exception can be caught. At the Bytecode level having an entry and exit marker is relatively easy for the CFG it may be a bit more involved and I do not have a clear idea yet of what things are going to look like. Any opinion is welcome as to how to approach this new design.

from bytecode.

P403n1x87 avatar P403n1x87 commented on July 19, 2024

Is it possible to create an exception table object from Python?

First we will use labels to indicate jump target as for any other jump

Makes sense. Perhaps their contructors can take the target label as an identifier for the exception "block".

from bytecode.

MatthieuDartiailh avatar MatthieuDartiailh commented on July 19, 2024

The exception table is just a bunch of bytes as described in the linked file. So yes we will be able to create it from Python.

Regarding you second point, yes the pseudo instruction will take the exception handling block label as a target.

from bytecode.

P403n1x87 avatar P403n1x87 commented on July 19, 2024

The exception table is just a bunch of bytes as described in the linked file. So yes we will be able to create it from Python.

Ah ok, that's just a bytes object now: https://github.com/python/cpython/blob/c485ec014ce174bb3f5ae948151dc40e0f6d5f7f/Objects/codeobject.c#L249

from bytecode.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.