forked from WebKit/WebKit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbasic-edges.js
61 lines (50 loc) · 2.98 KB
/
basic-edges.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
var SimpleObject = $vm.SimpleObject;
var setHiddenValue = $vm.setHiddenValue;
load("./driver/driver.js");
function excludeStructure(edges) {
return edges.filter((x) => x.to.className !== "Structure");
}
let simpleObject1NodeId;
let simpleObject2NodeId;
let simpleObject1 = new SimpleObject;
let simpleObject2 = new SimpleObject;
(function() {
let snapshot = createCheapHeapSnapshot();
let nodes = snapshot.nodesWithClassName("SimpleObject");
assert(nodes.length === 2, "Snapshot should contain 2 'SimpleObject' instances");
let simpleObject1Node = nodes[0].outgoingEdges.length === 2 ? nodes[0] : nodes[1];
let simpleObject2Node = nodes[0].outgoingEdges.length === 1 ? nodes[0] : nodes[1];
assert(simpleObject1Node.outgoingEdges.length === 1, "'simpleObject1' should reference only its structure");
assert(simpleObject2Node.outgoingEdges.length === 1, "'simpleObject2' should reference only its structure");
})();
setHiddenValue(simpleObject1, simpleObject2);
(function() {
let snapshot = createCheapHeapSnapshot();
let nodes = snapshot.nodesWithClassName("SimpleObject");
assert(nodes.length === 2, "Snapshot should contain 2 'SimpleObject' instances");
let simpleObject1Node = nodes[0].outgoingEdges.length === 2 ? nodes[0] : nodes[1];
let simpleObject2Node = nodes[0].outgoingEdges.length === 1 ? nodes[0] : nodes[1];
assert(simpleObject1Node.outgoingEdges.length === 2, "'simpleObject1' should reference its structure and hidden value");
assert(simpleObject2Node.outgoingEdges.length === 1, "'simpleObject2' should reference only its structure");
assert(excludeStructure(simpleObject1Node.outgoingEdges)[0].to.id === simpleObject2Node.id, "'simpleObject1' should reference 'simpleObject2'");
simpleObject1NodeId = simpleObject1Node.id;
simpleObject2NodeId = simpleObject2Node.id;
})();
simpleObject2 = null;
(function() {
let snapshot = createCheapHeapSnapshot();
let nodes = snapshot.nodesWithClassName("SimpleObject");
assert(nodes.length === 2, "Snapshot should contain 2 'SimpleObject' instances");
let simpleObject1Node = nodes[0].id === simpleObject1NodeId ? nodes[0] : nodes[1];
let simpleObject2Node = nodes[0].id === simpleObject2NodeId ? nodes[0] : nodes[1];
assert(simpleObject1Node.id === simpleObject1NodeId && simpleObject2Node.id === simpleObject2NodeId, "node identifiers were maintained");
assert(simpleObject1Node.outgoingEdges.length === 2, "'simpleObject1' should reference its structure and hidden value");
assert(simpleObject2Node.outgoingEdges.length === 1, "'simpleObject2' should reference only its structure");
assert(excludeStructure(simpleObject1Node.outgoingEdges)[0].to.id === simpleObject2NodeId, "'simpleObject1' should reference 'simpleObject2'");
})();
simpleObject1 = null;
(function() {
let snapshot = createCheapHeapSnapshot();
let nodes = snapshot.nodesWithClassName("SimpleObject");
assert(nodes.length === 0, "Snapshot should not contain a 'SimpleObject' instance");
})();