deps: V8: cherry-pick e3df60f3f5ab · nodejs/node@4b61f10 · GitHub
Skip to content

Commit 4b61f10

Browse files
legendecasRafaelGSS
authored andcommitted
deps: V8: cherry-pick e3df60f3f5ab
Original commit message: [objects] allow host defined serializer of JSError Allow host defined serializer and deserializer of JSError in ValueSerializer API. This allows hosts that implement DOMException in JS to support `Error.isError` proposal and `structuredClone`. Refs: #58691 Change-Id: I022821c9abd659970c4d449b3c69c5fb54d0618a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6637876 Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Chengzhong Wu <cwu631@bloomberg.net> Cr-Commit-Position: refs/heads/main@{#100894} Refs: v8/v8@e3df60f PR-URL: #58691 Fixes: #56497 Refs: #58138 Reviewed-By: Jason Zhang <xzha4350@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Ethan Arrowood <ethan@arrowood.dev> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 96c78d7 commit 4b61f10

3 files changed

Lines changed: 75 additions & 3 deletions

File tree

common.gypi

Lines changed: 1 addition & 1 deletion

deps/v8/src/objects/value-serializer.cc

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -649,8 +649,17 @@ Maybe<bool> ValueSerializer::WriteJSReceiver(
649649
case JS_DATA_VIEW_TYPE:
650650
case JS_RAB_GSAB_DATA_VIEW_TYPE:
651651
return WriteJSArrayBufferView(Cast<JSArrayBufferView>(*receiver));
652-
case JS_ERROR_TYPE:
653-
return WriteJSError(Cast<JSObject>(receiver));
652+
case JS_ERROR_TYPE: {
653+
DirectHandle<JSObject> js_error = Cast<JSObject>(receiver);
654+
Maybe<bool> is_host_object = IsHostObject(js_error);
655+
if (is_host_object.IsNothing()) {
656+
return is_host_object;
657+
}
658+
if (is_host_object.FromJust()) {
659+
return WriteHostObject(js_error);
660+
}
661+
return WriteJSError(js_error);
662+
}
654663
case JS_SHARED_ARRAY_TYPE:
655664
return WriteJSSharedArray(Cast<JSSharedArray>(receiver));
656665
case JS_SHARED_STRUCT_TYPE:

deps/v8/test/unittests/objects/value-serializer-unittest.cc

Lines changed: 63 additions & 0 deletions

0 commit comments

Comments
 (0)