summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2002-04-27 18:03:26 (GMT)
committerTim Peters <tim.peters@gmail.com>2002-04-27 18:03:26 (GMT)
commit602f740bc2da44ce25c22b7b4b5a7a4fb3435a5a (patch)
tree9c9f5c81767cd3ea9701ade84fea16144f2b56cd /Modules
parent73364e64e5db0a0c79102471ebbd81d2607ec706 (diff)
downloadcpython-602f740bc2da44ce25c22b7b4b5a7a4fb3435a5a.zip
cpython-602f740bc2da44ce25c22b7b4b5a7a4fb3435a5a.tar.gz
cpython-602f740bc2da44ce25c22b7b4b5a7a4fb3435a5a.tar.bz2
SF patch 549375: Compromise PyUnicode_EncodeUTF8
This implements ideas from Marc-Andre, Martin, Guido and me on Python-Dev. "Short" Unicode strings are encoded into a "big enough" stack buffer, then exactly as much string space as they turn out to need is allocated at the end. This should have speed benefits akin to Martin's "measure once, allocate once" strategy, but without needing a distinct measuring pass. "Long" Unicode strings allocate as much heap space as they could possibly need (4 x # Unicode chars), and do a realloc at the end to return the untouched excess. Since the overallocation is likely to be substantial, this shouldn't burden the platform realloc with unusably small excess blocks. Also simplified uses of the PyString_xyz functions. Also added a release- build check that 4*size doesn't overflow a C int. Sooner or later, that's going to happen.
Diffstat (limited to 'Modules')
0 files changed, 0 insertions, 0 deletions