<html>
<body>
<p>Test postMessage and garbage collection.</p>
<div id=result></div>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

var worker = new Worker('resources/messageport-echo-worker.js');

worker.onmessage = (event) => {
    if (event.data !== "ready") {
        document.body.innerHTML = "FAIL";
        if (window.testRunner)
            testRunner.notifyDone();
        return;
    }
    worker.terminate();

    function gcRec(n) {
        if (n < 1)
            return {};
        var temp = {i: "ab" + i + (i / 100000)};
        temp += "foo";
        gcRec(n-1);
    }
    for (var i = 0; i < 100000; i++)
        gcRec(10);

    setTimeout(() => {
        document.body.innerHTML = "PASS";
        if (window.testRunner)
            testRunner.notifyDone();
    }, 0);
}

var channel = new MessageChannel();
channel.port1.onmessage = (event) => {  };
worker.postMessage("Here is your port", [channel.port2]);

</script>
</body>
</html>
