]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-115869: Don't JIT zeroed bytes (GH-130023)
authorBrandt Bucher <brandtbucher@microsoft.com>
Thu, 13 Feb 2025 18:51:03 +0000 (10:51 -0800)
committerGitHub <noreply@github.com>
Thu, 13 Feb 2025 18:51:03 +0000 (10:51 -0800)
Tools/jit/_writer.py

index 5588784544ee00134935bf22fa1fa462a45c95c2..090b52660f009c0eb999f467d1d0a1cddb11b2bf 100644 (file)
@@ -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)