use rusty_v8 as v8;
use std::collections::{HashMap, BTreeMap};
#[allow(dead_code)]
pub struct IsolateGuard {
isolate: Option<v8::OwnedIsolate>,
return_to_pool: bool,
}
#[allow(dead_code)]
impl IsolateGuard {
pub fn new(isolate: v8::OwnedIsolate, return_to_pool: bool) -> Self {
Self {
isolate: Some(isolate),
return_to_pool,
}
}
pub fn get(&self) -> &v8::OwnedIsolate {
self.isolate.as_ref().expect("Isolate already released")
}
pub fn get_mut(&mut self) -> &mut v8::OwnedIsolate {
self.isolate.as_mut().expect("Isolate already released")
}
}
impl Drop for IsolateGuard {
fn drop(&mut self) {
if let Some(mut isolate) = self.isolate.take() {
isolate.low_memory_notification();
if self.return_to_pool {
#[cfg(not(test))]
{
crate::isolate_pool::release_isolate(isolate);
}
#[cfg(test)]
{
drop(isolate);
}
} else {
drop(isolate);
}
}
}
}