gecko-dev/dom/webidl/TextEncoder.webidl
Emilio Cobos Álvarez e12a18dac8 Bug 1607083 - Remove JSString usage from TextEncoder.encode. r=bzbarsky
UTF8String has small-size optimization already, and does what we were doing
taking less memory when the string is latin1, so it should be a clear
improvement unless I'm missing something.

I didn't remove it from encodeInto because it'd do more work in the case where
the UInt8Array doesn't have enough capacity... Not sure if that case is worth
optimizing or not, honestly.

Differential Revision: https://phabricator.services.mozilla.com/D58713

--HG--
extra : moz-landing-system : lando
2020-01-07 08:46:31 +00:00

49 lines
1.6 KiB
Plaintext

/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*
* The origin of this IDL file is
* http://encoding.spec.whatwg.org/#interface-textencoder
*
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
dictionary TextEncoderEncodeIntoResult {
unsigned long long read;
unsigned long long written;
};
[Exposed=(Window,Worker)]
interface TextEncoder {
constructor();
/*
* This is DOMString in the spec, but the value is always ASCII
* and short. By declaring this as ByteString, we get the same
* end result (storage as inline Latin1 string in SpiderMonkey)
* with fewer conversions.
*/
[Constant]
readonly attribute ByteString encoding;
/*
* This is spec-wise USVString but marking it as UTF8String as an
* optimization. (The SpiderMonkey-provided conversion to UTF-8 takes care of
* replacing lone surrogates with the REPLACEMENT CHARACTER, so the
* observable behavior of USVString is matched.)
*/
[NewObject]
Uint8Array encode(optional UTF8String input = "");
/*
* The same comment about UTF8String as above applies here with JSString.
*
* We use JSString because we don't want to encode the full string, just as
* much as the capacity of the Uint8Array.
*/
[CanOOM]
TextEncoderEncodeIntoResult encodeInto(JSString source, Uint8Array destination);
};