perf(core): preserve ops between snapshots (#18080)

This commit changes the build process in a way that preserves already
registered ops in the snapshot. This allows us to skip creating hundreds of
"v8::String" on each startup, but sadly there is still some op registration
going on startup (however we're registering 49 ops instead of >200 ops). 

This situation could be further improved, by moving some of the ops 
from "runtime/" to a separate extension crates.

---------

Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
This commit is contained in:
Bartek Iwańczuk 2023-03-18 07:51:21 -04:00 committed by GitHub
parent 9bfa8dc90c
commit 4b6305f4f2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
54 changed files with 278 additions and 125 deletions

View file

@ -145,6 +145,7 @@ impl Op {
is_async: #is_async,
is_unstable: #is_unstable,
is_v8: #is_v8,
force_registration: false,
}
}
@ -201,6 +202,7 @@ impl Op {
is_async: #is_async,
is_unstable: #is_unstable,
is_v8: #is_v8,
force_registration: false,
}
}

View file

@ -26,6 +26,7 @@ impl op_void_async {
is_async: true,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_async_result {
is_async: true,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_fallback {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_cow_str {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_f64_buf {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -22,6 +22,7 @@ impl op_sync_serialize_object_with_numbers_as_keys {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -22,6 +22,7 @@ impl send_stdin {
is_async: true,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -22,6 +22,7 @@ impl send_stdin {
is_async: true,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -22,6 +22,7 @@ impl op_blob_revoke_object_url {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_ffi_ptr_value {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -22,6 +22,7 @@ impl op_print {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_set_exit_code {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl foo {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -32,6 +32,7 @@ impl op_foo {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl foo {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_listen {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -32,6 +32,7 @@ impl op_now {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_add_4 {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -22,6 +22,7 @@ impl op_try_close {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_string_length {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -22,6 +22,7 @@ impl op_read_sync {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -32,6 +32,7 @@ impl op_ffi_ptr_of {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_is_proxy {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_string_length {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -22,6 +22,7 @@ impl op_string_length {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -22,6 +22,7 @@ impl op_bench_now {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_import_spki_x25519 {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_unit_result {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_set_nodelay {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_unit {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]

View file

@ -26,6 +26,7 @@ impl op_wasm {
is_async: false,
is_unstable: false,
is_v8: false,
force_registration: false,
}
}
#[inline]