mirror of
https://github.com/python/cpython.git
synced 2026-01-21 22:59:06 +00:00
* Moves the `GET_ITER` instruction into the generator function preamble. This means the the iterable is converted into an iterator during generator creation, as documented, but keeps it in the same code object allowing optimization.
47 lines
1.7 KiB
C
47 lines
1.7 KiB
C
#ifndef Py_INTERNAL_CFG_H
|
|
#define Py_INTERNAL_CFG_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef Py_BUILD_CORE
|
|
# error "this header requires Py_BUILD_CORE define"
|
|
#endif
|
|
|
|
#include "pycore_compile.h"
|
|
#include "pycore_instruction_sequence.h"
|
|
#include "pycore_opcode_utils.h"
|
|
|
|
struct _PyCfgBuilder;
|
|
|
|
int _PyCfgBuilder_UseLabel(struct _PyCfgBuilder *g, _PyJumpTargetLabel lbl);
|
|
int _PyCfgBuilder_Addop(struct _PyCfgBuilder *g, int opcode, int oparg, _Py_SourceLocation loc);
|
|
|
|
struct _PyCfgBuilder* _PyCfgBuilder_New(void);
|
|
void _PyCfgBuilder_Free(struct _PyCfgBuilder *g);
|
|
int _PyCfgBuilder_CheckSize(struct _PyCfgBuilder* g);
|
|
|
|
int _PyCfg_OptimizeCodeUnit(struct _PyCfgBuilder *g, PyObject *consts, PyObject *const_cache,
|
|
int nlocals, int nparams, int firstlineno);
|
|
|
|
struct _PyCfgBuilder* _PyCfg_FromInstructionSequence(_PyInstructionSequence *seq);
|
|
int _PyCfg_ToInstructionSequence(struct _PyCfgBuilder *g, _PyInstructionSequence *seq);
|
|
int _PyCfg_OptimizedCfgToInstructionSequence(struct _PyCfgBuilder *g, _PyCompile_CodeUnitMetadata *umd,
|
|
int *stackdepth, int *nlocalsplus,
|
|
_PyInstructionSequence *seq);
|
|
|
|
PyCodeObject *
|
|
_PyAssemble_MakeCodeObject(_PyCompile_CodeUnitMetadata *u, PyObject *const_cache,
|
|
PyObject *consts, int maxdepth, _PyInstructionSequence *instrs,
|
|
int nlocalsplus, int code_flags, PyObject *filename);
|
|
|
|
// Export for '_testinternalcapi' shared extension
|
|
PyAPI_FUNC(PyObject*) _PyCompile_OptimizeCfg(
|
|
PyObject *instructions,
|
|
PyObject *consts,
|
|
int nlocals);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* !Py_INTERNAL_CFG_H */
|