mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 07:47:37 +00:00
LibJS: Convert DataView.prototype to be a PrototypeObject
This commit is contained in:
parent
4d1d0f05a9
commit
8bfb665b72
2 changed files with 9 additions and 18 deletions
|
@ -11,7 +11,7 @@
|
||||||
namespace JS {
|
namespace JS {
|
||||||
|
|
||||||
DataViewPrototype::DataViewPrototype(GlobalObject& global_object)
|
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<DataView>(this_value.as_object())) {
|
|
||||||
vm.throw_exception<TypeError>(global_object, ErrorType::NotAnObjectOfType, vm.names.DataView);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
return static_cast<DataView*>(&this_value.as_object());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 25.3.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ), https://tc39.es/ecma262/#sec-getviewvalue
|
// 25.3.1.1 GetViewValue ( view, requestIndex, isLittleEndian, type ), https://tc39.es/ecma262/#sec-getviewvalue
|
||||||
template<typename T>
|
template<typename T>
|
||||||
static Value get_view_value(GlobalObject& global_object, Value request_index, Value is_little_endian)
|
static Value get_view_value(GlobalObject& global_object, Value request_index, Value is_little_endian)
|
||||||
{
|
{
|
||||||
auto& vm = global_object.vm();
|
auto& vm = global_object.vm();
|
||||||
auto* view = typed_this(vm, global_object);
|
auto* view = DataViewPrototype::typed_this_value(global_object);
|
||||||
if (!view)
|
if (!view)
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
|
@ -108,7 +98,7 @@ template<typename T>
|
||||||
static Value set_view_value(GlobalObject& global_object, Value request_index, Value is_little_endian, Value value)
|
static Value set_view_value(GlobalObject& global_object, Value request_index, Value is_little_endian, Value value)
|
||||||
{
|
{
|
||||||
auto& vm = global_object.vm();
|
auto& vm = global_object.vm();
|
||||||
auto* view = typed_this(vm, global_object);
|
auto* view = DataViewPrototype::typed_this_value(global_object);
|
||||||
if (!view)
|
if (!view)
|
||||||
return {};
|
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
|
// 25.3.4.1 get DataView.prototype.buffer, https://tc39.es/ecma262/#sec-get-dataview.prototype.buffer
|
||||||
JS_DEFINE_NATIVE_GETTER(DataViewPrototype::buffer_getter)
|
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)
|
if (!data_view)
|
||||||
return {};
|
return {};
|
||||||
return data_view->viewed_array_buffer();
|
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
|
// 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)
|
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)
|
if (!data_view)
|
||||||
return {};
|
return {};
|
||||||
if (data_view->viewed_array_buffer()->is_detached()) {
|
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
|
// 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)
|
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)
|
if (!data_view)
|
||||||
return {};
|
return {};
|
||||||
if (data_view->viewed_array_buffer()->is_detached()) {
|
if (data_view->viewed_array_buffer()->is_detached()) {
|
||||||
|
|
|
@ -7,11 +7,12 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibJS/Runtime/DataView.h>
|
#include <LibJS/Runtime/DataView.h>
|
||||||
|
#include <LibJS/Runtime/PrototypeObject.h>
|
||||||
|
|
||||||
namespace JS {
|
namespace JS {
|
||||||
|
|
||||||
class DataViewPrototype final : public Object {
|
class DataViewPrototype final : public PrototypeObject<DataViewPrototype, DataView> {
|
||||||
JS_OBJECT(DataViewPrototype, Object);
|
JS_PROTOTYPE_OBJECT(DataViewPrototype, DataView, DataView);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DataViewPrototype(GlobalObject&);
|
DataViewPrototype(GlobalObject&);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue