summaryrefslogtreecommitdiff
path: root/runtime/ops/os.rs
diff options
context:
space:
mode:
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)
}