diff options
author | Patrick Walton <pcwalton@mimiga.net> | 2015-06-08 17:39:13 -0700 |
---|---|---|
committer | Patrick Walton <pcwalton@mimiga.net> | 2015-06-12 15:00:02 -0700 |
commit | 8c210e1a270fd8848d3ee8ed7ef84fb6e00af661 (patch) | |
tree | db4a545a157b48d379035053cee79fcb396c3df6 /components/script/dom/htmltablecellelement.rs | |
parent | 41095c01a771c44f57da7f63b533741bf037918a (diff) | |
download | servo-8c210e1a270fd8848d3ee8ed7ef84fb6e00af661.tar.gz servo-8c210e1a270fd8848d3ee8ed7ef84fb6e00af661.zip |
script: Make `PartialEq` on element type IDs generate a lot less code.
This makes the difference between selector matching scaling on the ARM
Cortex-A9 and not, because the auto-derived `PartialEq` implementation
blows out the 32KB I-cache. With this change, there is a 2x improvement
in selector matching over sequential when using all 8 cores. (More work
needs to be done; this is a start.)
Diffstat (limited to 'components/script/dom/htmltablecellelement.rs')
-rw-r--r-- | components/script/dom/htmltablecellelement.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs index e9c3a0ab59a..7acc0f7e4ec 100644 --- a/components/script/dom/htmltablecellelement.rs +++ b/components/script/dom/htmltablecellelement.rs @@ -23,11 +23,18 @@ use std::cmp::max; const DEFAULT_COLSPAN: u32 = 1; -#[derive(Copy, Clone, PartialEq, Debug)] +#[derive(Copy, Clone, Debug)] #[jstraceable] pub enum HTMLTableCellElementTypeId { - HTMLTableDataCellElement, - HTMLTableHeaderCellElement, + HTMLTableDataCellElement = 0, + HTMLTableHeaderCellElement = 1, +} + +impl PartialEq for HTMLTableCellElementTypeId { + #[inline] + fn eq(&self, other: &HTMLTableCellElementTypeId) -> bool { + (*self as u8) == (*other as u8) + } } #[dom_struct] @@ -143,3 +150,4 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLTableCellElement> { } } } + |