// 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();