| <script> |
| function forceGC() { |
| try { |
| for (var ndx = 0; ndx < 99000; ndx++) |
| var numbers = new Float64Array(50 * 1024); |
| } catch (e) { } |
| } |
| |
| function addContext() { |
| contexts.push(document.createElement("canvas").getContext("webgl")); |
| } |
| |
| if (window.testRunner) { |
| testRunner.waitUntilDone(); |
| testRunner.dumpAsText(); |
| } |
| |
| var maxNumberOfActiveContexts = 16; |
| var contextsToKeep = 8; |
| var contexts = []; |
| |
| // Create the max number of active WebGL contexts. |
| while (contexts.length < maxNumberOfActiveContexts) |
| addContext(); |
| |
| // Now remove some of those contexts from this array so they may be garbage collected. |
| while (contexts.length > contextsToKeep) |
| contexts.shift(); |
| |
| setTimeout(function() { |
| if (window.GCController) |
| GCController.collect(); |
| else |
| forceGC(); |
| |
| // Add contexts until we get to the limit then add one more. This should only |
| // produce a single warning that an older context will be lost. |
| setTimeout(function() { |
| while (contexts.length < maxNumberOfActiveContexts + 1) |
| addContext(); |
| |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| }); |
| }); |
| |
| </script> |