refactor(web): use encoding_rs for text encoding (#10844)

This commit removes all JS based text encoding / text decoding. Instead
encoding now happens in Rust via encoding_rs (already in tree). This
implementation retains stream support, but adds the last missing
encodings. We are incredibly close to 100% WPT on text encoding now.

This should reduce our baseline heap by quite a bit.
This commit is contained in:
Luca Casonato 2021-06-05 23:10:07 +02:00 committed by GitHub
parent bb0c90cadb
commit c73ef5fa14
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 641 additions and 4705 deletions

View file

@ -241,8 +241,7 @@
sendTypedArray(new DataView(data));
} else {
const string = String(data);
const encoder = new TextEncoder();
const d = encoder.encode(string);
const d = core.encode(string);
this.#bufferedAmount += d.size;
core.opAsync("op_ws_send", {
rid: this.#rid,
@ -262,8 +261,7 @@
);
}
const encoder = new TextEncoder();
if (reason && encoder.encode(reason).byteLength > 123) {
if (reason && core.encode(reason).byteLength > 123) {
throw new DOMException(
"The close reason may not be longer than 123 bytes.",
"SyntaxError",