mirror of
https://github.com/denoland/deno.git
synced 2024-12-25 16:49:18 -05:00
41c7e96f1a
* In order to prevent ArrayBuffers from getting garbage collected by V8, we used to store a v8::Persistent<ArrayBuffer> in a map. This patch introduces a custom ArrayBuffer allocator which doesn't use Persistent handles, but instead stores a pointer to the actual ArrayBuffer data alongside with a reference count. Since creating Persistent handles has quite a bit of overhead, this change significantly increases performance. Various HTTP server benchmarks report about 5-10% more requests per second than before. * Previously the Persistent handle that prevented garbage collection had to be released manually, and this wasn't always done, which was causing memory leaks. This has been resolved by introducing a new `PinnedBuf` type in both Rust and C++ that automatically re-enables garbage collection when it goes out of scope. * Zero-copy buffers are now correctly wrapped in an Option if there is a possibility that they're not present. This clears up a correctness issue where we were creating zero-length slices from a null pointer, which is against the rules. |
||
---|---|---|
.. | ||
ansi.rs | ||
BUILD.gn | ||
build.rs | ||
Cargo.toml | ||
compiler.rs | ||
deno_dir.rs | ||
errors.rs | ||
flags.rs | ||
fs.rs | ||
global_timer.rs | ||
http_body.rs | ||
http_util.rs | ||
js_errors.rs | ||
main.rs | ||
msg.fbs | ||
msg.rs | ||
msg_util.rs | ||
ops.rs | ||
permissions.rs | ||
repl.rs | ||
resolve_addr.rs | ||
resources.rs | ||
signal.rs | ||
startup_data.rs | ||
state.rs | ||
tokio_util.rs | ||
tokio_write.rs | ||
version.rs | ||
worker.rs |