mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00
GH-115869: Don't JIT zeroed bytes (GH-130023)
This commit is contained in:
parent
07f5e33f2e
commit
05e89c34bd
1 changed files with 5 additions and 4 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue