Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(370)

Side by Side Diff: test/cctest/compiler/test-run-inlining.cc

Issue 1340313003: [turbofan] Make arguments object materialization inlinable. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@local_turbofan-arguments-2
Patch Set: Rebased Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/runtime/runtime-scopes.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/frames-inl.h" 7 #include "src/frames-inl.h"
8 #include "test/cctest/compiler/function-tester.h" 8 #include "test/cctest/compiler/function-tester.h"
9 9
10 using namespace v8::internal; 10 using namespace v8::internal;
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 InstallAssertInlineCountHelper(CcTest::isolate()); 154 InstallAssertInlineCountHelper(CcTest::isolate());
155 T.CheckCall(T.Val(42), T.Val("x"), T.undefined()); 155 T.CheckCall(T.Val(42), T.Val("x"), T.undefined());
156 } 156 }
157 157
158 158
159 TEST(InlineOmitArguments) { 159 TEST(InlineOmitArguments) {
160 FunctionTester T( 160 FunctionTester T(
161 "(function () {" 161 "(function () {"
162 " var x = 42;" 162 " var x = 42;"
163 " function bar(s, t, u, v) { AssertInlineCount(2); return x + s; };" 163 " function bar(s, t, u, v) { AssertInlineCount(2); return x + s; };"
164 " return (function (s,t) { return bar(s); });" 164 " function foo(s, t) { return bar(s); };"
165 " return foo;"
165 "})();", 166 "})();",
166 kInlineFlags); 167 kInlineFlags);
167 168
168 InstallAssertInlineCountHelper(CcTest::isolate()); 169 InstallAssertInlineCountHelper(CcTest::isolate());
169 T.CheckCall(T.Val(42 + 12), T.Val(12), T.undefined()); 170 T.CheckCall(T.Val(42 + 12), T.Val(12), T.undefined());
170 } 171 }
171 172
172 173
174 TEST(InlineOmitArgumentsObject) {
175 FunctionTester T(
176 "(function () {"
177 " function bar(s, t, u, v) { AssertInlineCount(2); return arguments; };"
178 " function foo(s, t) { var args = bar(s);"
179 " return args.length == 1 &&"
180 " args[0] == 11; };"
181 " return foo;"
182 "})();",
183 kInlineFlags);
184
185 InstallAssertInlineCountHelper(CcTest::isolate());
186 T.CheckCall(T.true_value(), T.Val(11), T.undefined());
187 }
188
189
173 TEST(InlineOmitArgumentsDeopt) { 190 TEST(InlineOmitArgumentsDeopt) {
174 FunctionTester T( 191 FunctionTester T(
175 "(function () {" 192 "(function () {"
176 " function foo(s,t,u,v) { AssertInlineCount(2);" 193 " function foo(s,t,u,v) { AssertInlineCount(2);"
177 " %DeoptimizeFunction(bar); return baz(); };" 194 " %DeoptimizeFunction(bar); return baz(); };"
178 " function bar() { return foo(11); };" 195 " function bar() { return foo(11); };"
179 " function baz() { return foo.arguments.length == 1 &&" 196 " function baz() { return foo.arguments.length == 1 &&"
180 " foo.arguments[0] == 11; }" 197 " foo.arguments[0] == 11; }"
181 " return bar;" 198 " return bar;"
182 "})();", 199 "})();",
183 kInlineFlags); 200 kInlineFlags);
184 201
185 InstallAssertInlineCountHelper(CcTest::isolate()); 202 InstallAssertInlineCountHelper(CcTest::isolate());
186 T.CheckCall(T.true_value(), T.Val(12), T.Val(14)); 203 T.CheckCall(T.true_value(), T.Val(12), T.Val(14));
187 } 204 }
188 205
189 206
190 TEST(InlineSurplusArguments) { 207 TEST(InlineSurplusArguments) {
191 FunctionTester T( 208 FunctionTester T(
192 "(function () {" 209 "(function () {"
193 " var x = 42;" 210 " var x = 42;"
194 " function foo(s) { AssertInlineCount(2); return x + s; };" 211 " function foo(s) { AssertInlineCount(2); return x + s; };"
195 " function bar(s,t) { return foo(s,t,13); };" 212 " function bar(s, t) { return foo(s, t, 13); };"
196 " return bar;" 213 " return bar;"
197 "})();", 214 "})();",
198 kInlineFlags); 215 kInlineFlags);
199 216
200 InstallAssertInlineCountHelper(CcTest::isolate()); 217 InstallAssertInlineCountHelper(CcTest::isolate());
201 T.CheckCall(T.Val(42 + 12), T.Val(12), T.undefined()); 218 T.CheckCall(T.Val(42 + 12), T.Val(12), T.undefined());
202 } 219 }
203 220
204 221
222 TEST(InlineSurplusArgumentsObject) {
223 FunctionTester T(
224 "(function () {"
225 " function foo(s) { AssertInlineCount(2); return arguments; };"
226 " function bar(s, t) { var args = foo(s, t, 13);"
227 " return args.length == 3 &&"
228 " args[0] == 11 &&"
229 " args[1] == 12 &&"
230 " args[2] == 13; };"
231 " return bar;"
232 "})();",
233 kInlineFlags);
234
235 InstallAssertInlineCountHelper(CcTest::isolate());
236 T.CheckCall(T.true_value(), T.Val(11), T.Val(12));
237 }
238
239
205 TEST(InlineSurplusArgumentsDeopt) { 240 TEST(InlineSurplusArgumentsDeopt) {
206 FunctionTester T( 241 FunctionTester T(
207 "(function () {" 242 "(function () {"
208 " function foo(s) { AssertInlineCount(2); %DeoptimizeFunction(bar);" 243 " function foo(s) { AssertInlineCount(2); %DeoptimizeFunction(bar);"
209 " return baz(); };" 244 " return baz(); };"
210 " function bar() { return foo(13, 14, 15); };" 245 " function bar() { return foo(13, 14, 15); };"
211 " function baz() { return foo.arguments.length == 3 &&" 246 " function baz() { return foo.arguments.length == 3 &&"
212 " foo.arguments[0] == 13 &&" 247 " foo.arguments[0] == 13 &&"
213 " foo.arguments[1] == 14 &&" 248 " foo.arguments[1] == 14 &&"
214 " foo.arguments[2] == 15; }" 249 " foo.arguments[2] == 15; }"
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 " if (x == 1) return bar(42);" 587 " if (x == 1) return bar(42);"
553 " return x;" 588 " return x;"
554 " }" 589 " }"
555 " return foo;" 590 " return foo;"
556 "})();", 591 "})();",
557 kInlineFlags); 592 kInlineFlags);
558 593
559 InstallAssertInlineCountHelper(CcTest::isolate()); 594 InstallAssertInlineCountHelper(CcTest::isolate());
560 T.CheckCall(T.Val(42), T.Val(1)); 595 T.CheckCall(T.Val(42), T.Val(1));
561 } 596 }
OLDNEW
« no previous file with comments | « src/runtime/runtime-scopes.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698