mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
style: Use an AutoTArray for atom arrays in attributes (class / part).
These are never empty, and storing 4 elements inline seems worth it given we also heap-allocate the array itself. Depends on D100592 Differential Revision: https://phabricator.services.mozilla.com/D100593
This commit is contained in:
parent
b8d46406f6
commit
892b0ffb5d
1 changed files with 6 additions and 3 deletions
|
@ -43,14 +43,16 @@ unsafe fn get_class_or_part_from_attr(attr: &structs::nsAttrValue) -> Class {
|
||||||
(*container).mType,
|
(*container).mType,
|
||||||
structs::nsAttrValue_ValueType_eAtomArray
|
structs::nsAttrValue_ValueType_eAtomArray
|
||||||
);
|
);
|
||||||
let array = (*container)
|
// NOTE: Bindgen doesn't deal with AutoTArray, so cast it below.
|
||||||
|
let array: *mut u8 = *(*container)
|
||||||
.__bindgen_anon_1
|
.__bindgen_anon_1
|
||||||
.mValue
|
.mValue
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.__bindgen_anon_1
|
.__bindgen_anon_1
|
||||||
.mAtomArray
|
.mAtomArray
|
||||||
.as_ref();
|
.as_ref();
|
||||||
return Class::More(&***array)
|
let array = array as *const structs::nsTArray<structs::RefPtr<nsAtom>>;
|
||||||
|
return Class::More(&**array)
|
||||||
}
|
}
|
||||||
debug_assert_eq!(base_type, structs::nsAttrValue_ValueBaseType_eStringBase);
|
debug_assert_eq!(base_type, structs::nsAttrValue_ValueBaseType_eStringBase);
|
||||||
Class::None
|
Class::None
|
||||||
|
@ -132,7 +134,8 @@ pub fn has_class_or_part(
|
||||||
Class::One(atom) => unsafe { case_sensitivity.eq_atom(name, WeakAtom::new(atom)) },
|
Class::One(atom) => unsafe { case_sensitivity.eq_atom(name, WeakAtom::new(atom)) },
|
||||||
Class::More(atoms) => match case_sensitivity {
|
Class::More(atoms) => match case_sensitivity {
|
||||||
CaseSensitivity::CaseSensitive => {
|
CaseSensitivity::CaseSensitive => {
|
||||||
atoms.iter().any(|atom| atom.mRawPtr == name.as_ptr())
|
let name_ptr = name.as_ptr();
|
||||||
|
atoms.iter().any(|atom| atom.mRawPtr == name_ptr)
|
||||||
},
|
},
|
||||||
CaseSensitivity::AsciiCaseInsensitive => unsafe {
|
CaseSensitivity::AsciiCaseInsensitive => unsafe {
|
||||||
atoms
|
atoms
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue