diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2021-04-04 02:03:57 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-04 02:03:57 +0200 |
commit | 84e1df3ce22d6ffdaa8e7acd724c0abfee3eed90 (patch) | |
tree | c766bd92e169e41a5c4cdaa0da4ec8db6430f1e5 | |
parent | 19d0e6b6710a61e6fdcf9f08e6057e49b349fe18 (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.rs | 9 |
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. |