MCPcopy Index your code
hub / github.com/python/cpython / Emitter

Class Emitter

Tools/cases_generator/generators_common.py:106–750  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

104}
105
106class Emitter:
107 out: CWriter
108 labels: dict[str, Label]
109 _replacers: dict[str, ReplacementFunctionType]
110 cannot_escape: bool
111 jump_prefix: str
112
113 def __init__(self, out: CWriter, labels: dict[str, Label], cannot_escape: bool = False, jump_prefix: str = ""):
114 self._replacers = {
115 "EXIT_IF": self.exit_if,
116 "AT_END_EXIT_IF": self.exit_if_after,
117 "DEOPT_IF": self.deopt_if,
118 "HANDLE_PENDING_AND_DEOPT_IF": self.periodic_if,
119 "ERROR_IF": self.error_if,
120 "ERROR_NO_POP": self.error_no_pop,
121 "DECREF_INPUTS": self.decref_inputs,
122 "DEAD": self.kill,
123 "INPUTS_DEAD": self.kill_inputs,
124 "SYNC_SP": self.sync_sp,
125 "SAVE_STACK": self.save_stack,
126 "RELOAD_STACK": self.reload_stack,
127 "PyStackRef_CLOSE_SPECIALIZED": self.stackref_close_specialized,
128 "PyStackRef_AsPyObjectSteal": self.stackref_steal,
129 "DISPATCH": self.dispatch,
130 "INSTRUCTION_SIZE": self.instruction_size,
131 "stack_pointer": self.stack_pointer,
132 "Py_UNREACHABLE": self.unreachable,
133 "TIER1_TO_TIER2": self.tier1_to_tier2,
134 "TIER2_TO_TIER2": self.tier2_to_tier2,
135 "GOTO_TIER_ONE": self.goto_tier_one
136 }
137 self.out = out
138 self.labels = labels
139 self.cannot_escape = cannot_escape
140 self.jump_prefix = jump_prefix
141
142 def dispatch(
143 self,
144 tkn: Token,
145 tkn_iter: TokenIterator,
146 uop: CodeSection,
147 storage: Storage,
148 inst: Instruction | None,
149 ) -> bool:
150 if storage.spilled:
151 raise analysis_error("stack_pointer needs reloading before dispatch", tkn)
152 storage.stack.flush(self.out)
153 self.emit(tkn)
154 return False
155
156 def unreachable(
157 self,
158 tkn: Token,
159 tkn_iter: TokenIterator,
160 uop: CodeSection,
161 storage: Storage,
162 inst: Instruction | None,
163 ) -> bool:

Callers 2

generate_tier1Function · 0.90
generate_tier1_casesFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…