summaryrefslogtreecommitdiff
path: root/runtime/code_cache.rs
diff options
context:
space:
mode:
authorIgor Zinkovsky <igor@deno.com>2024-04-17 07:19:55 -0700
committerGitHub <noreply@github.com>2024-04-17 07:19:55 -0700
commitb3d7df55357ea6fc6f5141b64a9638ddb39b0f63 (patch)
tree0ca14140c7e080ed3367a7352bbaf3ed5f7a0f48 /runtime/code_cache.rs
parent9acbf90b06bf79dd6e4cf2428b3566da009bed65 (diff)
perf: v8 code cache (#23081)
This PR enables V8 code cache for ES modules and for `require` scripts through `op_eval_context`. Code cache artifacts are transparently stored and fetched using sqlite db and are passed to V8. `--no-code-cache` can be used to disable. --------- Co-authored-by: Bartek IwaƄczuk <biwanczuk@gmail.com>
Diffstat (limited to 'runtime/code_cache.rs')
-rw-r--r--runtime/code_cache.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/runtime/code_cache.rs b/runtime/code_cache.rs
new file mode 100644
index 000000000..ccc070365
--- /dev/null
+++ b/runtime/code_cache.rs
@@ -0,0 +1,31 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+pub enum CodeCacheType {
+ EsModule,
+ Script,
+}
+
+impl CodeCacheType {
+ pub fn as_str(&self) -> &str {
+ match self {
+ Self::EsModule => "esmodule",
+ Self::Script => "script",
+ }
+ }
+}
+
+pub trait CodeCache: Send + Sync {
+ fn get_sync(
+ &self,
+ specifier: &str,
+ code_cache_type: CodeCacheType,
+ source_hash: &str,
+ ) -> Option<Vec<u8>>;
+ fn set_sync(
+ &self,
+ specifier: &str,
+ code_cache_type: CodeCacheType,
+ source_hash: &str,
+ data: &[u8],
+ );
+}