0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-03 09:31:22 -05:00

perf(core): optimize encode on large strings (#14619)

Follow up to serde_v8's #14450
This commit is contained in:
Aaron O'Mullan 2022-05-15 17:52:32 +02:00 committed by GitHub
parent c9e9265c3e
commit 8744ee883e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 4 deletions

View file

@ -896,11 +896,11 @@ fn encode(
return;
}
};
let text_str = text.to_rust_string_lossy(scope);
let bytes: Box<[u8]> = text_str.into_bytes().into_boxed_slice();
let text_str = serde_v8::to_utf8(text, scope);
let bytes = text_str.into_bytes();
let len = bytes.len();
let backing_store =
v8::ArrayBuffer::new_backing_store_from_boxed_slice(bytes).make_shared();
v8::ArrayBuffer::new_backing_store_from_vec(bytes).make_shared();
let buffer = v8::ArrayBuffer::with_backing_store(scope, &backing_store);
let u8array = v8::Uint8Array::new(scope, buffer, 0, len).unwrap();
rv.set(u8array.into())

View file

@ -8,7 +8,7 @@ mod ser;
mod serializable;
pub mod utils;
pub use de::{from_v8, from_v8_cached, Deserializer};
pub use de::{from_v8, from_v8_cached, to_utf8, Deserializer};
pub use error::{Error, Result};
pub use keys::KeyCache;
pub use magic::buffer::ZeroCopyBuf;