diff options
author | Eike Rathke <erack@redhat.com> | 2017-06-06 20:53:00 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2017-06-07 00:55:00 +0200 |
commit | 3f94381f72782e0c5b16df12de6d52de96e8a0d5 (patch) | |
tree | 2604568ad0154b52c414d65264177c9da6f860c7 /svl | |
parent | 2555243dce5920630b487275617a2551ab7e299b (diff) |
Perf-sc: tdf#100709 SfxPoolItem::IsVoidItem() instead of dynamic_cast
SfxItemSet::GetItemState()
before, Ir: 4 048 231 416
after, Ir: 2 577 117 709
Change-Id: I26d8b91ad5d851011a670b38b7b98e5582c319cf
(cherry picked from commit f300a627b9a88eb8814cc35844ed7c6aa7f19379)
Reviewed-on: https://gerrit.libreoffice.org/38462
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins <ci@libreoffice.org>
Diffstat (limited to 'svl')
-rw-r--r-- | svl/source/items/itemset.cxx | 2 | ||||
-rw-r--r-- | svl/source/items/poolitem.cxx | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/svl/source/items/itemset.cxx b/svl/source/items/itemset.cxx index e69418456833..ddd821d85218 100644 --- a/svl/source/items/itemset.cxx +++ b/svl/source/items/itemset.cxx @@ -440,7 +440,7 @@ SfxItemState SfxItemSet::GetItemState( sal_uInt16 nWhich, // Different ones are present return SfxItemState::DONTCARE; - if ( dynamic_cast<const SfxVoidItem *>(*ppFnd) != nullptr ) + if ( (*ppFnd)->IsVoidItem() ) return SfxItemState::DISABLED; if (ppItem) diff --git a/svl/source/items/poolitem.cxx b/svl/source/items/poolitem.cxx index ba27df64fcf1..5c2c77cae919 100644 --- a/svl/source/items/poolitem.cxx +++ b/svl/source/items/poolitem.cxx @@ -136,6 +136,10 @@ SfxPoolItem* SfxPoolItem::CloneSetWhich( sal_uInt16 nNewWhich ) const return pItem; } +bool SfxPoolItem::IsVoidItem() const +{ + return false; +} SfxPoolItem* SfxVoidItem::CreateDefault() { @@ -186,6 +190,11 @@ SfxPoolItem* SfxVoidItem::Clone(SfxItemPool *) const return new SfxVoidItem(*this); } +bool SfxVoidItem::IsVoidItem() const +{ + return true; +} + void SfxPoolItem::ScaleMetrics( long /*lMult*/, long /*lDiv*/ ) { } |