mirror of
https://github.com/python/cpython
synced 2024-09-15 22:00:08 +00:00
GH-90997: Document CACHEs (GH-95694)
This commit is contained in:
parent
9890f86ae2
commit
5f3c9fda18
|
@ -408,6 +408,24 @@ The Python compiler currently generates the following bytecode instructions.
|
|||
.. versionadded:: 3.11
|
||||
|
||||
|
||||
.. opcode:: CACHE
|
||||
|
||||
Rather than being an actual instruction, this opcode is used to mark extra
|
||||
space for the interpreter to cache useful data directly in the bytecode
|
||||
itself. It is automatically hidden by all ``dis`` utilities, but can be
|
||||
viewed with ``show_caches=True``.
|
||||
|
||||
Logically, this space is part of the preceding instruction. Many opcodes
|
||||
expect to be followed by an exact number of caches, and will instruct the
|
||||
interpreter to skip over them at runtime.
|
||||
|
||||
Populated caches can look like arbitrary instructions, so great care should
|
||||
be taken when reading or modifying raw, adaptive bytecode containing
|
||||
quickened data.
|
||||
|
||||
.. versionadded:: 3.11
|
||||
|
||||
|
||||
**Unary operations**
|
||||
|
||||
Unary operations take the top of the stack, apply the operation, and push the
|
||||
|
|
|
@ -1165,6 +1165,13 @@ contributors are volunteers from the community.
|
|||
CPython bytecode changes
|
||||
========================
|
||||
|
||||
* The bytecode now contains inline cache entries, which take the form of
|
||||
:opcode:`CACHE` instructions. Many opcodes expect to be followed by an exact
|
||||
number of caches, and instruct the interpreter to skip over them at runtime.
|
||||
Populated caches can look like arbitrary instructions, so great care should be
|
||||
taken when reading or modifying raw, adaptive bytecode containing quickened
|
||||
data.
|
||||
|
||||
* Replaced all numeric ``BINARY_*`` and ``INPLACE_*`` instructions with a single
|
||||
:opcode:`BINARY_OP` implementation.
|
||||
|
||||
|
|
Loading…
Reference in a new issue