Ignore:
Timestamp:
Jul 2, 2010, 2:34:43 PM (15 years ago)
Author:
[email protected]
Message:

[ Updated after rollout. ]

Patch by Renata Hodovan <[email protected]> on 2010-07-02
Reviewed by Oliver Hunt.

Merged RegExp constructor and RegExp::create methods.
Both functions are called with three parameters and check whether
flags (the third param) is given or not.
Avoid extra hash lookups in RegExpCache::create by passing a pre-computed
iterator parameter.
https://bugs.webkit.org/show_bug.cgi?id=41055

  • runtime/RegExp.cpp:

(JSC::RegExp::RegExp):

  • runtime/RegExp.h:
  • runtime/RegExpCache.cpp:

(JSC::RegExpCache::lookupOrCreate):
(JSC::RegExpCache::create):

  • runtime/RegExpCache.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/runtime/RegExp.cpp

    r62148 r62405  
    4747namespace JSC {
    4848
    49 inline RegExp::RegExp(JSGlobalData* globalData, const UString& pattern)
    50     : m_pattern(pattern)
    51     , m_flagBits(0)
    52     , m_constructionError(0)
    53     , m_numSubpatterns(0)
    54     , m_lastMatchStart(-1)
    55 {
    56     compile(globalData);
    57 }
    58 
    5949inline RegExp::RegExp(JSGlobalData* globalData, const UString& pattern, const UString& flags)
    6050    : m_pattern(pattern)
     
    6656    // NOTE: The global flag is handled on a case-by-case basis by functions like
    6757    // String::match and RegExpObject::match.
    68     if (flags.find('g') != UString::NotFound)
    69         m_flagBits |= Global;
    70     if (flags.find('i') != UString::NotFound)
    71         m_flagBits |= IgnoreCase;
    72     if (flags.find('m') != UString::NotFound)
    73         m_flagBits |= Multiline;
    74 
     58    if (!flags.isNull()) {
     59        if (flags.find('g') != UString::NotFound)
     60            m_flagBits |= Global;
     61        if (flags.find('i') != UString::NotFound)
     62            m_flagBits |= IgnoreCase;
     63        if (flags.find('m') != UString::NotFound)
     64            m_flagBits |= Multiline;
     65    }
    7566    compile(globalData);
    7667}
     
    8273}
    8374#endif
    84 
    85 PassRefPtr<RegExp> RegExp::create(JSGlobalData* globalData, const UString& pattern)
    86 {
    87     return adoptRef(new RegExp(globalData, pattern));
    88 }
    8975
    9076PassRefPtr<RegExp> RegExp::create(JSGlobalData* globalData, const UString& pattern, const UString& flags)
Note: See TracChangeset for help on using the changeset viewer.