diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
commit | 32761a6cee1d0dee366b885b7b9c777e67885688 (patch) | |
tree | d6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/runtime/RegExp.h | |
parent | a4e969f4965059196ca948db781e52f7cfebf19e (diff) | |
download | WebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz |
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/runtime/RegExp.h')
-rw-r--r-- | Source/JavaScriptCore/runtime/RegExp.h | 125 |
1 files changed, 59 insertions, 66 deletions
diff --git a/Source/JavaScriptCore/runtime/RegExp.h b/Source/JavaScriptCore/runtime/RegExp.h index 3777fd5c1..d982ce4c3 100644 --- a/Source/JavaScriptCore/runtime/RegExp.h +++ b/Source/JavaScriptCore/runtime/RegExp.h @@ -37,100 +37,93 @@ namespace JSC { -struct RegExpRepresentation; -class VM; + struct RegExpRepresentation; + class VM; -JS_EXPORT_PRIVATE RegExpFlags regExpFlags(const String&); + JS_EXPORT_PRIVATE RegExpFlags regExpFlags(const String&); -class RegExp final : public JSCell { -public: - typedef JSCell Base; - static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal; + class RegExp : public JSCell { + public: + typedef JSCell Base; - JS_EXPORT_PRIVATE static RegExp* create(VM&, const String& pattern, RegExpFlags); - static const bool needsDestruction = true; - static void destroy(JSCell*); - static size_t estimatedSize(JSCell*); + JS_EXPORT_PRIVATE static RegExp* create(VM&, const String& pattern, RegExpFlags); + static const bool needsDestruction = true; + static const bool hasImmortalStructure = true; + static void destroy(JSCell*); - bool global() const { return m_flags & FlagGlobal; } - bool ignoreCase() const { return m_flags & FlagIgnoreCase; } - bool multiline() const { return m_flags & FlagMultiline; } + bool global() const { return m_flags & FlagGlobal; } + bool ignoreCase() const { return m_flags & FlagIgnoreCase; } + bool multiline() const { return m_flags & FlagMultiline; } - const String& pattern() const { return m_patternString; } + const String& pattern() const { return m_patternString; } - bool isValid() const { return !m_constructionError && m_flags != InvalidFlags; } - const char* errorMessage() const { return m_constructionError; } + bool isValid() const { return !m_constructionError && m_flags != InvalidFlags; } + const char* errorMessage() const { return m_constructionError; } - JS_EXPORT_PRIVATE int match(VM&, const String&, unsigned startOffset, Vector<int, 32>& ovector); - JS_EXPORT_PRIVATE MatchResult match(VM&, const String&, unsigned startOffset); - unsigned numSubpatterns() const { return m_numSubpatterns; } + JS_EXPORT_PRIVATE int match(VM&, const String&, unsigned startOffset, Vector<int, 32>& ovector); + MatchResult match(VM&, const String&, unsigned startOffset); + unsigned numSubpatterns() const { return m_numSubpatterns; } - bool hasCode() - { - return m_state != NotCompiled; - } - - void deleteCode(); + bool hasCode() + { + return m_state != NotCompiled; + } + void invalidateCode(); + #if ENABLE(REGEXP_TRACING) - void printTraceData(); + void printTraceData(); #endif - static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype) - { - return Structure::create(vm, globalObject, prototype, TypeInfo(CellType, StructureFlags), info()); - } - - DECLARE_INFO; + static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype) + { + return Structure::create(vm, globalObject, prototype, TypeInfo(LeafType, 0), info()); + } + + DECLARE_INFO; - RegExpKey key() { return RegExpKey(m_flags, m_patternString); } + RegExpKey key() { return RegExpKey(m_flags, m_patternString); } -protected: - void finishCreation(VM&); + protected: + void finishCreation(VM&); -private: - friend class RegExpCache; - RegExp(VM&, const String&, RegExpFlags); + private: + friend class RegExpCache; + RegExp(VM&, const String&, RegExpFlags); - static RegExp* createWithoutCaching(VM&, const String&, RegExpFlags); + static RegExp* createWithoutCaching(VM&, const String&, RegExpFlags); - enum RegExpState { - ParseError, - JITCode, - ByteCode, - NotCompiled - }; + enum RegExpState { + ParseError, + JITCode, + ByteCode, + NotCompiled + } m_state; - RegExpState m_state; + void compile(VM*, Yarr::YarrCharSize); + void compileIfNecessary(VM&, Yarr::YarrCharSize); - void compile(VM*, Yarr::YarrCharSize); - void compileIfNecessary(VM&, Yarr::YarrCharSize); - - void compileMatchOnly(VM*, Yarr::YarrCharSize); - void compileIfNecessaryMatchOnly(VM&, Yarr::YarrCharSize); + void compileMatchOnly(VM*, Yarr::YarrCharSize); + void compileIfNecessaryMatchOnly(VM&, Yarr::YarrCharSize); #if ENABLE(YARR_JIT_DEBUG) - void matchCompareWithInterpreter(const String&, int startOffset, int* offsetVector, int jitResult); + void matchCompareWithInterpreter(const String&, int startOffset, int* offsetVector, int jitResult); #endif - String m_patternString; - RegExpFlags m_flags; - const char* m_constructionError; - unsigned m_numSubpatterns; + String m_patternString; + RegExpFlags m_flags; + const char* m_constructionError; + unsigned m_numSubpatterns; #if ENABLE(REGEXP_TRACING) - double m_rtMatchOnlyTotalSubjectStringLen; - double m_rtMatchTotalSubjectStringLen; - unsigned m_rtMatchOnlyCallCount; - unsigned m_rtMatchOnlyFoundCount; - unsigned m_rtMatchCallCount; - unsigned m_rtMatchFoundCount; + unsigned m_rtMatchCallCount; + unsigned m_rtMatchFoundCount; #endif #if ENABLE(YARR_JIT) - Yarr::YarrCodeBlock m_regExpJITCode; + Yarr::YarrCodeBlock m_regExpJITCode; #endif - std::unique_ptr<Yarr::BytecodePattern> m_regExpBytecode; -}; + OwnPtr<Yarr::BytecodePattern> m_regExpBytecode; + }; } // namespace JSC |