sc/source/core/inc/interpre.hxx | 4 ---- sc/source/core/tool/interpr1.cxx | 6 +++--- sc/source/core/tool/interpr4.cxx | 18 ++++++------------ 3 files changed, 9 insertions(+), 19 deletions(-)
New commits: commit 4d6dc9b84b0afd31a380e71fd53a3bc99d403430 Author: Eike Rathke <[email protected]> Date: Thu Aug 25 15:50:31 2016 +0200 ditch the now unused ever cloning PushTempToken(const formula::FormulaToken&) Change-Id: I0d09039a5f9cb797b5b72f3ee9044eab7c8f05c5 diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx index 6551f5b..e454daa 100644 --- a/sc/source/core/inc/interpre.hxx +++ b/sc/source/core/inc/interpre.hxx @@ -264,10 +264,6 @@ void Push( const formula::FormulaToken& r ); explicit formula::FormulaErrorToken. Increments RefCount. */ void PushWithoutError( const formula::FormulaToken& r ); -/** Clones the token to be pushed or substitutes with formula::FormulaErrorToken if - nGlobalError is set and the token passed is not formula::FormulaErrorToken. */ -void PushTempToken( const formula::FormulaToken& ); - /** Does substitute with formula::FormulaErrorToken in case nGlobalError is set and the token passed is not formula::FormulaErrorToken. Increments RefCount of the original token if not substituted. diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index 2d9ff53..5c39c81 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -705,12 +705,6 @@ void ScInterpreter::PushTempTokenWithoutError( const FormulaToken* p ) } } -void ScInterpreter::PushTempToken( const FormulaToken& r ) -{ - if (!IfErrorPushError()) - PushTempTokenWithoutError( r.Clone()); -} - void ScInterpreter::PushTokenRef( const formula::FormulaConstTokenRef& x ) { if ( sp >= MAXSTACK ) commit a7d645f27f4723f38769a5b079765fa98399e8a7 Author: Eike Rathke <[email protected]> Date: Thu Aug 25 14:08:45 2016 +0200 use PushTokenRef() instead of PushTempToken(const formula::FormulaToken&) ... which unnecessarily clones. Change-Id: I06ecce94439c2923011f18f69be48a50048c6dde diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index 64b151d..2d9ff53 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -4394,10 +4394,10 @@ StackVar ScInterpreter::Interpret() // Not all functions pop all parameters in case an error is // generated. Clean up stack. Assumes that every function pushes a // result, may be arbitrary in case of error. - const FormulaToken* pLocalResult = pStack[ sp - 1 ]; + FormulaConstTokenRef xLocalResult = pStack[ sp - 1 ]; while (sp > nStackBase) Pop(); - PushTempToken( *pLocalResult ); + PushTokenRef( xLocalResult ); } bool bGotResult; @@ -4543,13 +4543,13 @@ StackVar ScInterpreter::Interpret() break; case svExternalSingleRef: { - ScExternalRefCache::TokenRef pToken; + FormulaTokenRef xToken; ScExternalRefCache::CellFormat aFmt; - PopExternalSingleRef(pToken, &aFmt); + PopExternalSingleRef(xToken, &aFmt); if (nGlobalError) break; - PushTempToken(*pToken); + PushTokenRef(xToken); if (aFmt.mbIsSet) { commit f26a37e4ad0b74c04b6c19c43c1ad209e6f92756 Author: Eike Rathke <[email protected]> Date: Thu Aug 25 12:53:48 2016 +0200 use PushWithoutError() when fishing from and pushing to the stack ... so no unnecessary copy is created. Change-Id: I0fbd31c0b6faf8691405a53884d8740f80d7ad4e diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index 85f443f..3d35f6c 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -6645,7 +6645,7 @@ void ScInterpreter::ScSubTotal() { // We must fish the 1st parameter deep from the stack! And push it on top. const FormulaToken* p = pStack[ sp - nParamCount ]; - PushTempToken( *p ); /* TODO: use FormulaTokenRef instead */ + PushWithoutError( *p ); sal_Int32 nFunc = GetInt32(); mnSubTotalFlags |= SUBTOTAL_IGN_NESTED_ST_AG | SUBTOTAL_IGN_FILTERED; if (nFunc > 100) @@ -6692,11 +6692,11 @@ void ScInterpreter::ScAggregate() { // fish the 1st parameter from the stack and push it on top. const FormulaToken* p = pStack[ sp - nParamCount ]; - PushTempToken( *p ); /* TODO: use FormulaTokenRef instead */ + PushWithoutError( *p ); sal_Int32 nFunc = GetInt32(); // fish the 2nd parameter from the stack and push it on top. const FormulaToken* p2 = pStack[ sp - ( nParamCount - 1 ) ]; - PushTempToken( *p2 ); /* TODO: use FormulaTokenRef instead */ + PushWithoutError( *p2 ); sal_Int32 nOption = GetInt32(); if ( nGlobalError || nFunc < 1 || nFunc > 19 ) commit 035fc620b833a853a5ef84a7a05298be8d91a24c Author: Eike Rathke <[email protected]> Date: Thu Aug 25 12:38:13 2016 +0200 move the nCurFmtType=UNDEFINED from PushWithoutError() ... to the only place where it makes sense. Change-Id: I8a2927af97abee28dd0ec89793c4745dcbd0031f diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index c6e3f20..64b151d 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -628,7 +628,6 @@ void ScInterpreter::PushWithoutError( const FormulaToken& r ) SetError( errStackOverflow ); else { - nCurFmtType = css::util::NumberFormat::UNDEFINED; r.IncRef(); if( sp >= maxsp ) maxsp = sp + 1; @@ -3885,6 +3884,7 @@ StackVar ScInterpreter::Interpret() { // RPN code push without error PushWithoutError( *pCur ); + nCurFmtType = css::util::NumberFormat::UNDEFINED; } else if (pTokenMatrixMap && !(eOp == ocIf || eOp == ocIfError || eOp == ocIfNA || eOp == ocChoose) && _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
