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.)
This commit is contained in:
Patrick Walton 2015-06-08 17:39:13 -07:00
parent 41095c01a7
commit 8c210e1a27
4 changed files with 83 additions and 8 deletions

View file

@ -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> {
}
}
}