Skip to content

Conversation

@markshannon
Copy link
Member

@markshannonmarkshannon commented Jun 13, 2023

This is incomplete implementation of #100987. A full implementation will need a bit more discussion between producers of frames, Cython, MyPyc, etc and consumers, PySpy, Austin, etc.

Rather than wait for a full specification, this PR implements a limited version, as CPython is also a producer and consumer of frames, and we need this to simplify and speed optimizations.
Without this PR we need to create fake code objects for shims and other "artificial" frames, such as those introduced when specializing calls and operators.

This is a more limited version of #103010

_PyOptimizer_BackEdge(_PyInterpreterFrame*frame, _Py_CODEUNIT*src, _Py_CODEUNIT*dest, PyObject**stack_pointer)
{
PyCodeObject*code= (PyCodeObject*)frame->f_executable;
assert(PyCode_Check(code));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this assert come before the cast?

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't matter. The cast doesn't do anything until it is used.

@markshannonmarkshannon merged commit 7199584 into python:mainJun 14, 2023
@markshannonmarkshannon deleted the allow-any-object-as-code branch June 14, 2023 12:46
hauntsaninja pushed a commit to python/mypy that referenced this pull request Jul 7, 2024
The `_PyInterpreterFrame` struct was changed in python/cpython#105727 to store the code object in `f_executable` instead of `f_code`. Fixes ```cpp /home/runner/work/mypy/mypy/mypyc/lib-rt/pythonsupport.h: In function ‘_PyGen_GetCode’: (diff) /home/runner/work/mypy/mypy/mypyc/lib-rt/pythonsupport.h:403:17: error: ‘_PyInterpreterFrame’ has no member named ‘f_code’ (diff) 403 | return frame->f_code; (diff) | ^~ (diff) ```
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@markshannon@iritkatriel@bedevere-bot