diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2018-06-12 13:03:09 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2018-06-12 22:12:22 +0200 |
commit | 36b2b687afa58d4d2043115b5bd9df58e6b9710a (patch) | |
tree | dacb546584eec57ebc5ce9f02af6f9ba6a208964 | |
parent | f01f4f8f91a6dae45af16e10a535cc65a7f56310 (diff) |
do not even consider ScTokenArray for OpenCL if it's disabled
If sc/qa/unit/data/ods/functions.ods is run with OpenCL disabled
(and the mnOpenCLMinimumFormulaGroupSize check disabled too), then
ScTokenArray::CheckToken() considers the token for OpenCL, and if
the token is ocExternal, it passes all the related OpenCL checks,
and thus ScTokenArray::CheckForThreading() is never called.
However, since OpenCL is disabled, then actually the threaded code
will be executed, since the blacklisting for ocExternal has not been
done.
Change-Id: Ib4d4d63d3925746f6e13da0611ac869e9a094b5b
Reviewed-on: https://gerrit.libreoffice.org/55676
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit fb4ad5b0c766440e1a47d991c6cbc9cb017ada59)
Reviewed-on: https://gerrit.libreoffice.org/55719
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Tested-by: Luboš Luňák <l.lunak@collabora.com>
-rw-r--r-- | sc/source/core/tool/token.cxx | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx index 7eb36aac5ced..cddc6294abd9 100644 --- a/sc/source/core/tool/token.cxx +++ b/sc/source/core/tool/token.cxx @@ -1819,9 +1819,18 @@ void ScTokenArray::GenHash() void ScTokenArray::ResetVectorState() { - meVectorState = FormulaVectorEnabled; - mbOpenCLEnabled = true; - mbThreadingEnabled = !ScCalcConfig::isOpenCLEnabled() && ScCalcConfig::isThreadingEnabled(); + if(ScCalcConfig::isOpenCLEnabled()) + { + meVectorState = FormulaVectorEnabled; + mbOpenCLEnabled = true; + mbThreadingEnabled = false; + } + else + { + meVectorState = FormulaVectorDisabled; + mbOpenCLEnabled = false; + mbThreadingEnabled = ScCalcConfig::isThreadingEnabled(); + } } bool ScTokenArray::IsFormulaVectorDisabled() const @@ -1887,11 +1896,9 @@ bool ScTokenArray::IsValidReference( ScRange& rRange, const ScAddress& rPos ) co ScTokenArray::ScTokenArray() : FormulaTokenArray(), - mnHashValue(0), - meVectorState(FormulaVectorEnabled), - mbOpenCLEnabled(true), - mbThreadingEnabled(!ScCalcConfig::isOpenCLEnabled() && ScCalcConfig::isThreadingEnabled()) + mnHashValue(0) { + ResetVectorState(); } ScTokenArray::~ScTokenArray() @@ -1929,9 +1936,7 @@ bool ScTokenArray::EqualTokens( const ScTokenArray* pArr2) const void ScTokenArray::Clear() { mnHashValue = 0; - meVectorState = FormulaVectorEnabled; - mbOpenCLEnabled = true; - mbThreadingEnabled = !ScCalcConfig::isOpenCLEnabled() && ScCalcConfig::isThreadingEnabled(); + ResetVectorState(); FormulaTokenArray::Clear(); } |