| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| Expand Up | @@ -9,6 +9,50 @@ extern "C" { | |
| #endif | ||
|
|
||
| #include "pycore_lock.h" // PyMutex | ||
| #include "pycore_backoff.h" // _Py_BackoffCounter | ||
|
|
||
|
|
||
| /* Each instruction in a code object is a fixed-width value, | ||
| * currently 2 bytes: 1-byte opcode + 1-byte oparg. The EXTENDED_ARG | ||
| * opcode allows for larger values but the current limit is 3 uses | ||
| * of EXTENDED_ARG (see Python/compile.c), for a maximum | ||
| * 32-bit value. This aligns with the note in Python/compile.c | ||
| * (compiler_addop_i_line) indicating that the max oparg value is | ||
| * 2**32 - 1, rather than INT_MAX. | ||
| */ | ||
|
|
||
| typedef union { | ||
| uint16_t cache; | ||
| struct { | ||
| uint8_t code; | ||
| uint8_t arg; | ||
| } op; | ||
| _Py_BackoffCounter counter; // First cache entry of specializable op | ||
| } _Py_CODEUNIT; | ||
|
|
||
|
|
||
| /* These macros only remain defined for compatibility. */ | ||
| #define _Py_OPCODE(word) ((word).op.code) | ||
| #define _Py_OPARG(word) ((word).op.arg) | ||
|
|
||
| static inline _Py_CODEUNIT | ||
| _py_make_codeunit(uint8_t opcode, uint8_t oparg) | ||
| { | ||
| // No designated initialisers because of C++ compat | ||
|
Comment thread
Copy link
Copy Markdown
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low QualityThis is an internal header. Why does it need to be C++ compatible?
Sorry, something went wrong.
All reactions
Copy link
Copy Markdown
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low QualityNo idea, I just moved code. For now, I prefer to leave it as it is. I can be reworked later.
Sorry, something went wrong.
All reactions
|
||
| _Py_CODEUNIT word; | ||
| word.op.code = opcode; | ||
| word.op.arg = oparg; | ||
| return word; | ||
| } | ||
|
|
||
| static inline void | ||
| _py_set_opcode(_Py_CODEUNIT *word, uint8_t opcode) | ||
| { | ||
| word->op.code = opcode; | ||
| } | ||
|
|
||
| #define _Py_MAKE_CODEUNIT(opcode, oparg) _py_make_codeunit((opcode), (oparg)) | ||
| #define _Py_SET_OPCODE(word, opcode) _py_set_opcode(&(word), (opcode)) | ||
|
|
||
|
|
||
| // We hide some of the newer PyCodeObject fields behind macros. | ||
| Expand Down | ||
| Back | FazBrowse Home | New Git URL |
Uh oh!
There was an error while loading. Please reload this page.