MCPcopy Create free account
hub / github.com/python/cpython / _emit_jit_symbol_table

Method _emit_jit_symbol_table

Tools/jit/_stencils.py:343–367  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

341 )
342
343 def _emit_jit_symbol_table(self) -> None:
344 got = len(self.data.body)
345 for s, offset in self._jit_symbol_table.items():
346 if s in self.symbols:
347 value, addend = self.symbols[s]
348 symbol = None
349 else:
350 value, symbol = symbol_to_value(s)
351 addend = 0
352 self.data.holes.append(
353 Hole(got + offset, "R_X86_64_64", value, symbol, addend)
354 )
355 value_part = value.name if value is not HoleValue.ZERO else ""
356 if value_part and not symbol and not addend:
357 addend_part = ""
358 else:
359 signed = "+" if symbol is not None else ""
360 addend_part = f"&{symbol}" if symbol else ""
361 addend_part += f"{_signed(addend):{signed}#x}"
362 if value_part:
363 value_part += "+"
364 self.data.disassembly.append(
365 f"{len(self.data.body):x}: {value_part}{addend_part}"
366 )
367 self.data.body.extend([0] * 8)
368
369 def _emit_global_offset_table(self) -> None:
370 for hole in self.code.holes:

Callers 1

process_relocationsMethod · 0.95

Calls 6

symbol_to_valueFunction · 0.85
HoleClass · 0.85
_signedFunction · 0.85
itemsMethod · 0.45
appendMethod · 0.45
extendMethod · 0.45

Tested by

no test coverage detected