summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron O'Mullan <aaron.omullan@gmail.com>2021-04-04 02:03:57 +0200
committerGitHub <noreply@github.com>2021-04-04 02:03:57 +0200
commit84e1df3ce22d6ffdaa8e7acd724c0abfee3eed90 (patch)
treec766bd92e169e41a5c4cdaa0da4ec8db6430f1e5
parent19d0e6b6710a61e6fdcf9f08e6057e49b349fe18 (diff)
perf(serde_v8): drop need for EscapableHandleScope (#9990)
This is another improvement to serde_v8's serialization code, it drops the need for creating a v8::EscapableHandleScope or "subscope".
-rw-r--r--serde_v8/src/ser.rs9
1 files changed, 3 insertions, 6 deletions
diff --git a/serde_v8/src/ser.rs b/serde_v8/src/ser.rs
index 54c1be5e4..16b6447b9 100644
--- a/serde_v8/src/ser.rs
+++ b/serde_v8/src/ser.rs
@@ -12,19 +12,16 @@ use crate::magic;
type JsValue<'s> = v8::Local<'s, v8::Value>;
type JsResult<'s> = Result<JsValue<'s>>;
-type ScopePtr<'a, 'b, 'c> = &'c RefCell<v8::EscapableHandleScope<'a, 'b>>;
+type ScopePtr<'a, 'b, 'c> = &'c RefCell<&'b mut v8::HandleScope<'a>>;
pub fn to_v8<'a, T>(scope: &mut v8::HandleScope<'a>, input: T) -> JsResult<'a>
where
T: Serialize,
{
- let subscope = v8::EscapableHandleScope::new(scope);
- let scopeptr = RefCell::new(subscope);
+ let scopeptr = RefCell::new(scope);
let serializer = Serializer::new(&scopeptr);
- let x = input.serialize(serializer)?;
- let x = scopeptr.borrow_mut().escape(x);
- Ok(x)
+ input.serialize(serializer)
}
/// Wraps other serializers into an enum tagged variant form.