149 lines
2.5 KiB
JavaScript
149 lines
2.5 KiB
JavaScript
description("Tests to make sure we correctly handle map compaction when growing a Map with holes");
|
|
|
|
/*
|
|
* This test case clobbers the Map with a number of new properties with periodic deletes
|
|
* creating holes in the backing store.
|
|
*
|
|
* When the Map requires more space we trigger an expand and compact, which then
|
|
* rebuilds the key->index hashmap. This means that we need to ensure that the
|
|
* newly added key is not in hashmap during the compaction.
|
|
*
|
|
* We duplicate the test as string keyed entries use a distinct hashmap
|
|
* for key->index.
|
|
*/
|
|
|
|
var map = new Map();
|
|
var flow = {};
|
|
|
|
map.clear();
|
|
map.clear();
|
|
map.has(81);
|
|
map.set(81, flow);
|
|
map.has(83);
|
|
map.set(83, flow);
|
|
map.has(85);
|
|
map.set(85, flow);
|
|
map.has(87);
|
|
map.set(87, flow);
|
|
map.has(89);
|
|
map.set(89, flow);
|
|
map.has(91);
|
|
map.set(91, flow);
|
|
map.has(81);
|
|
map.get(81);
|
|
map.delete(81);
|
|
map.has(82);
|
|
map.has(83);
|
|
map.get(83);
|
|
map.delete(83);
|
|
map.has(84);
|
|
map.has(85);
|
|
map.get(85);
|
|
map.delete(85);
|
|
map.has(86);
|
|
map.has(87);
|
|
map.get(87);
|
|
map.delete(87);
|
|
map.has(88);
|
|
map.has(89);
|
|
map.get(89);
|
|
map.delete(89);
|
|
map.has(90);
|
|
map.has(91);
|
|
map.get(91);
|
|
map.delete(91);
|
|
map.has(92);
|
|
map.has(93);
|
|
map.set(93, flow);
|
|
map.has(95);
|
|
map.set(95, flow);
|
|
map.has(97);
|
|
map.set(97, flow);
|
|
map.has(99);
|
|
map.set(99, flow);
|
|
map.has(101);
|
|
map.set(101, flow);
|
|
map.has(103);
|
|
map.set(103, flow);
|
|
map.has(105);
|
|
map.set(105, flow);
|
|
map.has(93);
|
|
map.get(93);
|
|
map.delete(93);
|
|
map.has(94);
|
|
map.has(95);
|
|
map.get(95);
|
|
map.delete(95);
|
|
map.has(96);
|
|
map.has(97);
|
|
map.get(97);
|
|
|
|
|
|
map = new Map();
|
|
var flow = {};
|
|
|
|
map.clear();
|
|
map.clear();
|
|
map.has("81");
|
|
map.set("81", flow);
|
|
map.has("83");
|
|
map.set("83", flow);
|
|
map.has("85");
|
|
map.set("85", flow);
|
|
map.has("87");
|
|
map.set("87", flow);
|
|
map.has("89");
|
|
map.set("89", flow);
|
|
map.has("91");
|
|
map.set("91", flow);
|
|
map.has("81");
|
|
map.get("81");
|
|
map.delete("81");
|
|
map.has("82");
|
|
map.has("83");
|
|
map.get("83");
|
|
map.delete("83");
|
|
map.has("84");
|
|
map.has("85");
|
|
map.get("85");
|
|
map.delete("85");
|
|
map.has("86");
|
|
map.has("87");
|
|
map.get("87");
|
|
map.delete("87");
|
|
map.has("88");
|
|
map.has("89");
|
|
map.get("89");
|
|
map.delete("89");
|
|
map.has("90");
|
|
map.has("91");
|
|
map.get("91");
|
|
map.delete("91");
|
|
map.has("92");
|
|
map.has("93");
|
|
map.set("93", flow);
|
|
map.has("95");
|
|
map.set("95", flow);
|
|
map.has("97");
|
|
map.set("97", flow);
|
|
map.has("99");
|
|
map.set("99", flow);
|
|
map.has("101");
|
|
map.set("101", flow);
|
|
map.has("103");
|
|
map.set("103", flow);
|
|
map.has("105");
|
|
map.set("105", flow);
|
|
map.has("93");
|
|
map.get("93");
|
|
map.delete("93");
|
|
map.has("94");
|
|
map.has("95");
|
|
map.get("95");
|
|
map.delete("95");
|
|
map.has("96");
|
|
map.has("97");
|
|
map.get("97");
|
|
|
|
|