From: Brandt Bucher Date: Thu, 13 Feb 2025 18:51:03 +0000 (-0800) Subject: GH-115869: Don't JIT zeroed bytes (GH-130023) X-Git-Tag: v3.14.0a6~427 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=05e89c34bd8389f87bd6c9462d5a06ef9e1a65ab;p=thirdparty%2FPython%2Fcpython.git GH-115869: Don't JIT zeroed bytes (GH-130023) --- diff --git a/Tools/jit/_writer.py b/Tools/jit/_writer.py index 5588784544ee..090b52660f00 100644 --- a/Tools/jit/_writer.py +++ b/Tools/jit/_writer.py @@ -49,15 +49,16 @@ def _dump_stencil(opname: str, group: _stencils.StencilGroup) -> typing.Iterator for part, stencil in [("code", group.code), ("data", group.data)]: for line in stencil.disassembly: yield f" // {line}" - if stencil.body: + stripped = stencil.body.rstrip(b"\x00") + if stripped: yield f" const unsigned char {part}_body[{len(stencil.body)}] = {{" - for i in range(0, len(stencil.body), 8): - row = " ".join(f"{byte:#04x}," for byte in stencil.body[i : i + 8]) + for i in range(0, len(stripped), 8): + row = " ".join(f"{byte:#04x}," for byte in stripped[i : i + 8]) yield f" {row}" yield " };" # Data is written first (so relaxations in the code work properly): for part, stencil in [("data", group.data), ("code", group.code)]: - if stencil.body: + if stencil.body.rstrip(b"\x00"): yield f" memcpy({part}, {part}_body, sizeof({part}_body));" skip = False stencil.holes.sort(key=lambda hole: hole.offset)