| 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 |