diff options
author | Mark Shannon <mark@hotpy.org> | 2022-01-20 11:46:39 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-20 11:46:39 +0000 |
commit | b04dfbbe4bd7071d46c8688c2263726ea31d33cd (patch) | |
tree | 17989daaffa384df343b53289845fba667e20acc /Include/internal/pycore_frame.h | |
parent | d05a66339b5e07d72d96e4c30a34cc3821bb61a2 (diff) | |
download | cpython-git-b04dfbbe4bd7071d46c8688c2263726ea31d33cd.tar.gz |
bpo-46409: Make generators in bytecode (GH-30633)
* Add RETURN_GENERATOR and JUMP_NO_INTERRUPT opcodes.
* Trim frame and generator by word each.
* Minor refactor of frame.c
* Update test.test_sys to account for smaller frames.
* Treat generator functions as normal functions when evaluating and specializing.
Diffstat (limited to 'Include/internal/pycore_frame.h')
-rw-r--r-- | Include/internal/pycore_frame.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/Include/internal/pycore_frame.h b/Include/internal/pycore_frame.h index 42df51f635..937c13b520 100644 --- a/Include/internal/pycore_frame.h +++ b/Include/internal/pycore_frame.h @@ -41,12 +41,12 @@ typedef struct _interpreter_frame { PyObject *f_locals; /* Strong reference, may be NULL */ PyCodeObject *f_code; /* Strong reference */ PyFrameObject *frame_obj; /* Strong reference, may be NULL */ - PyObject *generator; /* Borrowed reference, may be NULL */ struct _interpreter_frame *previous; int f_lasti; /* Last instruction if called */ int stacktop; /* Offset of TOS from localsplus */ PyFrameState f_state; /* What state the frame is in */ bool is_entry; // Whether this is the "root" frame for the current CFrame. + bool is_generator; PyObject *localsplus[1]; } InterpreterFrame; @@ -100,10 +100,10 @@ _PyFrame_InitializeSpecials( frame->f_locals = Py_XNewRef(locals); frame->stacktop = nlocalsplus; frame->frame_obj = NULL; - frame->generator = NULL; frame->f_lasti = -1; frame->f_state = FRAME_CREATED; frame->is_entry = false; + frame->is_generator = false; } /* Gets the pointer to the locals array |