ソースを参照

LibJS: Use OrderedHashMap instead of HashMap in the Map built-in

This ensures insertion-order iteration.
Idan Horowitz 4 年 前
コミット
a27fbfd45f

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

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

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

@@ -33,7 +33,7 @@ private:
     Map& m_map;
     bool m_done { false };
     Object::PropertyKind m_iteration_kind;
-    HashMap<Value, Value, ValueTraits>::IteratorType m_iterator;
+    OrderedHashMap<Value, Value, ValueTraits>::IteratorType m_iterator;
 };
 
 }