style: Avoid scanning the longhand id twice in the fast path of PropertyDeclarationBlock::push_common.

This makes the overhead of this function much lower according to `perf`.

And in general makes sense, removing overhead from the fast path.

MozReview-Commit-ID: 4dJRap9dxNG
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
This commit is contained in:
Emilio Cobos Álvarez 2017-08-28 20:12:35 +02:00
parent 3b11145ef7
commit 344d53bd29
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C

View file

@ -402,12 +402,14 @@ impl PropertyDeclarationBlock {
importance: Importance,
overwrite_more_important_and_reuse_slot: bool
) -> bool {
let definitely_new = if let PropertyDeclarationId::Longhand(id) = declaration.id() {
!self.longhands.contains(id)
} else {
false // For custom properties, always scan
let longhand_id = match declaration.id() {
PropertyDeclarationId::Longhand(id) => Some(id),
PropertyDeclarationId::Custom(..) => None,
};
let definitely_new = longhand_id.map_or(false, |id| {
!self.longhands.contains(id)
});
if !definitely_new {
let mut index_to_remove = None;
@ -449,7 +451,7 @@ impl PropertyDeclarationBlock {
}
}
if let PropertyDeclarationId::Longhand(id) = declaration.id() {
if let Some(id) = longhand_id {
self.longhands.insert(id);
}
self.declarations.push((declaration, importance));