mirror of https://github.com/python/cpython
dec0757549
* Remove m68k-specific hack from ascii_decode On m68k, alignments of primitives is more relaxed, with 4-byte and 8-byte types only requiring 2-byte alignment, thus using sizeof(size_t) does not work. Instead, use the portable alternative. Note that this is a minimal fix that only relaxes the assertion and the condition for when to use the optimised version remains overly strict. Such issues will be fixed tree-wide in the next commit. NB: In C11 we could use _Alignof(size_t) instead, but for compatibility we use autoconf. * Optimise string routines for architectures with non-natural alignment C only requires that sizeof(x) is a multiple of alignof(x), not that the two are equal. Thus anywhere where we optimise based on alignment we should be using alignof(x) not sizeof(x). This is more annoying than it would be in C11 where we could just use _Alignof(x) (and alignof(x) in C++11), but since we still require only C99 we must plumb the information all the way from autoconf through the various typedefs and defines. |
||
---|---|---|
.. | ||
clinic | ||
README.txt | ||
asciilib.h | ||
codecs.h | ||
count.h | ||
ctype.h | ||
eq.h | ||
fastsearch.h | ||
find.h | ||
find_max_char.h | ||
join.h | ||
localeutil.h | ||
partition.h | ||
replace.h | ||
split.h | ||
stringdefs.h | ||
stringlib_find_two_way_notes.txt | ||
transmogrify.h | ||
ucs1lib.h | ||
ucs2lib.h | ||
ucs4lib.h | ||
undef.h | ||
unicode_format.h | ||
unicodedefs.h |
README.txt
bits shared by the bytesobject and unicodeobject implementations (and possibly other modules, in a not too distant future). the stuff in here is included into relevant places; see the individual source files for details. -------------------------------------------------------------------- the following defines used by the different modules: STRINGLIB_CHAR the type used to hold a character (char or Py_UNICODE) STRINGLIB_GET_EMPTY() returns a PyObject representing the empty string, only to be used if STRINGLIB_MUTABLE is 0. It must not be NULL. Py_ssize_t STRINGLIB_LEN(PyObject*) returns the length of the given string object (which must be of the right type) PyObject* STRINGLIB_NEW(STRINGLIB_CHAR*, Py_ssize_t) creates a new string object STRINGLIB_CHAR* STRINGLIB_STR(PyObject*) returns the pointer to the character data for the given string object (which must be of the right type) int STRINGLIB_CHECK_EXACT(PyObject *) returns true if the object is an instance of our type, not a subclass STRINGLIB_MUTABLE must be 0 or 1 to tell the cpp macros in stringlib code if the object being operated on is mutable or not