diff --git a/Libraries/LibJS/Runtime/Array.h b/Libraries/LibJS/Runtime/Array.h index 6ae77de113b..e30df2335e5 100644 --- a/Libraries/LibJS/Runtime/Array.h +++ b/Libraries/LibJS/Runtime/Array.h @@ -58,11 +58,16 @@ protected: explicit Array(Object& prototype); private: + virtual bool is_array_exotic_object() const final { return true; } + ThrowCompletionOr set_length(PropertyDescriptor const&); bool m_length_writable { true }; }; +template<> +inline bool Object::fast_is() const { return is_array_exotic_object(); } + enum class Holes { SkipHoles, ReadThroughHoles, diff --git a/Libraries/LibJS/Runtime/Object.h b/Libraries/LibJS/Runtime/Object.h index 34fce27b8f0..0225c30d7cf 100644 --- a/Libraries/LibJS/Runtime/Object.h +++ b/Libraries/LibJS/Runtime/Object.h @@ -198,6 +198,7 @@ public: virtual bool is_regexp_object() const { return false; } virtual bool is_bigint_object() const { return false; } virtual bool is_string_object() const { return false; } + virtual bool is_array_exotic_object() const { return false; } virtual bool is_global_object() const { return false; } virtual bool is_proxy_object() const { return false; } virtual bool is_native_function() const { return false; }