Lines Matching refs:frame
106 dump_stack(_PyInterpreterFrame *frame, PyObject **stack_pointer)
108 PyObject **stack_base = _PyFrame_Stackbase(frame);
128 lltrace_instruction(_PyInterpreterFrame *frame,
132 dump_stack(frame, stack_pointer);
137 int offset = (int)(next_instr - _PyCode_CODE(frame->f_code));
147 lltrace_resume_frame(_PyInterpreterFrame *frame)
149 PyFunctionObject *f = frame->f_func;
151 printf("\nResuming frame.");
160 printf("\nResuming frame");
209 _PyEvalFrameClearAndPop(PyThreadState *tstate, _PyInterpreterFrame *frame);
1305 frame->prev_instr = next_instr++; \
1311 #define INSTRUCTION_START(op) (frame->prev_instr = next_instr++)
1325 lltrace_instruction(frame, stack_pointer, next_instr); }
1435 #define STACK_LEVEL() ((int)(stack_pointer - _PyFrame_Stackbase(frame)))
1436 #define STACK_SIZE() (frame->f_code->co_stacksize)
1474 #define GETLOCAL(i) (frame->localsplus[i])
1479 This is because it is possible that during the DECREF the frame is
1492 #define GLOBALS() frame->f_globals
1493 #define BUILTINS() frame->f_builtins
1494 #define LOCALS() frame->f_locals
1516 if (trace_function_exit(tstate, frame, retval)) { \
1524 dtrace_function_return(frame); \
1531 trace_function_exit(tstate, frame, NULL); \
1536 _PyFrame_SetStackPointer(frame, stack_pointer); \
1537 int err = trace_function_entry(tstate, frame); \
1538 stack_pointer = _PyFrame_GetStackPointer(frame); \
1539 frame->stacktop = -1; \
1547 assert(frame->stacktop >= 0); \
1548 if (trace_function_entry(tstate, frame)) { \
1555 dtrace_function_entry(frame); \
1565 trace_function_entry(PyThreadState *tstate, _PyInterpreterFrame *frame)
1576 a pointer to the current frame, a string
1583 tstate, frame,
1594 tstate, frame,
1604 trace_function_exit(PyThreadState *tstate, _PyInterpreterFrame *frame, PyObject *retval)
1608 tstate, frame, PyTrace_RETURN, retval)) {
1614 tstate, frame, PyTrace_RETURN, retval)) {
1635 _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int throwflag)
1670 frame->is_entry = true;
1671 /* Push frame */
1672 frame->previous = prev_cframe->current_frame;
1673 cframe.current_frame = frame;
1687 * These are cached values from the frame and code object. */
1695 /* Sets the above local variables from the frame */
1698 PyCodeObject *co = frame->f_code; \
1703 assert(_PyInterpreterFrame_LASTI(frame) >= -1); \
1705 next_instr = frame->prev_instr + 1; \
1706 stack_pointer = _PyFrame_GetStackPointer(frame); \
1713 frame->stacktop = -1;
1734 lltrace_resume_frame(frame);
1777 _PyCode_Warmup(frame->f_code);
1784 assert(frame == cframe.current_frame);
2265 _PyFrame_SetStackPointer(frame, stack_pointer);
2267 frame->prev_instr = next_instr - 1;
2268 new_frame->previous = frame;
2269 frame = cframe.current_frame = new_frame;
2433 _PyFrame_SetStackPointer(frame, stack_pointer);
2437 if (!frame->is_entry) {
2438 // GH-99729: We need to unlink the frame *before* clearing it:
2439 _PyInterpreterFrame *dying = frame;
2440 frame = cframe.current_frame = dying->previous;
2442 _PyFrame_StackPush(frame, retval);
2448 assert(tstate->cframe->current_frame == frame->previous);
2584 assert(frame->is_entry);
2602 call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, tstate, frame);
2634 assert(frame->f_code->co_flags & CO_ASYNC_GENERATOR);
2645 assert(frame->is_entry);
2647 _PyFrame_GetGenerator(frame)->gi_frame_state = FRAME_SUSPENDED;
2648 _PyFrame_SetStackPointer(frame, stack_pointer);
2655 assert(tstate->cframe->current_frame == frame->previous);
2672 frame->prev_instr = first_instr + PyLong_AsLong(lasti);
3145 format_exc_unbound(tstate, frame->f_code, oparg);
3152 assert(oparg >= 0 && oparg < frame->f_code->co_nlocalsplus);
3153 name = PyTuple_GET_ITEM(frame->f_code->co_localsplusnames, oparg);
3176 format_exc_unbound(tstate, frame->f_code, oparg);
3189 format_exc_unbound(tstate, frame->f_code, oparg);
3208 PyCodeObject *co = frame->f_code;
3209 PyObject *closure = frame->f_func->func_closure;
3215 frame->localsplus[offset + i] = o;
3951 res = import_name(tstate, frame, name, fromlist, level);
3963 if (_PyFrame_FastToLocalsWithError(frame) < 0) {
3976 _PyFrame_LocalsToFast(frame, 0);
4000 _PyCode_Warmup(frame->f_code);
4309 if (!(frame->f_code->co_flags & (CO_COROUTINE | CO_ITERABLE_COROUTINE))) {
4353 call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, tstate, frame);
4753 // The frame has stolen all the arguments from the stack,
4758 _PyFrame_SetStackPointer(frame, stack_pointer);
4760 frame->prev_instr = next_instr - 1;
4761 new_frame->previous = frame;
4762 cframe.current_frame = frame = new_frame;
4867 _PyFrame_SetStackPointer(frame, stack_pointer);
4869 frame->prev_instr = next_instr - 1;
4870 new_frame->previous = frame;
4871 frame = cframe.current_frame = new_frame;
4909 _PyFrame_SetStackPointer(frame, stack_pointer);
4911 frame->prev_instr = next_instr - 1;
4912 new_frame->previous = frame;
4913 frame = cframe.current_frame = new_frame;
5428 PyGenObject *gen = (PyGenObject *)_Py_MakeCoro(frame->f_func);
5433 _PyFrame_SetStackPointer(frame, stack_pointer);
5435 _PyFrame_Copy(frame, gen_frame);
5436 assert(frame->frame_obj == NULL);
5440 if (!frame->is_entry) {
5441 _PyInterpreterFrame *prev = frame->previous;
5442 _PyThreadState_PopFrame(tstate, frame);
5443 frame = cframe.current_frame = prev;
5444 _PyFrame_StackPush(frame, (PyObject *)gen);
5447 /* Make sure that frame is in a valid state */
5448 frame->stacktop = 0;
5449 frame->f_locals = NULL;
5450 Py_INCREF(frame->f_func);
5451 Py_INCREF(frame->f_code);
5455 assert(tstate->cframe->current_frame == frame->previous);
5627 if (INSTR_OFFSET() >= frame->f_code->_co_firsttraceable) {
5628 int instr_prev = _PyInterpreterFrame_LASTI(frame);
5629 frame->prev_instr = next_instr;
5642 maybe_dtrace_line(frame, &tstate->trace_info, instr_prev);
5650 _PyFrame_SetStackPointer(frame, stack_pointer);
5654 tstate, frame, instr_prev);
5655 // Reload possibly changed frame fields:
5656 stack_pointer = _PyFrame_GetStackPointer(frame);
5657 frame->stacktop = -1;
5673 next_instr = frame->prev_instr;
5691 _PyInterpreterFrame_GetLine(frame), opcode);
5736 PyTuple_GetItem(frame->f_code->co_localsplusnames, oparg)
5754 if (!_PyFrame_IsIncomplete(frame)) {
5755 PyFrameObject *f = _PyFrame_GetFrameObject(frame);
5764 tstate, frame);
5769 /* We can't use frame->f_lasti here, as RERAISE may have set it */
5772 if (get_exception_handler(frame->f_code, offset, &level, &handler, &lasti) == 0) {
5777 PyObject **stackbase = _PyFrame_Stackbase(frame);
5783 _PyFrame_SetStackPointer(frame, stack_pointer);
5790 PyObject **new_top = _PyFrame_Stackbase(frame) + level;
5797 int frame_lasti = _PyInterpreterFrame_LASTI(frame);
5826 if (frame->is_entry) {
5830 assert(tstate->cframe->current_frame == frame->previous);
5833 // GH-99729: We need to unlink the frame *before* clearing it:
5834 _PyInterpreterFrame *dying = frame;
5835 frame = cframe.current_frame = dying->previous;
6371 _PyInterpreterFrame *frame = _PyThreadState_BumpFramePointer(tstate, size);
6372 if (frame == NULL) {
6375 _PyFrame_InitializeSpecials(frame, func, locals, code->co_nlocalsplus);
6376 PyObject **localsarray = &frame->localsplus[0];
6381 assert(frame->owner != FRAME_OWNED_BY_GENERATOR);
6382 _PyEvalFrameClearAndPop(tstate, frame);
6385 return frame;
6402 _PyEvalFrameClearAndPop(PyThreadState *tstate, _PyInterpreterFrame * frame)
6404 // Make sure that this is, indeed, the top frame. We can't check this in
6406 assert((PyObject **)frame + frame->f_code->co_nlocalsplus +
6407 frame->f_code->co_stacksize + FRAME_SPECIALS_SIZE == tstate->datastack_top);
6409 assert(frame->frame_obj == NULL || frame->frame_obj->f_frame == frame);
6410 assert(frame->owner == FRAME_OWNED_BY_THREAD);
6411 _PyFrame_Clear(frame);
6413 _PyThreadState_PopFrame(tstate, frame);
6434 _PyInterpreterFrame *frame = _PyEvalFramePushAndInit(
6436 if (frame == NULL) {
6439 PyObject *retval = _PyEval_EvalFrame(tstate, frame, 0);
6441 _PyFrame_GetStackPointer(frame) == _PyFrame_Stackbase(frame) ||
6442 _PyFrame_GetStackPointer(frame) == frame->localsplus
6444 _PyEvalFrameClearAndPop(tstate, frame);
6812 PyThreadState *tstate, _PyInterpreterFrame *frame,
6818 err = call_trace(func, obj, tstate, frame, what, arg);
6833 initialize_trace_info(PyTraceInfo *trace_info, _PyInterpreterFrame *frame)
6835 PyCodeObject *code = frame->f_code;
6859 PyThreadState *tstate, _PyInterpreterFrame *frame,
6866 PyFrameObject *f = _PyFrame_GetFrameObject(frame);
6873 assert(_PyInterpreterFrame_LASTI(frame) >= 0);
6874 if (_PyCode_InitLineArray(frame->f_code)) {
6877 f->f_lineno = _PyCode_LineNumberFromArray(frame->f_code, _PyInterpreterFrame_LASTI(frame));
6906 PyThreadState *tstate, _PyInterpreterFrame *frame, int instr_prev)
6911 represents a jump backwards, update the frame's line number and
6914 if (_PyCode_InitLineArray(frame->f_code)) {
6918 if (instr_prev <= frame->f_code->_co_firsttraceable) {
6922 lastline = _PyCode_LineNumberFromArray(frame->f_code, instr_prev);
6924 int line = _PyCode_LineNumberFromArray(frame->f_code, _PyInterpreterFrame_LASTI(frame));
6925 PyFrameObject *f = _PyFrame_GetFrameObject(frame);
6932 (_PyInterpreterFrame_LASTI(frame) < instr_prev &&
6935 _Py_OPCODE(*frame->prev_instr) != SEND);
6937 result = call_trace(func, obj, tstate, frame, PyTrace_LINE, Py_None);
6942 result = call_trace(func, obj, tstate, frame, PyTrace_OPCODE, Py_None);
7125 _PyInterpreterFrame *frame = _PyEval_GetFrame();
7126 while (frame && _PyFrame_IsIncomplete(frame)) {
7127 frame = frame->previous;
7129 if (frame == NULL) {
7132 PyFrameObject *f = _PyFrame_GetFrameObject(frame);
7142 _PyInterpreterFrame *frame = tstate->cframe->current_frame;
7143 if (frame != NULL) {
7144 return frame->f_builtins;
7183 _PyErr_SetString(tstate, PyExc_SystemError, "frame does not exist");
7409 import_name(PyThreadState *tstate, _PyInterpreterFrame *frame,
7415 import_func = _PyDict_GetItemWithError(frame->f_builtins, &_Py_ID(__import__));
7422 PyObject *locals = frame->f_locals;
7431 frame->f_globals,
7441 stack[1] = frame->f_globals;
7883 dtrace_function_entry(_PyInterpreterFrame *frame)
7889 PyCodeObject *code = frame->f_code;
7892 lineno = _PyInterpreterFrame_GetLine(frame);
7898 dtrace_function_return(_PyInterpreterFrame *frame)
7904 PyCodeObject *code = frame->f_code;
7907 lineno = _PyInterpreterFrame_GetLine(frame);
7914 maybe_dtrace_line(_PyInterpreterFrame *frame,
7923 initialize_trace_info(trace_info, frame);
7925 int addr = _PyInterpreterFrame_LASTI(frame) * sizeof(_Py_CODEUNIT);
7929 if (_PyInterpreterFrame_LASTI(frame) < instr_prev ||
7932 co_filename = PyUnicode_AsUTF8(frame->f_code->co_filename);
7936 co_name = PyUnicode_AsUTF8(frame->f_code->co_name);