Skip to content

Commit

Permalink
GH-115802: JIT using the "medium" code model on x86_64-unknown-linux-…
Browse files Browse the repository at this point in the history
…gnu (GH-130097)
  • Loading branch information
brandtbucher authored Mar 5, 2025
1 parent d7bb7c7 commit 5d8db36
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 17 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Use the more efficient "medium" code model for JIT-compiled code on
supported platforms.
20 changes: 4 additions & 16 deletions Tools/jit/_stencils.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,8 @@ class HoleValue(enum.Enum):
"R_AARCH64_MOVW_UABS_G3": "patch_aarch64_16d",
# x86_64-unknown-linux-gnu:
"R_X86_64_64": "patch_64",
"R_X86_64_GOTPCREL": "patch_32r",
"R_X86_64_GOTPCRELX": "patch_x86_64_32rx",
"R_X86_64_PC32": "patch_32r",
"R_X86_64_PLT32": "patch_32r",
"R_X86_64_REX_GOTPCRELX": "patch_x86_64_32rx",
# x86_64-apple-darwin:
"X86_64_RELOC_BRANCH": "patch_32r",
Expand Down Expand Up @@ -226,11 +225,11 @@ def remove_jump(self, *, alignment: int = 1) -> None:
offset -= 3
case Hole(
offset=offset,
kind="IMAGE_REL_I386_REL32" | "X86_64_RELOC_BRANCH",
kind="IMAGE_REL_I386_REL32" | "R_X86_64_PLT32" | "X86_64_RELOC_BRANCH",
value=HoleValue.CONTINUE,
symbol=None,
addend=-4,
) as hole:
addend=addend,
) as hole if _signed(addend) == -4:
# jmp 5
jump = b"\xE9\x00\x00\x00\x00"
offset -= 1
Expand All @@ -243,17 +242,6 @@ def remove_jump(self, *, alignment: int = 1) -> None:
) as hole:
# b #4
jump = b"\x00\x00\x00\x14"
case Hole(
offset=offset,
kind="R_X86_64_GOTPCRELX",
value=HoleValue.GOT,
symbol="_JIT_CONTINUE",
addend=addend,
) as hole:
assert _signed(addend) == -4
# jmp qword ptr [rip]
jump = b"\xFF\x25\x00\x00\x00\x00"
offset -= 2
case _:
return
if self.body[offset:] == jump and offset % alignment == 0:
Expand Down
2 changes: 1 addition & 1 deletion Tools/jit/_targets.py
Original file line number Diff line number Diff line change
Expand Up @@ -522,7 +522,7 @@ def get_target(host: str) -> _COFF | _ELF | _MachO:
args = ["-fms-runtime-lib=dll"]
target = _COFF(host, args=args)
elif re.fullmatch(r"x86_64-.*-linux-gnu", host):
args = ["-fpic"]
args = ["-fno-pic", "-mcmodel=medium", "-mlarge-data-threshold=0"]
target = _ELF(host, args=args)
else:
raise ValueError(host)
Expand Down

0 comments on commit 5d8db36

Please sign in to comment.