Diff
Modified: trunk/LayoutTests/ChangeLog (170516 => 170517)
--- trunk/LayoutTests/ChangeLog 2014-06-27 02:43:21 UTC (rev 170516)
+++ trunk/LayoutTests/ChangeLog 2014-06-27 03:20:34 UTC (rev 170517)
@@ -1,3 +1,14 @@
+2014-06-26 Benjamin Poulain <[email protected]>
+
+ iOS 8 beta 2 ES6 'Set' clear() broken
+ https://bugs.webkit.org/show_bug.cgi?id=134346
+
+ Reviewed by Oliver Hunt.
+
+ * js/script-tests/set-clear.js: Added.
+ * js/set-clear-expected.txt: Added.
+ * js/set-clear.html: Added.
+
2014-06-26 Manuel Rego Casasnovas <[email protected]>
[CSS Grid Layout] Properly support for z-index on grid items
Added: trunk/LayoutTests/js/map-clear-expected.txt (0 => 170517)
--- trunk/LayoutTests/js/map-clear-expected.txt (rev 0)
+++ trunk/LayoutTests/js/map-clear-expected.txt 2014-06-27 03:20:34 UTC (rev 170517)
@@ -0,0 +1,30 @@
+Tests basic correctness of ES Map's clear() API
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS stringMap.size is 0
+PASS stringMap.values.length is 0
+PASS stringMap.has('Oliver') is false
+PASS stringMap.has('Benjamin') is false
+PASS valueMap.size is 0
+PASS valueMap.values.length is 0
+PASS valueMap.has(0) is false
+PASS valueMap.has(1) is false
+PASS objectMap.size is 0
+PASS objectMap.values.length is 0
+PASS objectMap.has(anArray) is false
+PASS objectMap.has(anObject) is false
+PASS objectMap.has(otherObject) is false
+PASS mixedTypeMap.size is 0
+PASS mixedTypeMap.values.length is 0
+PASS mixedTypeMap.has(0) is false
+PASS mixedTypeMap.has('Oliver') is false
+PASS mixedTypeMap.has(stringMap) is false
+PASS mixedTypeMap.has(valueMap) is false
+PASS mixedTypeMap.has(objectMap) is false
+PASS mixedTypeMap.has(anObject) is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/js/map-clear.html (0 => 170517)
--- trunk/LayoutTests/js/map-clear.html (rev 0)
+++ trunk/LayoutTests/js/map-clear.html 2014-06-27 03:20:34 UTC (rev 170517)
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<script src=""
+<script src=""
+</body>
+</html>
Added: trunk/LayoutTests/js/script-tests/map-clear.js (0 => 170517)
--- trunk/LayoutTests/js/script-tests/map-clear.js (rev 0)
+++ trunk/LayoutTests/js/script-tests/map-clear.js 2014-06-27 03:20:34 UTC (rev 170517)
@@ -0,0 +1,58 @@
+description("Tests basic correctness of ES Map's clear() API");
+
+// Map containing only String types.
+var stringMap = new Map;
+stringMap.set('Oliver', 'Hunt');
+stringMap.set('Benjamin', 'Poulain');
+
+stringMap.clear();
+shouldBe("stringMap.size", "0");
+shouldBe("stringMap.values.length", "0");
+shouldBeFalse("stringMap.has('Oliver')");
+shouldBeFalse("stringMap.has('Benjamin')");
+
+// Map containing only primitive values.
+var valueMap = new Map;
+valueMap.set(0, 1);
+valueMap.set(1, 2);
+
+valueMap.clear();
+shouldBe("valueMap.size", "0");
+shouldBe("valueMap.values.length", "0");
+shouldBeFalse("valueMap.has(0)");
+shouldBeFalse("valueMap.has(1)");
+
+// Map containing objects;
+var objectMap = new Map;
+var anArray = new Array;
+objectMap.set(anArray, 0);
+var anObject = new Object;
+objectMap.set(anObject, 1);
+var otherObject = {"a":1, "b":2};
+objectMap.set(otherObject, 2);
+
+objectMap.clear();
+shouldBe("objectMap.size", "0");
+shouldBe("objectMap.values.length", "0");
+shouldBeFalse("objectMap.has(anArray)");
+shouldBeFalse("objectMap.has(anObject)");
+shouldBeFalse("objectMap.has(otherObject)");
+
+// Mixed types.
+var mixedTypeMap = new Map;
+mixedTypeMap.set(0, objectMap);
+mixedTypeMap.set('Oliver', stringMap);
+mixedTypeMap.set(stringMap, valueMap);
+mixedTypeMap.set(valueMap, anObject);
+mixedTypeMap.set(objectMap, objectMap);
+mixedTypeMap.set(anObject, stringMap);
+
+mixedTypeMap.clear();
+shouldBe("mixedTypeMap.size", "0");
+shouldBe("mixedTypeMap.values.length", "0");
+shouldBeFalse("mixedTypeMap.has(0)");
+shouldBeFalse("mixedTypeMap.has('Oliver')");
+shouldBeFalse("mixedTypeMap.has(stringMap)");
+shouldBeFalse("mixedTypeMap.has(valueMap)");
+shouldBeFalse("mixedTypeMap.has(objectMap)");
+shouldBeFalse("mixedTypeMap.has(anObject)");
Added: trunk/LayoutTests/js/script-tests/set-clear.js (0 => 170517)
--- trunk/LayoutTests/js/script-tests/set-clear.js (rev 0)
+++ trunk/LayoutTests/js/script-tests/set-clear.js 2014-06-27 03:20:34 UTC (rev 170517)
@@ -0,0 +1,58 @@
+description("Tests basic correctness of ES Set's clear() API");
+
+// Set containing only String types.
+var stringSet = new Set;
+stringSet.add('Oliver');
+stringSet.add('Benjamin');
+
+stringSet.clear();
+shouldBe("stringSet.size", "0");
+shouldBe("stringSet.values.length", "0");
+shouldBeFalse("stringSet.has('Oliver')");
+shouldBeFalse("stringSet.has('Benjamin')");
+
+// Set containing only primitive values.
+var valueSet = new Set;
+valueSet.add(0);
+valueSet.add(1);
+
+valueSet.clear();
+shouldBe("valueSet.size", "0");
+shouldBe("valueSet.values.length", "0");
+shouldBeFalse("valueSet.has(0)");
+shouldBeFalse("valueSet.has(1)");
+
+// Set containing objects;
+var objectSet = new Set;
+var anArray = new Array;
+objectSet.add(anArray);
+var anObject = new Object;
+objectSet.add(anObject);
+var otherObject = {"a":1, "b":2};
+objectSet.add(otherObject);
+
+objectSet.clear();
+shouldBe("objectSet.size", "0");
+shouldBe("objectSet.values.length", "0");
+shouldBeFalse("objectSet.has(anArray)");
+shouldBeFalse("objectSet.has(anObject)");
+shouldBeFalse("objectSet.has(otherObject)");
+
+// Mixed types.
+var mixedTypeSet = new Set;
+mixedTypeSet.add(0);
+mixedTypeSet.add('Oliver');
+mixedTypeSet.add(stringSet);
+mixedTypeSet.add(valueSet);
+mixedTypeSet.add(objectSet);
+mixedTypeSet.add(anObject);
+
+mixedTypeSet.clear();
+shouldBe("mixedTypeSet.size", "0");
+shouldBe("mixedTypeSet.values.length", "0");
+shouldBeFalse("mixedTypeSet.has(0)");
+shouldBeFalse("mixedTypeSet.has('Oliver')");
+shouldBeFalse("mixedTypeSet.has(stringSet)");
+shouldBeFalse("mixedTypeSet.has(valueSet)");
+shouldBeFalse("mixedTypeSet.has(objectSet)");
+shouldBeFalse("mixedTypeSet.has(anObject)");
Added: trunk/LayoutTests/js/set-clear-expected.txt (0 => 170517)
--- trunk/LayoutTests/js/set-clear-expected.txt (rev 0)
+++ trunk/LayoutTests/js/set-clear-expected.txt 2014-06-27 03:20:34 UTC (rev 170517)
@@ -0,0 +1,30 @@
+Tests basic correctness of ES Set's clear() API
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS stringSet.size is 0
+PASS stringSet.values.length is 0
+PASS stringSet.has('Oliver') is false
+PASS stringSet.has('Benjamin') is false
+PASS valueSet.size is 0
+PASS valueSet.values.length is 0
+PASS valueSet.has(0) is false
+PASS valueSet.has(1) is false
+PASS objectSet.size is 0
+PASS objectSet.values.length is 0
+PASS objectSet.has(anArray) is false
+PASS objectSet.has(anObject) is false
+PASS objectSet.has(otherObject) is false
+PASS mixedTypeSet.size is 0
+PASS mixedTypeSet.values.length is 0
+PASS mixedTypeSet.has(0) is false
+PASS mixedTypeSet.has('Oliver') is false
+PASS mixedTypeSet.has(stringSet) is false
+PASS mixedTypeSet.has(valueSet) is false
+PASS mixedTypeSet.has(objectSet) is false
+PASS mixedTypeSet.has(anObject) is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/js/set-clear.html (0 => 170517)
--- trunk/LayoutTests/js/set-clear.html (rev 0)
+++ trunk/LayoutTests/js/set-clear.html 2014-06-27 03:20:34 UTC (rev 170517)
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<script src=""
+<script src=""
+</body>
+</html>
Modified: trunk/Source/_javascript_Core/ChangeLog (170516 => 170517)
--- trunk/Source/_javascript_Core/ChangeLog 2014-06-27 02:43:21 UTC (rev 170516)
+++ trunk/Source/_javascript_Core/ChangeLog 2014-06-27 03:20:34 UTC (rev 170517)
@@ -1,3 +1,18 @@
+2014-06-26 Benjamin Poulain <[email protected]>
+
+ iOS 8 beta 2 ES6 'Set' clear() broken
+ https://bugs.webkit.org/show_bug.cgi?id=134346
+
+ Reviewed by Oliver Hunt.
+
+ The object map was not cleared :(.
+
+ Kudos to Ashley Gullen for tracking this and making a regression test.
+ Credit to Oliver for finding the missing code.
+
+ * runtime/MapData.h:
+ (JSC::MapData::clear):
+
2014-06-25 Brent Fulgham <[email protected]>
[Win] Expose Cache Information to WinLauncher
Modified: trunk/Source/_javascript_Core/runtime/MapData.h (170516 => 170517)
--- trunk/Source/_javascript_Core/runtime/MapData.h 2014-06-27 02:43:21 UTC (rev 170516)
+++ trunk/Source/_javascript_Core/runtime/MapData.h 2014-06-27 03:20:34 UTC (rev 170517)
@@ -142,12 +142,13 @@
ALWAYS_INLINE void MapData::clear()
{
+ m_cellKeyedTable.clear();
m_valueKeyedTable.clear();
m_stringKeyedTable.clear();
m_capacity = 0;
m_size = 0;
m_deletedCount = 0;
- m_entries = 0;
+ m_entries = nullptr;
}
ALWAYS_INLINE MapData::KeyType::KeyType(JSValue v)