forked from python/cpython
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
pythongh-117494: extract the Instruction Sequence data structure into…
… a separate file (python#117496)
- Loading branch information
1 parent
060a96f
commit 04697bc
Showing
13 changed files
with
283 additions
and
224 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
#ifndef Py_INTERNAL_INSTRUCTION_SEQUENCE_H | ||
#define Py_INTERNAL_INSTRUCTION_SEQUENCE_H | ||
|
||
#ifndef Py_BUILD_CORE | ||
# error "this header requires Py_BUILD_CORE define" | ||
#endif | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
typedef struct { | ||
int h_label; | ||
int h_startdepth; | ||
int h_preserve_lasti; | ||
} _PyExceptHandlerInfo; | ||
|
||
typedef struct { | ||
int i_opcode; | ||
int i_oparg; | ||
_Py_SourceLocation i_loc; | ||
_PyExceptHandlerInfo i_except_handler_info; | ||
|
||
/* Temporary fields, used by the assembler and in instr_sequence_to_cfg */ | ||
int i_target; | ||
int i_offset; | ||
} _PyInstruction; | ||
|
||
typedef struct { | ||
_PyInstruction *s_instrs; | ||
int s_allocated; | ||
int s_used; | ||
|
||
int s_next_free_label; /* next free label id */ | ||
/* Map of a label id to instruction offset (index into s_instrs). | ||
* If s_labelmap is NULL, then each label id is the offset itself. | ||
*/ | ||
int *s_labelmap; /* label id --> instr offset */ | ||
int s_labelmap_size; | ||
} _PyInstructionSequence; | ||
|
||
typedef struct { | ||
int id; | ||
} _PyJumpTargetLabel; | ||
|
||
int _PyInstructionSequence_UseLabel(_PyInstructionSequence *seq, int lbl); | ||
int _PyInstructionSequence_Addop(_PyInstructionSequence *seq, | ||
int opcode, int oparg, | ||
_Py_SourceLocation loc); | ||
_PyJumpTargetLabel _PyInstructionSequence_NewLabel(_PyInstructionSequence *seq); | ||
int _PyInstructionSequence_ApplyLabelMap(_PyInstructionSequence *seq); | ||
int _PyInstructionSequence_InsertInstruction(_PyInstructionSequence *seq, int pos, | ||
int opcode, int oparg, _Py_SourceLocation loc); | ||
void PyInstructionSequence_Fini(_PyInstructionSequence *seq); | ||
|
||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
#endif /* !Py_INTERNAL_INSTRUCTION_SEQUENCE_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
Misc/NEWS.d/next/Core and Builtins/2024-04-04-13-42-59.gh-issue-117494.GPQH64.rst
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Refactored the instruction sequence data structure out of compile.c into instruction_sequence.c. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.