diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/01_core.js | 2 | ||||
-rw-r--r-- | core/bindings.rs | 32 |
2 files changed, 17 insertions, 17 deletions
diff --git a/core/01_core.js b/core/01_core.js index 2683f4adf..d48424288 100644 --- a/core/01_core.js +++ b/core/01_core.js @@ -217,7 +217,7 @@ function metrics() { const [aggregate, perOps] = opSync("op_metrics"); aggregate.ops = ObjectFromEntries(ArrayPrototypeMap( - core.op_names, + core.opNames(), (opName, opId) => [opName, perOps[opId]], )); return aggregate; diff --git a/core/bindings.rs b/core/bindings.rs index d2335d49c..cb57b43fe 100644 --- a/core/bindings.rs +++ b/core/bindings.rs @@ -114,6 +114,9 @@ pub static EXTERNAL_REFERENCES: Lazy<v8::ExternalReferences> = v8::ExternalReference { function: apply_source_map.map_fn_to(), }, + v8::ExternalReference { + function: op_names.map_fn_to(), + }, ]) }); @@ -174,13 +177,10 @@ pub fn initialize_context<'s>( // a really weird usecase. Remove this once all // tsc ops are static at snapshot time. if snapshot_loaded { - // Grab the Deno.core & Deno.core.ops objects - let core_obj = JsRuntime::grab_global::<v8::Object>(scope, "Deno.core") - .expect("Deno.core to exist"); + // Grab the Deno.core.ops object & init it let ops_obj = JsRuntime::grab_global::<v8::Object>(scope, "Deno.core.ops") .expect("Deno.core.ops to exist"); initialize_ops(scope, ops_obj, op_ctxs); - initialize_op_names(scope, core_obj, op_ctxs); return scope.escape(context); } @@ -243,6 +243,7 @@ pub fn initialize_context<'s>( set_func(scope, core_val, "destructureError", destructure_error); set_func(scope, core_val, "terminate", terminate); set_func(scope, core_val, "applySourceMap", apply_source_map); + set_func(scope, core_val, "opNames", op_names); // Direct bindings on `window`. set_func(scope, global, "queueMicrotask", queue_microtask); @@ -250,7 +251,6 @@ pub fn initialize_context<'s>( // Bind functions to Deno.core.ops.* let ops_obj = JsRuntime::ensure_objs(scope, global, "Deno.core.ops").unwrap(); initialize_ops(scope, ops_obj, op_ctxs); - initialize_op_names(scope, core_val, op_ctxs); scope.escape(context) } @@ -265,17 +265,6 @@ fn initialize_ops( } } -fn initialize_op_names( - scope: &mut v8::HandleScope, - core_obj: v8::Local<v8::Object>, - op_ctxs: &[OpCtx], -) { - let names: Vec<&str> = op_ctxs.iter().map(|o| o.decl.name).collect(); - let k = v8::String::new(scope, "op_names").unwrap().into(); - let v = serde_v8::to_v8(scope, names).unwrap(); - core_obj.set(scope, k, v); -} - pub fn set_func( scope: &mut v8::HandleScope<'_>, obj: v8::Local<v8::Object>, @@ -1553,3 +1542,14 @@ fn get_memory_usage(isolate: &mut v8::Isolate) -> MemoryUsage { external: s.external_memory(), } } + +fn op_names( + scope: &mut v8::HandleScope, + _args: v8::FunctionCallbackArguments, + mut rv: v8::ReturnValue, +) { + let state_rc = JsRuntime::state(scope); + let state = state_rc.borrow(); + let names: Vec<_> = state.op_ctxs.iter().map(|o| o.decl.name).collect(); + rv.set(serde_v8::to_v8(scope, names).unwrap()); +} |