michael@0: load(libdir + "parallelarray-helpers.js"); michael@0: michael@0: // Test that we are able to add numbers even if the typesets are not michael@0: // "clean" because we have previously added strings and numbers. This michael@0: // should cause fallible unboxing to occur. michael@0: michael@0: function theTest() { michael@0: var mixedArray = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.1, michael@0: "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]; michael@0: michael@0: function op(e, i) { michael@0: return mixedArray[e % mixedArray.length] + i; michael@0: } michael@0: michael@0: // run op once where it has to add doubles and strings, michael@0: // just to pullute the typesets: michael@0: var jsarray0 = range(0, 1024); michael@0: jsarray0.map(op); michael@0: michael@0: // this version will never actually touch the strings: michael@0: assertArraySeqParResultsEq(range(0, 1024), "map", function (i) { return i % 10; }); michael@0: michael@0: // but if we try against the original we get bailouts: michael@0: assertParallelExecWillBail(function (mode) { michael@0: jsarray0.mapPar(op, mode); michael@0: }); michael@0: } michael@0: michael@0: if (getBuildConfiguration().parallelJS) michael@0: theTest();