mirror of
https://github.com/python/cpython.git
synced 2025-09-02 15:07:53 +00:00
GH-100987: Allow objects other than code objects as the "executable" of an internal frame. (GH-105727)
* Add table describing possible executable classes for out-of-process debuggers. * Remove shim code object creation code as it is no longer needed. * Make lltrace a bit more robust w.r.t. non-standard frames.
This commit is contained in:
parent
ad56340b66
commit
7199584ac8
28 changed files with 541 additions and 606 deletions
|
@ -138,13 +138,13 @@ GETITEM(PyObject *v, Py_ssize_t i) {
|
|||
/* Code access macros */
|
||||
|
||||
/* The integer overflow is checked by an assertion below. */
|
||||
#define INSTR_OFFSET() ((int)(next_instr - _PyCode_CODE(frame->f_code)))
|
||||
#define INSTR_OFFSET() ((int)(next_instr - _PyCode_CODE(_PyFrame_GetCode(frame))))
|
||||
#define NEXTOPARG() do { \
|
||||
_Py_CODEUNIT word = *next_instr; \
|
||||
opcode = word.op.code; \
|
||||
oparg = word.op.arg; \
|
||||
} while (0)
|
||||
#define JUMPTO(x) (next_instr = _PyCode_CODE(frame->f_code) + (x))
|
||||
#define JUMPTO(x) (next_instr = _PyCode_CODE(_PyFrame_GetCode(frame)) + (x))
|
||||
#define JUMPBY(x) (next_instr += (x))
|
||||
|
||||
/* OpCode prediction macros
|
||||
|
@ -182,7 +182,7 @@ GETITEM(PyObject *v, Py_ssize_t i) {
|
|||
/* The stack can grow at most MAXINT deep, as co_nlocals and
|
||||
co_stacksize are ints. */
|
||||
#define STACK_LEVEL() ((int)(stack_pointer - _PyFrame_Stackbase(frame)))
|
||||
#define STACK_SIZE() (frame->f_code->co_stacksize)
|
||||
#define STACK_SIZE() (_PyFrame_GetCode(frame)->co_stacksize)
|
||||
#define EMPTY() (STACK_LEVEL() == 0)
|
||||
#define TOP() (stack_pointer[-1])
|
||||
#define SECOND() (stack_pointer[-2])
|
||||
|
@ -221,8 +221,8 @@ GETITEM(PyObject *v, Py_ssize_t i) {
|
|||
|
||||
|
||||
/* Data access macros */
|
||||
#define FRAME_CO_CONSTS (frame->f_code->co_consts)
|
||||
#define FRAME_CO_NAMES (frame->f_code->co_names)
|
||||
#define FRAME_CO_CONSTS (_PyFrame_GetCode(frame)->co_consts)
|
||||
#define FRAME_CO_NAMES (_PyFrame_GetCode(frame)->co_names)
|
||||
|
||||
/* Local variable macros */
|
||||
|
||||
|
@ -270,6 +270,8 @@ GETITEM(PyObject *v, Py_ssize_t i) {
|
|||
#define GLOBALS() frame->f_globals
|
||||
#define BUILTINS() frame->f_builtins
|
||||
#define LOCALS() frame->f_locals
|
||||
#define CONSTS() _PyFrame_GetCode(frame)->co_consts
|
||||
#define NAMES() _PyFrame_GetCode(frame)->co_names
|
||||
|
||||
#define DTRACE_FUNCTION_ENTRY() \
|
||||
if (PyDTrace_FUNCTION_ENTRY_ENABLED()) { \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue