mirror of
https://github.com/python/cpython.git
synced 2025-11-01 18:51:43 +00:00
SF patch 576101, by Oren Tirosh: alternative implementation of
interning. I modified Oren's patch significantly, but the basic idea and most of the implementation is unchanged. Interned strings created with PyString_InternInPlace() are now mortal, and you must keep a reference to the resulting string around; use the new function PyString_InternImmortal() to create immortal interned strings.
This commit is contained in:
parent
d8dbf847b6
commit
45ec02aed1
7 changed files with 171 additions and 106 deletions
|
|
@ -518,8 +518,10 @@ def my_import(name):
|
|||
be done by a pointer compare instead of a string compare. Normally,
|
||||
the names used in Python programs are automatically interned, and
|
||||
the dictionaries used to hold module, class or instance attributes
|
||||
have interned keys. Interned strings are immortal (never get
|
||||
garbage collected).
|
||||
have interned keys. \versionchanged[Interned strings are not
|
||||
immortal (like they used to be in Python 2.2 and before);
|
||||
you must keep a reference to the return value of \function{intern()}
|
||||
around to benefit from it]{2.3}
|
||||
\end{funcdesc}
|
||||
|
||||
\begin{funcdesc}{isinstance}{object, classinfo}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue