1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/collections/Set-iterator-remove-6.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,20 @@ 1.4 +// Removing many Set entries does not cause a live iterator to skip any of the 1.5 +// entries that were not removed. (Compacting a Set must not be observable to 1.6 +// script.) 1.7 + 1.8 +load(libdir + "iteration.js"); 1.9 + 1.10 +var set = Set(); 1.11 +for (var i = 0; i < 32; i++) 1.12 + set.add(i); 1.13 +var iter = set[std_iterator](); 1.14 +assertIteratorNext(iter, 0); 1.15 +for (var i = 0; i < 30; i++) 1.16 + set.delete(i); 1.17 +assertEq(set.size, 2); 1.18 +for (var i = 32; i < 100; i++) 1.19 + set.add(i); // eventually triggers compaction 1.20 + 1.21 +for (var i = 30; i < 100; i++) 1.22 + assertIteratorNext(iter, i); 1.23 +assertIteratorDone(iter, undefined);