blob: 3795ee61b0fded68fce7e1355281ceacbb34000d [file] [log] [blame]
// |reftest| skip
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/licenses/publicdomain/
* Contributor: Jason Orendorff
*/
//-----------------------------------------------------------------------------
var summary = "Create a tree of threads";
var N = 50; // number of threads to create
printStatus (summary);
function range(start, stop) {
var a = [];
for (var i = start; i < stop; i++)
a.push(i);
return a;
}
function tree(start, stop) {
sleep(0.001);
if (start >= stop)
return [];
else if (start + 1 >= stop)
return [start];
sleep(0.001);
let mid = start + Math.floor((stop - start) / 2);
let halves = scatter([function () { return tree(start, mid); },
function () { return tree(mid, stop); }]);
sleep(0.001);
return Array.prototype.concat.apply([], halves);
}
var expect;
var actual;
if (typeof scatter == 'undefined' || typeof sleep == 'undefined') {
print('Test skipped. scatter or sleep not defined.');
expect = actual = 'Test skipped.';
} else {
expect = range(0, N).toSource();
actual = tree(0, N).toSource();
}
reportCompare(expect, actual, summary);