浏览代码

LibJS: Use OrderedHashTable instead of HashTable in the Set built-in

This ensures insertion-order iteration.
Idan Horowitz 4 年之前
父节点
当前提交
08ff148bc3
共有 2 个文件被更改,包括 4 次插入4 次删除
  1. 3 3
      Userland/Libraries/LibJS/Runtime/Set.h
  2. 1 1
      Userland/Libraries/LibJS/Runtime/SetIterator.h

+ 3 - 3
Userland/Libraries/LibJS/Runtime/Set.h

@@ -22,13 +22,13 @@ public:
     explicit Set(Object& prototype);
     virtual ~Set() override;
 
-    HashTable<Value, ValueTraits> const& values() const { return m_values; };
-    HashTable<Value, ValueTraits>& values() { return m_values; };
+    OrderedHashTable<Value, ValueTraits> const& values() const { return m_values; };
+    OrderedHashTable<Value, ValueTraits>& values() { return m_values; };
 
 private:
     virtual void visit_edges(Visitor& visitor) override;
 
-    HashTable<Value, ValueTraits> m_values; // FIXME: Replace with a HashTable that maintains a linked list of insertion order for correct iteration order
+    OrderedHashTable<Value, ValueTraits> m_values;
 };
 
 }

+ 1 - 1
Userland/Libraries/LibJS/Runtime/SetIterator.h

@@ -33,7 +33,7 @@ private:
     Set& m_set;
     bool m_done { false };
     Object::PropertyKind m_iteration_kind;
-    HashTable<Value, ValueTraits>::Iterator m_iterator;
+    OrderedHashTable<Value, ValueTraits>::Iterator m_iterator;
 };
 
 }