mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
gh-137838: Move _PyUOpInstruction buffer to PyInterpreterState (gh-138918)
This commit is contained in:
parent
a9b6b09141
commit
d873fb42f3
8 changed files with 87 additions and 31 deletions
45
Include/internal/pycore_uop.h
Normal file
45
Include/internal/pycore_uop.h
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
#ifndef Py_CORE_UOP_H
|
||||
#define Py_CORE_UOP_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef Py_BUILD_CORE
|
||||
# error "this header requires Py_BUILD_CORE define"
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
/* Depending on the format,
|
||||
* the 32 bits between the oparg and operand are:
|
||||
* UOP_FORMAT_TARGET:
|
||||
* uint32_t target;
|
||||
* UOP_FORMAT_JUMP
|
||||
* uint16_t jump_target;
|
||||
* uint16_t error_target;
|
||||
*/
|
||||
typedef struct _PyUOpInstruction{
|
||||
uint16_t opcode:15;
|
||||
uint16_t format:1;
|
||||
uint16_t oparg;
|
||||
union {
|
||||
uint32_t target;
|
||||
struct {
|
||||
uint16_t jump_target;
|
||||
uint16_t error_target;
|
||||
};
|
||||
};
|
||||
uint64_t operand0; // A cache entry
|
||||
uint64_t operand1;
|
||||
#ifdef Py_STATS
|
||||
uint64_t execution_count;
|
||||
#endif
|
||||
} _PyUOpInstruction;
|
||||
|
||||
// This is the length of the trace we project initially.
|
||||
#define UOP_MAX_TRACE_LENGTH 1200
|
||||
#define UOP_BUFFER_SIZE (UOP_MAX_TRACE_LENGTH * sizeof(_PyUOpInstruction))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* !Py_INTERNAL_UOP_H */
|
||||
Loading…
Add table
Add a link
Reference in a new issue