summaryrefslogtreecommitdiff
path: root/cli/ops/plugin.rs
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2020-05-29 17:41:39 -0400
committerGitHub <noreply@github.com>2020-05-29 17:41:39 -0400
commitd4b05dd89e94ed1bba5b24c683da0a895f2ce597 (patch)
tree7e098257f5558a624e1d691f92c4d6d4cef56667 /cli/ops/plugin.rs
parent106b00173806e088472e123d04fdc8d260c3820d (diff)
refactor: Split isolate and state using safe get_slot() (#5929)
Diffstat (limited to 'cli/ops/plugin.rs')
-rw-r--r--cli/ops/plugin.rs22
1 files changed, 13 insertions, 9 deletions
diff --git a/cli/ops/plugin.rs b/cli/ops/plugin.rs
index f55c91df8..fde34ea58 100644
--- a/cli/ops/plugin.rs
+++ b/cli/ops/plugin.rs
@@ -7,6 +7,7 @@ use crate::ops::json_op;
use crate::state::State;
use deno_core::plugin_api;
use deno_core::CoreIsolate;
+use deno_core::CoreIsolateState;
use deno_core::Op;
use deno_core::OpAsyncFuture;
use deno_core::OpId;
@@ -33,7 +34,7 @@ struct OpenPluginArgs {
}
pub fn op_open_plugin(
- isolate: &mut CoreIsolate,
+ isolate_state: &mut CoreIsolateState,
state: &State,
args: Value,
_zero_copy: Option<ZeroCopyBuf>,
@@ -50,7 +51,7 @@ pub fn op_open_plugin(
.map_err(OpError::from)?;
let plugin_resource = PluginResource::new(&plugin_lib);
- let mut resource_table = isolate.resource_table.borrow_mut();
+ let mut resource_table = isolate_state.resource_table.borrow_mut();
let rid = resource_table.add("plugin", Box::new(plugin_resource));
let plugin_resource = resource_table.get::<PluginResource>(rid).unwrap();
@@ -62,7 +63,7 @@ pub fn op_open_plugin(
.unwrap();
drop(resource_table);
- let mut interface = PluginInterface::new(isolate, &plugin_lib);
+ let mut interface = PluginInterface::new(isolate_state, &plugin_lib);
deno_plugin_init(&mut interface);
Ok(JsonOp::Sync(json!(rid)))
@@ -79,14 +80,17 @@ impl PluginResource {
}
struct PluginInterface<'a> {
- isolate: &'a mut CoreIsolate,
+ isolate_state: &'a mut CoreIsolateState,
plugin_lib: &'a Rc<Library>,
}
impl<'a> PluginInterface<'a> {
- fn new(isolate: &'a mut CoreIsolate, plugin_lib: &'a Rc<Library>) -> Self {
+ fn new(
+ isolate_state: &'a mut CoreIsolateState,
+ plugin_lib: &'a Rc<Library>,
+ ) -> Self {
Self {
- isolate,
+ isolate_state,
plugin_lib,
}
}
@@ -104,10 +108,10 @@ impl<'a> plugin_api::Interface for PluginInterface<'a> {
dispatch_op_fn: plugin_api::DispatchOpFn,
) -> OpId {
let plugin_lib = self.plugin_lib.clone();
- self.isolate.op_registry.register(
+ self.isolate_state.op_registry.register(
name,
- move |isolate, control, zero_copy| {
- let mut interface = PluginInterface::new(isolate, &plugin_lib);
+ move |isolate_state, control, zero_copy| {
+ let mut interface = PluginInterface::new(isolate_state, &plugin_lib);
let op = dispatch_op_fn(&mut interface, control, zero_copy);
match op {
sync_op @ Op::Sync(..) => sync_op,