// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.

// https://bugzilla.mozilla.org/show_bug.cgi?id=688458

var x = {NEGATIVE_INFINITY: 1, POSITIVE_INFINITY: 1};
var count1 = 0;
var count2 = 0;
var n = 100000;
var running = true;

new java.lang.Thread(function() {
    while (running) {
        x = {NEGATIVE_INFINITY: 1, POSITIVE_INFINITY: 1};
        for (var i = 0; i < 16; i++) x["i" + i] = i;
    }
}).start();

// Test for original read bug first
for(var k = 0; k < n; k++) {
    if (!x.POSITIVE_INFINITY || !x.NEGATIVE_INFINITY)
        count1++;
}

// Now test for write bug introduced by first fix
for(var k = 0; k < n; k++) {
    var M = x.k;
    if (M && M != k - 1)
        count2++;
    x.k = k;
}

running = false;

if (count1 > 0 || count2 > 0) {
    throw new Error(count1 + " read bugs, " + count2 + " write bugs");
}

"success";
