From 84e1df3ce22d6ffdaa8e7acd724c0abfee3eed90 Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Sun, 4 Apr 2021 02:03:57 +0200 Subject: 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". --- serde_v8/src/ser.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'serde_v8') 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>; -type ScopePtr<'a, 'b, 'c> = &'c RefCell>; +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. -- cgit v1.2.3