summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/baseline/bug892787-2.js
blob: 51381684f5eb465ffa1514cd83f8171a48f70d1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Constructing calls should throw if !callee->isInterpretedConstructor().
// This tests the polymorphic call path.

for (var i=0; i<20; i++)
    Function.prototype();

var funs = [
    function() { return 1; },
    function() { return 2; },
    function() { return 3; },
    function() { return 4; },
    function() { return 5; },
    function() { return 6; },
    function() { return 7; },
    function() { return 8; },
    function() { return 9; },
    function() { return 10; },
    Function.prototype
];

function f(callee) {
    new callee;
}
function g() {
    var c = 0;
    for (var i=0; i<50; i++) {
	try {
	    f(funs[i % funs.length]);
	} catch (e) {
	    assertEq(e.message.includes("not a constructor"), true);
	    c++;
	}
    }
    assertEq(c, 4);
}
g();