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