[Libreoffice-commits] core.git: Branch 'libreoffice-6-0' - 2 commits - sc/source
Eike Rathke
erack at redhat.com
Thu Dec 21 23:12:10 UTC 2017
sc/source/core/tool/token.cxx | 46 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 44 insertions(+), 2 deletions(-)
New commits:
commit 16d75204418455c0d9dff13607432dae33a7566e
Author: Eike Rathke <erack at redhat.com>
Date: Wed Dec 20 21:32:55 2017 +0100
Invert logic, include only known good, tdf#114251 related
Change-Id: Ic362ad6c35f7f6374fc262029251e48e4f82d778
Reviewed-on: https://gerrit.libreoffice.org/46863
Reviewed-by: Eike Rathke <erack at redhat.com>
Tested-by: Jenkins <ci at libreoffice.org>
(cherry picked from commit b366adcf5aca8bb22ccd0dd270ab08e9c8976b5b)
Reviewed-on: https://gerrit.libreoffice.org/46877
Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index 396c25537ffb..089ed5b5f48d 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -1670,11 +1670,18 @@ void ScTokenArray::CheckToken( const FormulaToken& r )
// All the rest, special commands, separators, error codes, ...
switch (eOp)
{
+ default:
+ // Default is off, no vectorization.
+ // Mentioning some specific values below to indicate why.
+
case ocName:
// Named expression would need "recursive" handling of its
// token array for vector state in
// ScFormulaCell::InterpretFormulaGroup() and below.
+ case ocDBArea:
+ // Certainly not a vectorization of the entire area..
+
case ocTableRef:
// May result in a single cell or range reference, depending on
// context.
@@ -1692,8 +1699,30 @@ void ScTokenArray::CheckToken( const FormulaToken& r )
mbOpenCLEnabled = false;
CheckForThreading(eOp);
break;
- default:
- ; // nothing
+
+ // Known good, don't change state.
+ case ocStop:
+ case ocExternal:
+ case ocOpen:
+ case ocClose:
+ case ocSep:
+ case ocArrayOpen:
+ case ocArrayRowSep:
+ case ocArrayColSep:
+ case ocArrayClose:
+ case ocMissing:
+ case ocBad:
+ case ocSpaces:
+ case ocSkip:
+ case ocPercentSign:
+ case ocErrNull:
+ case ocErrDivZero:
+ case ocErrValue:
+ case ocErrRef:
+ case ocErrName:
+ case ocErrNum:
+ case ocErrNA:
+ break;
}
}
}
commit 409f32c514a85ac735f82cbf36308c1709b569ec
Author: Eike Rathke <erack at redhat.com>
Date: Wed Dec 20 19:44:51 2017 +0100
Exclude more special OpCode values from vectorization
Namely those that have some reference assigned.
Change-Id: Icd5f79612295f13d552a256233b8f1298e3e5359
(cherry picked from commit b34c0cd9ada297e9565b1a93fcaa2a96333e1881)
Reviewed-on: https://gerrit.libreoffice.org/46859
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index aee7f56d8e8f..396c25537ffb 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -1674,6 +1674,19 @@ void ScTokenArray::CheckToken( const FormulaToken& r )
// Named expression would need "recursive" handling of its
// token array for vector state in
// ScFormulaCell::InterpretFormulaGroup() and below.
+
+ case ocTableRef:
+ // May result in a single cell or range reference, depending on
+ // context.
+
+ case ocColRowName:
+ // The associated reference is the name cell with which to
+ // create the implicit intersection.
+
+ case ocColRowNameAuto:
+ // Auto column/row names lead to references computed in
+ // interpreter.
+
SAL_INFO("sc.opencl", "opcode " << formula::FormulaCompiler().GetOpCodeMap(sheet::FormulaLanguage::ENGLISH)->getSymbol(eOp) << " disables vectorisation for formula group");
meVectorState = FormulaVectorDisabledByOpCode;
mbOpenCLEnabled = false;
More information about the Libreoffice-commits
mailing list