summaryrefslogtreecommitdiff
path: root/deps/v8/src/builtins/finalization-registry.tq
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/builtins/finalization-registry.tq')
-rw-r--r--deps/v8/src/builtins/finalization-registry.tq15
1 files changed, 8 insertions, 7 deletions
diff --git a/deps/v8/src/builtins/finalization-registry.tq b/deps/v8/src/builtins/finalization-registry.tq
index 84499e19e1..389b9a5ce0 100644
--- a/deps/v8/src/builtins/finalization-registry.tq
+++ b/deps/v8/src/builtins/finalization-registry.tq
@@ -143,21 +143,22 @@ FinalizationRegistryRegister(
ThrowTypeError(
MessageTemplate::kWeakRefsRegisterTargetAndHoldingsMustNotBeSame);
}
- const unregisterToken = arguments[2];
// 5. If Type(unregisterToken) is not Object,
// a. If unregisterToken is not undefined, throw a TypeError exception.
// b. Set unregisterToken to empty.
- let hasUnregisterToken: bool = false;
- typeswitch (unregisterToken) {
+ const unregisterTokenRaw = arguments[2];
+ let unregisterToken: JSReceiver|Undefined;
+ typeswitch (unregisterTokenRaw) {
case (Undefined): {
+ unregisterToken = Undefined;
}
- case (JSReceiver): {
- hasUnregisterToken = true;
+ case (unregisterTokenObj: JSReceiver): {
+ unregisterToken = unregisterTokenObj;
}
case (JSAny): deferred {
ThrowTypeError(
MessageTemplate::kWeakRefsUnregisterTokenMustBeObject,
- unregisterToken);
+ unregisterTokenRaw);
}
}
// 6. Let cell be the Record { [[WeakRefTarget]] : target, [[HeldValue]]:
@@ -178,7 +179,7 @@ FinalizationRegistryRegister(
};
// 7. Append cell to finalizationRegistry.[[Cells]].
PushCell(finalizationRegistry, cell);
- if (hasUnregisterToken) {
+ if (unregisterToken != Undefined) {
// If an unregister token is provided, a runtime call is needed to
// do some OrderedHashTable operations and register the mapping.
// See v8:10705.