[`PyEval_EvalCode()`](https://docs.python.org/3.14/c-api/veryhigh.html#c.PyEval_EvalCode)
function is called to execute a `CodeObject`, it constructs a [`Frame`](frames.md) and calls
[`_PyEval_EvalFrame()`](https://docs.python.org/3.14/c-api/veryhigh.html#c.PyEval_EvalCode)
-to execute the code object in this frame. The frame hold the dynamic state of the
+to execute the code object in this frame. The frame holds the dynamic state of the
`CodeObject`'s execution, including the instruction pointer, the globals and builtins.
It also has a reference to the `CodeObject` itself.
Most instructions read or write some data in the form of object references (`PyObject *`).
The CPython bytecode interpreter is a stack machine, meaning that its instructions operate
by pushing data onto and popping it off the stack.
-The stack is forms part of the frame for the code object. Its maximum depth is calculated
+The stack forms part of the frame for the code object. Its maximum depth is calculated
by the compiler and stored in the `co_stacksize` field of the code object, so that the
-stack can be pre-allocated is a contiguous array of `PyObject*` pointers, when the frame
+stack can be pre-allocated as a contiguous array of `PyObject*` pointers, when the frame
is created.
The stack effects of each instruction are also exposed through the
2. Perform the operation quickly.
This requires that the set of values is chosen such that membership can be
-tested quickly and that membership is sufficient to allow the operation to
+tested quickly and that membership is sufficient to allow the operation to be
performed quickly.
For example, `LOAD_GLOBAL_MODULE` is specialized for `globals()`