aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2014-01-24 17:22:15 -0800
committerbors-servo <release+servo@mozilla.com>2014-01-24 17:22:15 -0800
commit86c29d253a6ffada3488cb08d0154d8901ec252e (patch)
treefdf74804c89476e0d4ac16b20a8979fac1851a58 /src
parent6ee9f8a98248b792e0f93e9460362f37d580559f (diff)
parent1b786fe414036d5df661f63e56d0079b0ed22f80 (diff)
downloadservo-86c29d253a6ffada3488cb08d0154d8901ec252e.tar.gz
servo-86c29d253a6ffada3488cb08d0154d8901ec252e.zip
auto merge of #1554 : pcwalton/servo/faster-attribute-comparison, r=SimonSapin
15% improvement in selector matching performance on the rainbow page. r? @SimonSapin
Diffstat (limited to 'src')
-rw-r--r--src/components/script/dom/element.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs
index 309204ee7a9..d2a5d2057ea 100644
--- a/src/components/script/dom/element.rs
+++ b/src/components/script/dom/element.rs
@@ -157,15 +157,16 @@ impl Element {
}).map(|&x| x)
}
+ #[inline]
pub unsafe fn get_attr_val_for_layout(&self, namespace: Namespace, name: &str)
-> Option<&'static str> {
- // FIXME: only case-insensitive in the HTML namespace (as opposed to SVG, etc.)
- let name = name.to_ascii_lower();
self.attrs.iter().find(|attr: & &@mut Attr| {
// unsafely avoid a borrow because this is accessed by many tasks
// during parallel layout
+ // FIXME: only case-insensitive in the HTML namespace (as opposed to SVG, etc.)
let attr: ***Box<Attr> = cast::transmute(attr);
- name == (***attr).data.local_name && (***attr).data.namespace == namespace
+ name.eq_ignore_ascii_case((***attr).data.local_name) &&
+ (***attr).data.namespace == namespace
}).map(|attr| {
let attr: **Box<Attr> = cast::transmute(attr);
cast::transmute((**attr).data.value.as_slice())