A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2003-March/034080.html below:

[Python-Dev] PyEval_GetFrame() revisited

[Python-Dev] PyEval_GetFrame() revisitedArmin Rigo arigo@tunes.org
Sat, 15 Mar 2003 23:33:03 -0800 (PST)
Hello Christian,

On Fri, Mar 14, 2003 at 07:05:05PM +0100, Christian Tismer wrote:
> > where the PyEval_GetGLobals is used instead of
> >               tstate->frame->f_globals
> Ah!!
> Can it be that PyEval_GetFrame() is just indended
> to signal to an extension like Psyco that it needs
> to quickly invent a frame now?

Yes, indeed.  This was a very limited hack so that the frame would get the
correct locals even in the presence of Psyco.  Now I realize that it may have
been pointless anyway, if this dummy frame is never really used but for
tracebacks.

Maybe an API to manipulate tstate->frame could be useful and really
lightweight.  Alternatively, we could consider what pyexpat does as a general
pattern and have an API for it, e.g.:

PyFrame_Push(PyFrameObject* f) ->
    pushes 'f' on the frame stack, assert()ing that f->f_back is tstate->frame
    or pushes a new placeholder frame if 'f' is NULL.
    This also calls the profile and trace hooks.

PyFrame_Pop() ->
    pops the frame, calling profile and trace hooks,
    and recording a traceback if PyErr_Occurred().

and maybe a PyFrame_FromC() function that creates a placeholder with
controllable parameters as in pyexpat.c:getcode().


A bientôt,

Armin.




RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4