[GCrypt] Gather SUBTLE_CRYPTO utility functions in a single header
[WebKit-https.git] / JSTests / heapProfiler / basic-edges.js
1 load("./driver/driver.js");
2
3 function excludeStructure(edges) {
4     return edges.filter((x) => x.to.className !== "Structure");
5 }
6
7 let simpleObject1NodeId;
8 let simpleObject2NodeId;
9
10 let simpleObject1 = new SimpleObject;
11 let simpleObject2 = new SimpleObject;
12
13 (function() {
14     let snapshot = createCheapHeapSnapshot();
15     let nodes = snapshot.nodesWithClassName("SimpleObject");
16     assert(nodes.length === 2, "Snapshot should contain 2 'SimpleObject' instances");
17     let simpleObject1Node = nodes[0].outgoingEdges.length === 2 ? nodes[0] : nodes[1];
18     let simpleObject2Node = nodes[0].outgoingEdges.length === 1 ? nodes[0] : nodes[1];
19     assert(simpleObject1Node.outgoingEdges.length === 1, "'simpleObject1' should reference only its structure");
20     assert(simpleObject2Node.outgoingEdges.length === 1, "'simpleObject2' should reference only its structure");
21 })();
22
23 setHiddenValue(simpleObject1, simpleObject2);
24
25 (function() {
26     let snapshot = createCheapHeapSnapshot();
27     let nodes = snapshot.nodesWithClassName("SimpleObject");
28     assert(nodes.length === 2, "Snapshot should contain 2 'SimpleObject' instances");
29     let simpleObject1Node = nodes[0].outgoingEdges.length === 2 ? nodes[0] : nodes[1];
30     let simpleObject2Node = nodes[0].outgoingEdges.length === 1 ? nodes[0] : nodes[1];
31     assert(simpleObject1Node.outgoingEdges.length === 2, "'simpleObject1' should reference its structure and hidden value");
32     assert(simpleObject2Node.outgoingEdges.length === 1, "'simpleObject2' should reference only its structure");
33     assert(excludeStructure(simpleObject1Node.outgoingEdges)[0].to.id === simpleObject2Node.id, "'simpleObject1' should reference 'simpleObject2'");
34     simpleObject1NodeId = simpleObject1Node.id;
35     simpleObject2NodeId = simpleObject2Node.id;
36 })();
37
38 simpleObject2 = null;
39
40 (function() {
41     let snapshot = createCheapHeapSnapshot();
42     let nodes = snapshot.nodesWithClassName("SimpleObject");
43     assert(nodes.length === 2, "Snapshot should contain 2 'SimpleObject' instances");
44     let simpleObject1Node = nodes[0].id === simpleObject1NodeId ? nodes[0] : nodes[1];
45     let simpleObject2Node = nodes[0].id === simpleObject2NodeId ? nodes[0] : nodes[1];
46     assert(simpleObject1Node.id === simpleObject1NodeId && simpleObject2Node.id === simpleObject2NodeId, "node identifiers were maintained");
47     assert(simpleObject1Node.outgoingEdges.length === 2, "'simpleObject1' should reference its structure and hidden value");
48     assert(simpleObject2Node.outgoingEdges.length === 1, "'simpleObject2' should reference only its structure");
49     assert(excludeStructure(simpleObject1Node.outgoingEdges)[0].to.id === simpleObject2NodeId, "'simpleObject1' should reference 'simpleObject2'");
50 })();
51
52 simpleObject1 = null;
53
54 (function() {
55     let snapshot = createCheapHeapSnapshot();
56     let nodes = snapshot.nodesWithClassName("SimpleObject");
57     assert(nodes.length === 0, "Snapshot should not contain a 'SimpleObject' instance");
58 })();