diff options
author | Lars Knoll <[email protected]> | 2014-05-06 08:46:56 +0200 |
---|---|---|
committer | Simon Hausmann <[email protected]> | 2014-07-22 13:49:11 +0200 |
commit | f3f31957b79c55f3e076473b0d4c41c8872535b3 (patch) | |
tree | 11ff071e0db3708b3970000a536f67fa911d02fe /src/qml | |
parent | e391b6f08405a6a9d3470297fc5667f5c7a0c4a8 (diff) |
Convert QV4RegExp to new storage scheme
Change-Id: Ic752b880ce3dfcb59f807794f0f54fb8ed0e61bf
Reviewed-by: Simon Hausmann <[email protected]>
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/jsruntime/qv4regexp.cpp | 18 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4regexp_p.h | 36 |
2 files changed, 32 insertions, 22 deletions
diff --git a/src/qml/jsruntime/qv4regexp.cpp b/src/qml/jsruntime/qv4regexp.cpp index eb7810c1b0..1207500ad7 100644 --- a/src/qml/jsruntime/qv4regexp.cpp +++ b/src/qml/jsruntime/qv4regexp.cpp @@ -49,7 +49,7 @@ RegExpCache::~RegExpCache() { for (RegExpCache::Iterator it = begin(), e = end(); it != e; ++it) - it.value()->data.cache = 0; + it.value()->d()->cache = 0; clear(); } @@ -85,7 +85,7 @@ RegExp* RegExp::create(ExecutionEngine* engine, const QString& pattern, bool ign if (!cache) cache = engine->regExpCache = new RegExpCache; - result->data.cache = cache; + result->d()->cache = cache; cache->insert(key, result); return result; @@ -94,10 +94,10 @@ RegExp* RegExp::create(ExecutionEngine* engine, const QString& pattern, bool ign RegExp::RegExp(ExecutionEngine* engine, const QString &pattern, bool ignoreCase, bool multiline) : Managed(engine->regExpValueClass) { - data.pattern = pattern; - data.cache = 0; - data.ignoreCase = ignoreCase; - data.multiLine = multiline; + d()->pattern = pattern; + d()->cache = 0; + d()->ignoreCase = ignoreCase; + d()->multiLine = multiline; if (!engine) return; @@ -105,12 +105,12 @@ RegExp::RegExp(ExecutionEngine* engine, const QString &pattern, bool ignoreCase, JSC::Yarr::YarrPattern yarrPattern(WTF::String(pattern), ignoreCase, multiline, &error); if (error) return; - data.subPatternCount = yarrPattern.m_numSubpatterns; - data.byteCode = JSC::Yarr::byteCompile(yarrPattern, engine->bumperPointerAllocator); + d()->subPatternCount = yarrPattern.m_numSubpatterns; + d()->byteCode = JSC::Yarr::byteCompile(yarrPattern, engine->bumperPointerAllocator); #if ENABLE(YARR_JIT) if (!yarrPattern.m_containsBackreferences && engine->iselFactory->jitCompileRegexps()) { JSC::JSGlobalData dummy(engine->regExpAllocator); - JSC::Yarr::jitCompile(yarrPattern, JSC::Yarr::Char16, &dummy, data.jitCode); + JSC::Yarr::jitCompile(yarrPattern, JSC::Yarr::Char16, &dummy, d()->jitCode); } #endif } diff --git a/src/qml/jsruntime/qv4regexp_p.h b/src/qml/jsruntime/qv4regexp_p.h index 270fe9aa2d..15086181a2 100644 --- a/src/qml/jsruntime/qv4regexp_p.h +++ b/src/qml/jsruntime/qv4regexp_p.h @@ -93,10 +93,7 @@ public: class RegExp : public Managed { - V4_MANAGED - Q_MANAGED_TYPE(RegExp) - - struct Data { + struct Data : Managed::Data { QString pattern; OwnPtr<JSC::Yarr::BytecodePattern> byteCode; #if ENABLE(YARR_JIT) @@ -107,22 +104,35 @@ class RegExp : public Managed bool ignoreCase; bool multiLine; }; - Data data; + struct { + QString pattern; + OwnPtr<JSC::Yarr::BytecodePattern> byteCode; +#if ENABLE(YARR_JIT) + JSC::Yarr::YarrCodeBlock jitCode; +#endif + RegExpCache *cache; + int subPatternCount; + bool ignoreCase; + bool multiLine; + } __data; + V4_MANAGED_NEW + Q_MANAGED_TYPE(RegExp) + - QString pattern() const { return data.pattern; } - OwnPtr<JSC::Yarr::BytecodePattern> &byteCode() { return data.byteCode; } + QString pattern() const { return d()->pattern; } + OwnPtr<JSC::Yarr::BytecodePattern> &byteCode() { return d()->byteCode; } #if ENABLE(YARR_JIT) - JSC::Yarr::YarrCodeBlock jitCode() const { return data.jitCode; } + JSC::Yarr::YarrCodeBlock jitCode() const { return d()->jitCode; } #endif - RegExpCache *cache() const { return data.cache; } - int subPatternCount() const { return data.subPatternCount; } - bool ignoreCase() const { return data.ignoreCase; } - bool multiLine() const { return data.multiLine; } + RegExpCache *cache() const { return d()->cache; } + int subPatternCount() const { return d()->subPatternCount; } + bool ignoreCase() const { return d()->ignoreCase; } + bool multiLine() const { return d()->multiLine; } static RegExp* create(ExecutionEngine* engine, const QString& pattern, bool ignoreCase = false, bool multiline = false); ~RegExp(); - bool isValid() const { return data.byteCode.get(); } + bool isValid() const { return d()->byteCode.get(); } uint match(const QString& string, int start, uint *matchOffsets); |