mirror of
https://github.com/python/cpython.git
synced 2025-11-11 14:44:57 +00:00
Eliminate DONT_SHARE_SHORT_STRINGS.
This commit is contained in:
parent
522cf1f6fb
commit
8deda70b16
2 changed files with 5 additions and 15 deletions
|
|
@ -91,9 +91,9 @@ Build
|
||||||
|
|
||||||
- On Unix, a shared libpython2.3.so can be created with --enable-shared.
|
- On Unix, a shared libpython2.3.so can be created with --enable-shared.
|
||||||
|
|
||||||
- References to the CACHE_HASH and INTERN_STRINGS preprocessor symbols
|
- All uses of the CACHE_HASH, INTERN_STRINGS, and DONT_SHARE_SHORT_STRINGS
|
||||||
were eliminated. They were always defined, and the internal features
|
preprocessor symbols were eliminated. The internal decisions they
|
||||||
they enabled stopped being experimental long ago.
|
controlled stopped being experimental long ago.
|
||||||
|
|
||||||
C API
|
C API
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,7 @@ int null_strings, one_strings;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static PyStringObject *characters[UCHAR_MAX + 1];
|
static PyStringObject *characters[UCHAR_MAX + 1];
|
||||||
#ifndef DONT_SHARE_SHORT_STRINGS
|
|
||||||
static PyStringObject *nullstring;
|
static PyStringObject *nullstring;
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
For both PyString_FromString() and PyString_FromStringAndSize(), the
|
For both PyString_FromString() and PyString_FromStringAndSize(), the
|
||||||
|
|
@ -47,7 +45,6 @@ PyObject *
|
||||||
PyString_FromStringAndSize(const char *str, int size)
|
PyString_FromStringAndSize(const char *str, int size)
|
||||||
{
|
{
|
||||||
register PyStringObject *op;
|
register PyStringObject *op;
|
||||||
#ifndef DONT_SHARE_SHORT_STRINGS
|
|
||||||
if (size == 0 && (op = nullstring) != NULL) {
|
if (size == 0 && (op = nullstring) != NULL) {
|
||||||
#ifdef COUNT_ALLOCS
|
#ifdef COUNT_ALLOCS
|
||||||
null_strings++;
|
null_strings++;
|
||||||
|
|
@ -64,7 +61,6 @@ PyString_FromStringAndSize(const char *str, int size)
|
||||||
Py_INCREF(op);
|
Py_INCREF(op);
|
||||||
return (PyObject *)op;
|
return (PyObject *)op;
|
||||||
}
|
}
|
||||||
#endif /* DONT_SHARE_SHORT_STRINGS */
|
|
||||||
|
|
||||||
/* PyObject_NewVar is inlined */
|
/* PyObject_NewVar is inlined */
|
||||||
op = (PyStringObject *)
|
op = (PyStringObject *)
|
||||||
|
|
@ -77,7 +73,7 @@ PyString_FromStringAndSize(const char *str, int size)
|
||||||
if (str != NULL)
|
if (str != NULL)
|
||||||
memcpy(op->ob_sval, str, size);
|
memcpy(op->ob_sval, str, size);
|
||||||
op->ob_sval[size] = '\0';
|
op->ob_sval[size] = '\0';
|
||||||
#ifndef DONT_SHARE_SHORT_STRINGS
|
/* share short strings */
|
||||||
if (size == 0) {
|
if (size == 0) {
|
||||||
PyObject *t = (PyObject *)op;
|
PyObject *t = (PyObject *)op;
|
||||||
PyString_InternInPlace(&t);
|
PyString_InternInPlace(&t);
|
||||||
|
|
@ -91,7 +87,6 @@ PyString_FromStringAndSize(const char *str, int size)
|
||||||
characters[*str & UCHAR_MAX] = op;
|
characters[*str & UCHAR_MAX] = op;
|
||||||
Py_INCREF(op);
|
Py_INCREF(op);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return (PyObject *) op;
|
return (PyObject *) op;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -108,7 +103,6 @@ PyString_FromString(const char *str)
|
||||||
"string is too long for a Python string");
|
"string is too long for a Python string");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#ifndef DONT_SHARE_SHORT_STRINGS
|
|
||||||
if (size == 0 && (op = nullstring) != NULL) {
|
if (size == 0 && (op = nullstring) != NULL) {
|
||||||
#ifdef COUNT_ALLOCS
|
#ifdef COUNT_ALLOCS
|
||||||
null_strings++;
|
null_strings++;
|
||||||
|
|
@ -123,7 +117,6 @@ PyString_FromString(const char *str)
|
||||||
Py_INCREF(op);
|
Py_INCREF(op);
|
||||||
return (PyObject *)op;
|
return (PyObject *)op;
|
||||||
}
|
}
|
||||||
#endif /* DONT_SHARE_SHORT_STRINGS */
|
|
||||||
|
|
||||||
/* PyObject_NewVar is inlined */
|
/* PyObject_NewVar is inlined */
|
||||||
op = (PyStringObject *)
|
op = (PyStringObject *)
|
||||||
|
|
@ -134,7 +127,7 @@ PyString_FromString(const char *str)
|
||||||
op->ob_shash = -1;
|
op->ob_shash = -1;
|
||||||
op->ob_sinterned = NULL;
|
op->ob_sinterned = NULL;
|
||||||
memcpy(op->ob_sval, str, size+1);
|
memcpy(op->ob_sval, str, size+1);
|
||||||
#ifndef DONT_SHARE_SHORT_STRINGS
|
/* share short strings */
|
||||||
if (size == 0) {
|
if (size == 0) {
|
||||||
PyObject *t = (PyObject *)op;
|
PyObject *t = (PyObject *)op;
|
||||||
PyString_InternInPlace(&t);
|
PyString_InternInPlace(&t);
|
||||||
|
|
@ -148,7 +141,6 @@ PyString_FromString(const char *str)
|
||||||
characters[*str & UCHAR_MAX] = op;
|
characters[*str & UCHAR_MAX] = op;
|
||||||
Py_INCREF(op);
|
Py_INCREF(op);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return (PyObject *) op;
|
return (PyObject *) op;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3637,10 +3629,8 @@ PyString_Fini(void)
|
||||||
Py_XDECREF(characters[i]);
|
Py_XDECREF(characters[i]);
|
||||||
characters[i] = NULL;
|
characters[i] = NULL;
|
||||||
}
|
}
|
||||||
#ifndef DONT_SHARE_SHORT_STRINGS
|
|
||||||
Py_XDECREF(nullstring);
|
Py_XDECREF(nullstring);
|
||||||
nullstring = NULL;
|
nullstring = NULL;
|
||||||
#endif
|
|
||||||
if (interned) {
|
if (interned) {
|
||||||
int pos, changed;
|
int pos, changed;
|
||||||
PyObject *key, *value;
|
PyObject *key, *value;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue