OLD | NEW |
1 <p>Tests that custom prototypes on DOM objects persist after garbage collection.
</p> | 1 <p>Tests that custom prototypes on DOM objects persist after garbage collection.
</p> |
2 <pre id="console"></pre> | 2 <pre id="console"></pre> |
3 | 3 |
4 <p id="p"></p> | 4 <p id="p"></p> |
5 | 5 <script src="../../resources/gc.js"></script> |
6 <script> | 6 <script> |
7 function $(id) | 7 function $(id) |
8 { | 8 { |
9 return document.getElementById(id); | 9 return document.getElementById(id); |
10 } | 10 } |
11 | 11 |
12 function log(s) | 12 function log(s) |
13 { | 13 { |
14 $("console").appendChild(document.createTextNode(s + "\n")); | 14 $("console").appendChild(document.createTextNode(s + "\n")); |
15 } | 15 } |
16 | 16 |
17 function shouldBe(aDescription, a, b) | 17 function shouldBe(aDescription, a, b) |
18 { | 18 { |
19 if (a != b) { | 19 if (a != b) { |
20 log("FAIL: " + aDescription + " should be " + b + " but instead is " + a
+ "."); | 20 log("FAIL: " + aDescription + " should be " + b + " but instead is " + a
+ "."); |
21 return; | 21 return; |
22 } | 22 } |
23 | 23 |
24 log("PASS: " + aDescription + " should be " + b + " and is."); | 24 log("PASS: " + aDescription + " should be " + b + " and is."); |
25 } | 25 } |
26 | 26 |
27 function gc() | |
28 { | |
29 if (window.GCController) { | |
30 GCController.collect(); | |
31 return; | |
32 } | |
33 | |
34 for (var i = 0; i < 10000; ++i) | |
35 new Object; | |
36 } | |
37 | |
38 function shouldBeNull(aDescription, a) | 27 function shouldBeNull(aDescription, a) |
39 { | 28 { |
40 if (a == null) { | 29 if (a == null) { |
41 log("PASS: " + aDescription + " should be null and is."); | 30 log("PASS: " + aDescription + " should be null and is."); |
42 return; | 31 return; |
43 } | 32 } |
44 | 33 |
45 log("FAIL: " + aDescription + " should be null but instead is " + a + "."); | 34 log("FAIL: " + aDescription + " should be null but instead is " + a + "."); |
46 } | 35 } |
47 | 36 |
(...skipping 13 matching lines...) Expand all Loading... |
61 | 50 |
62 shouldBeNonNull("$('p').__proto__", $('p').__proto__); | 51 shouldBeNonNull("$('p').__proto__", $('p').__proto__); |
63 $('p').__proto__ = null; | 52 $('p').__proto__ = null; |
64 shouldBeNull("$('p').__proto__", $('p').__proto__); | 53 shouldBeNull("$('p').__proto__", $('p').__proto__); |
65 | 54 |
66 gc(); | 55 gc(); |
67 | 56 |
68 shouldBeNull("$('p').__proto__", $('p').__proto__); | 57 shouldBeNull("$('p').__proto__", $('p').__proto__); |
69 })(); | 58 })(); |
70 </script> | 59 </script> |
OLD | NEW |