ソースを参照

LibJS: Add fast_is<ArrayIterator>()

Andreas Kling 1 年間 前
コミット
373ec387c1

+ 4 - 0
Userland/Libraries/LibJS/Runtime/ArrayIterator.h

@@ -28,6 +28,7 @@ private:
 
     ArrayIterator(Value array, Object::PropertyKind iteration_kind, Object& prototype);
 
+    virtual bool is_array_iterator() const override { return true; }
     virtual void visit_edges(Cell::Visitor&) override;
 
     Value m_array;
@@ -35,4 +36,7 @@ private:
     size_t m_index { 0 };
 };
 
+template<>
+inline bool Object::fast_is<ArrayIterator>() const { return is_array_iterator(); }
+
 }

+ 1 - 0
Userland/Libraries/LibJS/Runtime/Object.h

@@ -191,6 +191,7 @@ public:
     virtual bool is_native_function() const { return false; }
     virtual bool is_ecmascript_function_object() const { return false; }
     virtual bool is_iterator_record() const { return false; }
+    virtual bool is_array_iterator() const { return false; }
 
     // B.3.7 The [[IsHTMLDDA]] Internal Slot, https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot
     virtual bool is_htmldda() const { return false; }