From 8bfb665b72430b3c20a34cd5f4e6519d6744fcd5 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Sat, 11 Sep 2021 16:12:31 -0400 Subject: [PATCH] LibJS: Convert DataView.prototype to be a PrototypeObject --- .../LibJS/Runtime/DataViewPrototype.cpp | 22 +++++-------------- .../LibJS/Runtime/DataViewPrototype.h | 5 +++-- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/Userland/Libraries/LibJS/Runtime/DataViewPrototype.cpp b/Userland/Libraries/LibJS/Runtime/DataViewPrototype.cpp index 747200f0fc..5688c22005 100644 --- a/Userland/Libraries/LibJS/Runtime/DataViewPrototype.cpp +++ b/Userland/Libraries/LibJS/Runtime/DataViewPrototype.cpp @@ -11,7 +11,7 @@ namespace JS { DataViewPrototype::DataViewPrototype(GlobalObject& global_object) - : Object(*global_object.object_prototype()) + : PrototypeObject(*global_object.object_prototype()) { } @@ -54,22 +54,12 @@ DataViewPrototype::~DataViewPrototype() { } -static DataView* typed_this(VM& vm, GlobalObject& global_object) -{ - auto this_value = vm.this_value(global_object); - if (!this_value.is_object() || !is(this_value.as_object())) { - vm.throw_exception(global_object, ErrorType::NotAnObjectOfType, vm.names.DataView); - return nullptr; - } - return static_cast(&this_value.as_object()); -} - // 25.3.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ), https://tc39.es/ecma262/#sec-getviewvalue template static Value get_view_value(GlobalObject& global_object, Value request_index, Value is_little_endian) { auto& vm = global_object.vm(); - auto* view = typed_this(vm, global_object); + auto* view = DataViewPrototype::typed_this_value(global_object); if (!view) return {}; @@ -108,7 +98,7 @@ template static Value set_view_value(GlobalObject& global_object, Value request_index, Value is_little_endian, Value value) { auto& vm = global_object.vm(); - auto* view = typed_this(vm, global_object); + auto* view = DataViewPrototype::typed_this_value(global_object); if (!view) return {}; @@ -265,7 +255,7 @@ JS_DEFINE_NATIVE_FUNCTION(DataViewPrototype::set_uint_32) // 25.3.4.1 get DataView.prototype.buffer, https://tc39.es/ecma262/#sec-get-dataview.prototype.buffer JS_DEFINE_NATIVE_GETTER(DataViewPrototype::buffer_getter) { - auto* data_view = typed_this(vm, global_object); + auto* data_view = typed_this_value(global_object); if (!data_view) return {}; return data_view->viewed_array_buffer(); @@ -274,7 +264,7 @@ JS_DEFINE_NATIVE_GETTER(DataViewPrototype::buffer_getter) // 25.3.4.2 get DataView.prototype.byteLength, https://tc39.es/ecma262/#sec-get-dataview.prototype.bytelength JS_DEFINE_NATIVE_GETTER(DataViewPrototype::byte_length_getter) { - auto* data_view = typed_this(vm, global_object); + auto* data_view = typed_this_value(global_object); if (!data_view) return {}; if (data_view->viewed_array_buffer()->is_detached()) { @@ -287,7 +277,7 @@ JS_DEFINE_NATIVE_GETTER(DataViewPrototype::byte_length_getter) // 25.3.4.3 get DataView.prototype.byteOffset, https://tc39.es/ecma262/#sec-get-dataview.prototype.byteoffset JS_DEFINE_NATIVE_GETTER(DataViewPrototype::byte_offset_getter) { - auto* data_view = typed_this(vm, global_object); + auto* data_view = typed_this_value(global_object); if (!data_view) return {}; if (data_view->viewed_array_buffer()->is_detached()) { diff --git a/Userland/Libraries/LibJS/Runtime/DataViewPrototype.h b/Userland/Libraries/LibJS/Runtime/DataViewPrototype.h index 4a7444adf6..839719c43b 100644 --- a/Userland/Libraries/LibJS/Runtime/DataViewPrototype.h +++ b/Userland/Libraries/LibJS/Runtime/DataViewPrototype.h @@ -7,11 +7,12 @@ #pragma once #include +#include namespace JS { -class DataViewPrototype final : public Object { - JS_OBJECT(DataViewPrototype, Object); +class DataViewPrototype final : public PrototypeObject { + JS_PROTOTYPE_OBJECT(DataViewPrototype, DataView, DataView); public: DataViewPrototype(GlobalObject&);