]>
git.saurik.com Git - apple/javascriptcore.git/blob - tests/stress/call-varargs-with-different-arguments-length-after-warmup.js
2 * Copyright (C) 2015 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 // Regression test for https://bugs.webkit.org/show_bug.cgi?id=143407.
31 return arguments
.length
;
35 this.length
= arguments
.length
;
39 " var result = this.method.apply(this, arguments);" + "\n" +
40 " return result + 1;";
42 var constructTestBodyStr
=
43 " return new this.constructor(...arguments);";
46 { name: "LLint", iterations: 10 },
47 { name: "BaselineJIT", iterations: 50 },
48 { name: "DFG", iterations: 500 },
49 { name: "FTL", iterations: 10000 },
52 function doTest(testCategory
, testBodyStr
, tier
) {
54 var iterations
= tiers
[tier
].iterations
;
56 print("Testing " + testCategory
+ " tier " + tiers
[tier
].name
+ " by iterating " + iterations
+ " times");
61 o
.trigger
= new Function(testBodyStr
);
63 for (var i
= 0; i
< iterations
; i
++)
68 print("FAILED " + testCategory
+ " in tier " + tiers
[tier
].name
+ ": " + e
);
76 for (var tier
= 0; tier
< tiers
.length
; tier
++) {
77 if (!doTest("op_call_varargs", callTestBodyStr
, tier
))
81 for (var tier
= 0; tier
< tiers
.length
; tier
++) {
82 if (!doTest("op_construct_varargs", constructTestBodyStr
, tier
))
86 if (failureFound
== 1)
87 throw "ERROR: test has 1 failure";
88 else if (failureFound
> 1)
89 throw "ERROR: test has " + failureFound
+ " failures";