summaryrefslogtreecommitdiff
path: root/runtime/ops/os.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2022-06-08 17:45:38 +0200
committerGitHub <noreply@github.com>2022-06-08 17:45:38 +0200
commitba13b8e2a9efff13e4a7c0659bb2ed184cc4e683 (patch)
tree787dfd5f56557cfb6f25008924118ef0c53e1ab7 /runtime/ops/os.rs
parent4911acb148a4b7b22a205772e2e9c410ee5be9c7 (diff)
refactor: ensure exit code reference is passed to all workers (#14814)
Diffstat (limited to 'runtime/ops/os.rs')
-rw-r--r--runtime/ops/os.rs13
1 files changed, 5 insertions, 8 deletions
diff --git a/runtime/ops/os.rs b/runtime/ops/os.rs
index 37da410ca..f138bae31 100644
--- a/runtime/ops/os.rs
+++ b/runtime/ops/os.rs
@@ -2,6 +2,7 @@
use super::utils::into_string;
use crate::permissions::Permissions;
+use crate::worker::ExitCode;
use deno_core::error::{type_error, AnyError};
use deno_core::op;
use deno_core::url::Url;
@@ -10,11 +11,8 @@ use deno_core::OpState;
use serde::Serialize;
use std::collections::HashMap;
use std::env;
-use std::sync::atomic::AtomicI32;
-use std::sync::atomic::Ordering::Relaxed;
-use std::sync::Arc;
-pub fn init(maybe_exit_code: Option<Arc<AtomicI32>>) -> Extension {
+pub fn init(exit_code: ExitCode) -> Extension {
Extension::builder()
.ops(vec![
op_env::decl(),
@@ -33,8 +31,7 @@ pub fn init(maybe_exit_code: Option<Arc<AtomicI32>>) -> Extension {
op_system_memory_info::decl(),
])
.state(move |state| {
- let exit_code = maybe_exit_code.clone().unwrap_or_default();
- state.put::<Arc<AtomicI32>>(exit_code);
+ state.put::<ExitCode>(exit_code.clone());
Ok(())
})
.build()
@@ -105,12 +102,12 @@ fn op_delete_env(state: &mut OpState, key: String) -> Result<(), AnyError> {
#[op]
fn op_set_exit_code(state: &mut OpState, code: i32) {
- state.borrow_mut::<Arc<AtomicI32>>().store(code, Relaxed);
+ state.borrow_mut::<ExitCode>().set(code);
}
#[op]
fn op_exit(state: &mut OpState) {
- let code = state.borrow::<Arc<AtomicI32>>().load(Relaxed);
+ let code = state.borrow::<ExitCode>().get();
std::process::exit(code)
}