From f2f91886ee2a1082e47b44a9ffd372170ffc30cc Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Sun, 2 Aug 2015 17:34:17 -0700 Subject: [PATCH] script: Stop reallocating so much when converting DOM strings to JS values. `size_hint()` in `utf16_units()` seems busted, so we do it ourselves. --- components/script/dom/bindings/conversions.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/script/dom/bindings/conversions.rs b/components/script/dom/bindings/conversions.rs index eed41d6f926..23105fa7810 100644 --- a/components/script/dom/bindings/conversions.rs +++ b/components/script/dom/bindings/conversions.rs @@ -394,8 +394,9 @@ impl> FromJSValConvertible for Finite impl ToJSValConvertible for str { fn to_jsval(&self, cx: *mut JSContext, rval: MutableHandleValue) { + let mut string_utf16: Vec = Vec::with_capacity(self.len()); unsafe { - let string_utf16: Vec = self.utf16_units().collect(); + string_utf16.extend(self.utf16_units()); let jsstr = JS_NewUCStringCopyN(cx, string_utf16.as_ptr() as *const i16, string_utf16.len() as libc::size_t); if jsstr.is_null() {