[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