On 4/29/14, 1:46 PM, Mark S. Miller wrote:
How would either make GC observable?
Consider the following code:
navigator.getGamepads()[0].foo = 5;
var intervals = 0;
var id = setInterval(function() {
++intervals;
if (navigator.getGamepads()[0].foo != 5) {
alert("What happened after " + intervals + " intervals?");
clearInterval(id);
}
}, 1000);
In Chrome's current implementation, where getGamepads() returns a new
object each time getGamepads()[0] is a new object each time this will
consistently alert "What happened after 1 intervals?".
In Firefox's current implementation this will not alert at all unless
the set of connected gamepads changes.
In an implementation which brokenly GCed and lazily recreated the JS
reflections of Gamepad objects, the alert could happen after some random
number of intervals, depending on GC timing.
Does that help?
-Boris