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

@ -5,7 +5,6 @@ use std::path::PathBuf;
use deno_core::snapshot_util::*;
use deno_core::Extension;
use deno_core::ExtensionBuilder;
use deno_core::ExtensionFileSource;
use deno_core::ExtensionFileSourceCode;
use deno_runtime::deno_cache::SqliteBackedCache;
@ -318,7 +317,7 @@ deno_core::extension!(
dir "js",
"40_testing.js"
],
customizer = |ext: &mut ExtensionBuilder| {
customizer = |ext: &mut deno_core::ExtensionBuilder| {
ext.esm(vec![ExtensionFileSource {
specifier: "runtime/js/99_main.js".to_string(),
code: ExtensionFileSourceCode::LoadedFromFsDuringSnapshot(