Ignore:
Timestamp:
Nov 14, 2007, 6:00:15 PM (18 years ago)
Author:
[email protected]
Message:

2007-11-14 Eric Seidel <[email protected]>

Reviewed by Geoff.

Another round of PCRE cleanups: inlines

SunSpider claims that this, combined with my previous PCRE cleanup were a 0.7% speedup, go figure.

  • pcre/pcre_compile.cpp: (jsRegExpCompile):
  • pcre/pcre_exec.cpp: (match): (jsRegExpExecute):
  • pcre/pcre_internal.h: (PUT): (GET): (PUT2): (GET2): (isNewline):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/pcre/pcre_internal.h

    r27802 r27805  
    174174#if LINK_SIZE == 2
    175175
    176 #define PUT(a,n,d)   \
    177   (a[n] = (d) >> 8), \
    178   (a[(n)+1] = (d) & 255)
    179 
    180 #define GET(a,n) \
    181   (((a)[n] << 8) | (a)[(n)+1])
     176static inline void PUT(uschar* a, size_t n, unsigned short d)
     177{
     178    a[n] = d >> 8;
     179    a[n+1] = d & 255;
     180}
     181
     182static inline short GET(const uschar* a, size_t n)
     183{
     184    return ((a[n] << 8) | a[n + 1]);
     185}
    182186
    183187#define MAX_PATTERN_SIZE (1 << 16)
    184188
    185 
    186189#elif LINK_SIZE == 3
    187190
    188 #define PUT(a,n,d)       \
    189   (a[n] = (d) >> 16),    \
    190   (a[(n)+1] = (d) >> 8), \
    191   (a[(n)+2] = (d) & 255)
    192 
    193 #define GET(a,n) \
    194   (((a)[n] << 16) | ((a)[(n)+1] << 8) | (a)[(n)+2])
     191static inline void PUT(uschar* a, size_t n, unsigned d)
     192{
     193    a[n] = d >> 16;
     194    a[n+1] = d >> 8;
     195    a[n+2] = d & 255;
     196}
     197
     198static inline int GET(const uschar* a, size_t n)
     199{
     200    return ((a[n] << 16) | (a[n+1] << 8) | a[n+2]);
     201}
    195202
    196203#define MAX_PATTERN_SIZE (1 << 24)
    197204
    198 
    199205#elif LINK_SIZE == 4
    200206
    201 #define PUT(a,n,d)        \
    202   (a[n] = (d) >> 24),     \
    203   (a[(n)+1] = (d) >> 16), \
    204   (a[(n)+2] = (d) >> 8),  \
    205   (a[(n)+3] = (d) & 255)
    206 
    207 #define GET(a,n) \
    208   (((a)[n] << 24) | ((a)[(n)+1] << 16) | ((a)[(n)+2] << 8) | (a)[(n)+3])
     207static inline void PUT(uschar* a, size_t n, unsigned d)
     208{
     209    a[n] = d >> 24;
     210    a[n+1] = d >> 16;
     211    a[n+2] = d >> 8;
     212    a[n+3] = d & 255;
     213}
     214
     215static inline int GET(const uschar* a, size_t n)
     216{
     217    return ((a[n] << 24) | (a[n+1] << 16) | (a[n+2] << 8) | a[n+3]);
     218}
    209219
    210220#define MAX_PATTERN_SIZE (1 << 30)   /* Keep it positive */
    211 
    212221
    213222#else
     
    225234capturing parenthesis numbers in back references. */
    226235
    227 #define PUT2(a,n,d)   \
    228   a[n] = (d) >> 8; \
    229   a[(n)+1] = (d) & 255
    230 
    231 #define GET2(a,n) \
    232   (((a)[n] << 8) | (a)[(n)+1])
    233 
     236static inline void PUT2(uschar* a, size_t n, unsigned short d)
     237{
     238    a[n] = d >> 8;
     239    a[n+1] = d & 255;
     240}
     241
     242static inline short GET2(const uschar* a, size_t n)
     243{
     244    return ((a[n] << 8) | a[n + 1]);
     245}
     246
     247// FIXME: This can't be a static inline yet, because it's passed register values by some callers
     248// you can't take the address of a register
    234249#define PUT2INC(a,n,d)  PUT2(a,n,d), a += 2
    235 
    236250
    237251/* When UTF-8 encoding is being used, a character is no longer just a single
     
    593607extern BOOL        _pcre_xclass(int, const uschar *);
    594608
    595 #define IS_NEWLINE(nl) ((nl) == 0xA || (nl) == 0xD || (nl) == 0x2028 || (nl) == 0x2029)
     609static inline bool isNewline(pcre_uchar nl)
     610{
     611    return (nl == 0xA || nl == 0xD || nl == 0x2028 || nl == 0x2029);
     612}
    596613
    597614#endif
Note: See TracChangeset for help on using the changeset viewer.