Kaydet (Commit) 95e2a916 authored tarafından Fredrik Lundh's avatar Fredrik Lundh

use Py_LOCAL also for string and unicode objects

üst df676c5f
...@@ -139,12 +139,17 @@ typedef Py_intptr_t Py_ssize_t; ...@@ -139,12 +139,17 @@ typedef Py_intptr_t Py_ssize_t;
/* PY_LOCAL can be used instead of static to get the fastest possible calling /* PY_LOCAL can be used instead of static to get the fastest possible calling
* convention for functions that are local to a given module. It also enables * convention for functions that are local to a given module. It also enables
* inlining, where suitable. */ * inlining, where suitable.
*
* NOTE: You can only use this for functions that are entirely local to a
* module; functions that are exported via method tables, callbacks, etc,
* should keep using static.
*/
#undef USE_INLINE /* XXX - set via configure? */ #undef USE_INLINE /* XXX - set via configure? */
#if defined(_MSC_VER) #if defined(_MSC_VER)
/* ignore warnings if the compiler decides not to inline a function */ /* ignore warnings if the compiler decides not to inline a function */
#pragma warning(disable: 4710) #pragma warning(disable: 4710)
/* fastest possible local call under MSVC */ /* fastest possible local call under MSVC */
#define Py_LOCAL(type) static __inline type __fastcall #define Py_LOCAL(type) static __inline type __fastcall
......
...@@ -5,18 +5,6 @@ ...@@ -5,18 +5,6 @@
#include <ctype.h> #include <ctype.h>
#undef USE_INLINE /* XXX - set via configure? */
#if defined(_MSC_VER) /* this is taken from _sre.c */
#pragma warning(disable: 4710)
/* fastest possible local call under MSVC */
#define LOCAL(type) static __inline type __fastcall
#elif defined(USE_INLINE)
#define LOCAL(type) static inline type
#else
#define LOCAL(type) static type
#endif
#ifdef COUNT_ALLOCS #ifdef COUNT_ALLOCS
int null_strings, one_strings; int null_strings, one_strings;
#endif #endif
...@@ -798,7 +786,7 @@ PyString_AsStringAndSize(register PyObject *obj, ...@@ -798,7 +786,7 @@ PyString_AsStringAndSize(register PyObject *obj,
#define FAST_COUNT 0 #define FAST_COUNT 0
#define FAST_SEARCH 1 #define FAST_SEARCH 1
LOCAL(Py_ssize_t) Py_LOCAL(Py_ssize_t)
fastsearch(const char* s, Py_ssize_t n, const char* p, Py_ssize_t m, int mode) fastsearch(const char* s, Py_ssize_t n, const char* p, Py_ssize_t m, int mode)
{ {
long mask; long mask;
......
...@@ -49,18 +49,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -49,18 +49,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <windows.h> #include <windows.h>
#endif #endif
#undef USE_INLINE /* XXX - set via configure? */
#if defined(_MSC_VER) /* this is taken from _sre.c */
#pragma warning(disable: 4710)
/* fastest possible local call under MSVC */
#define LOCAL(type) static __inline type __fastcall
#elif defined(USE_INLINE)
#define LOCAL(type) static inline type
#else
#define LOCAL(type) static type
#endif
/* Limit for the Unicode object free list */ /* Limit for the Unicode object free list */
#define MAX_UNICODE_FREELIST_SIZE 1024 #define MAX_UNICODE_FREELIST_SIZE 1024
...@@ -153,7 +141,7 @@ static BLOOM_MASK bloom_linebreak; ...@@ -153,7 +141,7 @@ static BLOOM_MASK bloom_linebreak;
#define BLOOM_LINEBREAK(ch)\ #define BLOOM_LINEBREAK(ch)\
(BLOOM(bloom_linebreak, (ch)) && Py_UNICODE_ISLINEBREAK((ch))) (BLOOM(bloom_linebreak, (ch)) && Py_UNICODE_ISLINEBREAK((ch)))
LOCAL(BLOOM_MASK) make_bloom_mask(Py_UNICODE* ptr, Py_ssize_t len) Py_LOCAL(BLOOM_MASK) make_bloom_mask(Py_UNICODE* ptr, Py_ssize_t len)
{ {
/* calculate simple bloom-style bitmask for a given unicode string */ /* calculate simple bloom-style bitmask for a given unicode string */
...@@ -167,7 +155,7 @@ LOCAL(BLOOM_MASK) make_bloom_mask(Py_UNICODE* ptr, Py_ssize_t len) ...@@ -167,7 +155,7 @@ LOCAL(BLOOM_MASK) make_bloom_mask(Py_UNICODE* ptr, Py_ssize_t len)
return mask; return mask;
} }
LOCAL(int) unicode_member(Py_UNICODE chr, Py_UNICODE* set, Py_ssize_t setlen) Py_LOCAL(int) unicode_member(Py_UNICODE chr, Py_UNICODE* set, Py_ssize_t setlen)
{ {
Py_ssize_t i; Py_ssize_t i;
...@@ -2027,9 +2015,9 @@ onError: ...@@ -2027,9 +2015,9 @@ onError:
*/ */
LOCAL(const Py_UNICODE *) findchar(const Py_UNICODE *s, Py_LOCAL(const Py_UNICODE *) findchar(const Py_UNICODE *s,
Py_ssize_t size, Py_ssize_t size,
Py_UNICODE ch) Py_UNICODE ch)
{ {
/* like wcschr, but doesn't stop at NULL characters */ /* like wcschr, but doesn't stop at NULL characters */
...@@ -3880,7 +3868,7 @@ int PyUnicode_EncodeDecimal(Py_UNICODE *s, ...@@ -3880,7 +3868,7 @@ int PyUnicode_EncodeDecimal(Py_UNICODE *s,
#define FAST_COUNT 0 #define FAST_COUNT 0
#define FAST_SEARCH 1 #define FAST_SEARCH 1
LOCAL(Py_ssize_t) Py_LOCAL(Py_ssize_t)
fastsearch(Py_UNICODE* s, Py_ssize_t n, Py_UNICODE* p, Py_ssize_t m, int mode) fastsearch(Py_UNICODE* s, Py_ssize_t n, Py_UNICODE* p, Py_ssize_t m, int mode)
{ {
long mask; long mask;
...@@ -3955,10 +3943,10 @@ fastsearch(Py_UNICODE* s, Py_ssize_t n, Py_UNICODE* p, Py_ssize_t m, int mode) ...@@ -3955,10 +3943,10 @@ fastsearch(Py_UNICODE* s, Py_ssize_t n, Py_UNICODE* p, Py_ssize_t m, int mode)
return count; return count;
} }
LOCAL(Py_ssize_t) count(PyUnicodeObject *self, Py_LOCAL(Py_ssize_t) count(PyUnicodeObject *self,
Py_ssize_t start, Py_ssize_t start,
Py_ssize_t end, Py_ssize_t end,
PyUnicodeObject *substring) PyUnicodeObject *substring)
{ {
Py_ssize_t count = 0; Py_ssize_t count = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment