From 007252adb9008a05940972a4332bce5d00512570 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sat, 26 Apr 2014 16:32:06 +0200 Subject: QRegularExpression: lock a mutex only if there's actual work to do We can do the (atomic) test of studyData before locking the mutex protecting the entire function body. Change-Id: I3006e3a0028608f21668ddaebe8a799aed56362f Reviewed-by: Lars Knoll Reviewed-by: Thiago Macieira --- src/corelib/tools/qregularexpression.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 316681e652..2cd76b389d 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -1137,11 +1137,11 @@ void QRegularExpressionPrivate::optimizePattern(OptimizePatternOption option) { Q_ASSERT(compiledPattern); - QMutexLocker lock(&mutex); - if (studyData.load()) // already optimized return; + QMutexLocker lock(&mutex); + if ((option == LazyOptimizeOption) && (++usedCount != qt_qregularexpression_optimize_after_use_count)) return; -- cgit v1.2.3