From 777ae53615e4ed77980c3ad792a0602d24719bd3 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Sat, 11 Sep 2021 15:54:18 -0400 Subject: [PATCH] LibJS: Convert WeakRef.prototype to be a PrototypeObject --- .../Libraries/LibJS/Runtime/WeakRefPrototype.cpp | 16 ++++++---------- .../Libraries/LibJS/Runtime/WeakRefPrototype.h | 5 +++-- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Userland/Libraries/LibJS/Runtime/WeakRefPrototype.cpp b/Userland/Libraries/LibJS/Runtime/WeakRefPrototype.cpp index 120855fdcf..16036814f1 100644 --- a/Userland/Libraries/LibJS/Runtime/WeakRefPrototype.cpp +++ b/Userland/Libraries/LibJS/Runtime/WeakRefPrototype.cpp @@ -10,7 +10,7 @@ namespace JS { WeakRefPrototype::WeakRefPrototype(GlobalObject& global_object) - : Object(*global_object.object_prototype()) + : PrototypeObject(*global_object.object_prototype()) { } @@ -31,16 +31,12 @@ WeakRefPrototype::~WeakRefPrototype() // 26.1.3.2 WeakRef.prototype.deref ( ), https://tc39.es/ecma262/#sec-weak-ref.prototype.deref JS_DEFINE_NATIVE_FUNCTION(WeakRefPrototype::deref) { - auto* this_object = vm.this_value(global_object).to_object(global_object); - if (!this_object) + auto* weak_ref = typed_this_object(global_object); + if (vm.exception()) return {}; - if (!is(this_object)) { - vm.throw_exception(global_object, ErrorType::NotAnObjectOfType, "WeakRef"); - return {}; - } - auto& weak_ref = static_cast(*this_object); - weak_ref.update_execution_generation(); - return weak_ref.value() ?: js_undefined(); + + weak_ref->update_execution_generation(); + return weak_ref->value() ?: js_undefined(); } } diff --git a/Userland/Libraries/LibJS/Runtime/WeakRefPrototype.h b/Userland/Libraries/LibJS/Runtime/WeakRefPrototype.h index 9d7cddb97f..15254e946c 100644 --- a/Userland/Libraries/LibJS/Runtime/WeakRefPrototype.h +++ b/Userland/Libraries/LibJS/Runtime/WeakRefPrototype.h @@ -6,12 +6,13 @@ #pragma once +#include #include namespace JS { -class WeakRefPrototype final : public Object { - JS_OBJECT(WeakRefPrototype, Object); +class WeakRefPrototype final : public PrototypeObject { + JS_PROTOTYPE_OBJECT(WeakRefPrototype, WeakRef, WeakRef); public: WeakRefPrototype(GlobalObject&);