summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2014-06-20 13:50:32 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-06-24 09:45:22 +0200
commit7d32ac663e7ac4c6f3f22d003c3f36437be43399 (patch)
treeb34c44ae0b2e3262d0250620dec94a4987248fb6
parent22c818bd9fa79a2c008719cc0a858ba2a74b0d82 (diff)
fdo#76260 - Switch from vector to std::stack.
std::stack uses std::deque which is extremely expensive for this case. This change saves 43bn of 98bn cycles spent in createFastChildContext. Change-Id: I63919a9826563171f128e09d7206ac6cfdde336f (cherry picked from commit 295b97b2a654e00ac5a8e6a3545284fa583fce78) Signed-off-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.cxx6
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.hxx2
2 files changed, 4 insertions, 4 deletions
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
index 1a436ce1dac9..7fd973c5d5e8 100644
--- a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
@@ -181,7 +181,7 @@ bool OOXMLFastContextHandler::prepareMceContext(Token_t nElement, const uno::Ref
m_bDiscardChildren = false;
aState.m_bTookChoice = m_bTookChoice;
m_bTookChoice = false;
- m_aSavedAlternateStates.push(aState);
+ m_aSavedAlternateStates.push_back(aState);
}
break;
case OOXML_Choice:
@@ -268,8 +268,8 @@ throw (uno::RuntimeException, xml::sax::SAXException, std::exception)
m_bDiscardChildren = false;
else if (Element == (NS_mce | OOXML_AlternateContent))
{
- SavedAlternateState aState(m_aSavedAlternateStates.top());
- m_aSavedAlternateStates.pop();
+ SavedAlternateState aState(m_aSavedAlternateStates.back());
+ m_aSavedAlternateStates.pop_back();
m_bDiscardChildren = aState.m_bDiscardChildren;
m_bTookChoice = aState.m_bTookChoice;
}
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
index f8f26384ae15..a7d9bfa982ab 100644
--- a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
@@ -300,7 +300,7 @@ private:
uno::Reference< uno::XComponentContext > m_xContext;
bool m_bDiscardChildren;
bool m_bTookChoice; ///< Did we take the Choice or want Fallback instead?
- std::stack<SavedAlternateState> m_aSavedAlternateStates;
+ std::vector<SavedAlternateState> m_aSavedAlternateStates;
static sal_uInt32 mnInstanceCount;