From 4cce181eceb7139c6b1d714a77757d952b5e3757 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 26 Nov 2023 15:10:34 +0100 Subject: [PATCH] LibJS: Devirtualize Object::is_typed_array() --- Userland/Libraries/LibJS/Runtime/Object.h | 6 +++++- Userland/Libraries/LibJS/Runtime/TypedArray.h | 4 +--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibJS/Runtime/Object.h b/Userland/Libraries/LibJS/Runtime/Object.h index 26212f4da2..33fd3d3b11 100644 --- a/Userland/Libraries/LibJS/Runtime/Object.h +++ b/Userland/Libraries/LibJS/Runtime/Object.h @@ -184,7 +184,6 @@ public: virtual bool is_dom_node() const { return false; } virtual bool is_function() const { return false; } - virtual bool is_typed_array() const { return false; } virtual bool is_string_object() const { return false; } virtual bool is_global_object() const { return false; } virtual bool is_proxy_object() const { return false; } @@ -225,6 +224,9 @@ public: static FlatPtr has_magical_length_property_offset() { return OFFSET_OF(Object, m_has_magical_length_property); } + [[nodiscard]] bool is_typed_array() const { return m_is_typed_array; } + void set_is_typed_array() { m_is_typed_array = true; } + protected: enum class GlobalObjectTag { Tag }; enum class ConstructWithoutPrototypeTag { Tag }; @@ -244,6 +246,8 @@ protected: bool m_has_magical_length_property { false }; + bool m_is_typed_array { false }; + private: void set_shape(Shape& shape) { m_shape = &shape; } diff --git a/Userland/Libraries/LibJS/Runtime/TypedArray.h b/Userland/Libraries/LibJS/Runtime/TypedArray.h index 093d62cc6d..76d7a0c7b5 100644 --- a/Userland/Libraries/LibJS/Runtime/TypedArray.h +++ b/Userland/Libraries/LibJS/Runtime/TypedArray.h @@ -75,6 +75,7 @@ protected: , m_kind(kind) , m_intrinsic_constructor(intrinsic_constructor) { + set_is_typed_array(); } u32 m_array_length { 0 }; @@ -463,9 +464,6 @@ protected: m_array_length = array_length; m_byte_length = m_viewed_array_buffer->byte_length(); } - -private: - virtual bool is_typed_array() const final { return true; } }; ThrowCompletionOr typed_array_create(VM&, FunctionObject& constructor, MarkedVector arguments);