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

Side by Side Diff: test/cctest/interpreter/test-bytecode-generator.cc

Issue 2310103002: [Interpreter] Remove constant pool type in tests (Closed)
Patch Set: Remove warning for pool type Created 4 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 | « test/cctest/interpreter/generate-bytecode-expectations.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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 <fstream> 5 #include <fstream>
6 6
7 #include "src/v8.h" 7 #include "src/v8.h"
8 8
9 #include "src/interpreter/bytecode-array-iterator.h" 9 #include "src/interpreter/bytecode-array-iterator.h"
10 #include "src/interpreter/bytecode-generator.h" 10 #include "src/interpreter/bytecode-generator.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 if (generated_line != expected_line) { 144 if (generated_line != expected_line) {
145 std::cerr << "Inputs differ at line " << line_number << "\n"; 145 std::cerr << "Inputs differ at line " << line_number << "\n";
146 std::cerr << " Generated: '" << generated_line << "'\n"; 146 std::cerr << " Generated: '" << generated_line << "'\n";
147 std::cerr << " Expected: '" << expected_line << "'\n"; 147 std::cerr << " Expected: '" << expected_line << "'\n";
148 return false; 148 return false;
149 } 149 }
150 line_number++; 150 line_number++;
151 } while (true); 151 } while (true);
152 } 152 }
153 153
154 using ConstantPoolType = BytecodeExpectationsPrinter::ConstantPoolType;
155
156 TEST(PrimitiveReturnStatements) { 154 TEST(PrimitiveReturnStatements) {
157 InitializedIgnitionHandleScope scope; 155 InitializedIgnitionHandleScope scope;
158 BytecodeExpectationsPrinter printer(CcTest::isolate(), 156 BytecodeExpectationsPrinter printer(CcTest::isolate());
159 ConstantPoolType::kNumber);
160 const char* snippets[] = { 157 const char* snippets[] = {
161 "", 158 "",
162 159
163 "return;\n", 160 "return;\n",
164 161
165 "return null;\n", 162 "return null;\n",
166 163
167 "return true;\n", 164 "return true;\n",
168 165
169 "return false;\n", 166 "return false;\n",
(...skipping 10 matching lines...) Expand all
180 177
181 "return 2.0;\n", 178 "return 2.0;\n",
182 }; 179 };
183 180
184 CHECK(CompareTexts(BuildActual(printer, snippets), 181 CHECK(CompareTexts(BuildActual(printer, snippets),
185 LoadGolden("PrimitiveReturnStatements.golden"))); 182 LoadGolden("PrimitiveReturnStatements.golden")));
186 } 183 }
187 184
188 TEST(PrimitiveExpressions) { 185 TEST(PrimitiveExpressions) {
189 InitializedIgnitionHandleScope scope; 186 InitializedIgnitionHandleScope scope;
190 BytecodeExpectationsPrinter printer(CcTest::isolate(), 187 BytecodeExpectationsPrinter printer(CcTest::isolate());
191 ConstantPoolType::kNumber);
192 const char* snippets[] = { 188 const char* snippets[] = {
193 "var x = 0; return x;\n", 189 "var x = 0; return x;\n",
194 190
195 "var x = 0; return x + 3;\n", 191 "var x = 0; return x + 3;\n",
196 192
197 "var x = 0; return x - 3;\n", 193 "var x = 0; return x - 3;\n",
198 194
199 "var x = 4; return x * 3;\n", 195 "var x = 4; return x * 3;\n",
200 196
201 "var x = 4; return x / 3;\n", 197 "var x = 4; return x / 3;\n",
(...skipping 14 matching lines...) Expand all
216 212
217 "var x = 0; return (x, 3);\n", 213 "var x = 0; return (x, 3);\n",
218 }; 214 };
219 215
220 CHECK(CompareTexts(BuildActual(printer, snippets), 216 CHECK(CompareTexts(BuildActual(printer, snippets),
221 LoadGolden("PrimitiveExpressions.golden"))); 217 LoadGolden("PrimitiveExpressions.golden")));
222 } 218 }
223 219
224 TEST(LogicalExpressions) { 220 TEST(LogicalExpressions) {
225 InitializedIgnitionHandleScope scope; 221 InitializedIgnitionHandleScope scope;
226 BytecodeExpectationsPrinter printer(CcTest::isolate(), 222 BytecodeExpectationsPrinter printer(CcTest::isolate());
227 ConstantPoolType::kNumber);
228 const char* snippets[] = { 223 const char* snippets[] = {
229 "var x = 0; return x || 3;\n", 224 "var x = 0; return x || 3;\n",
230 225
231 "var x = 0; return (x == 1) || 3;\n", 226 "var x = 0; return (x == 1) || 3;\n",
232 227
233 "var x = 0; return x && 3;\n", 228 "var x = 0; return x && 3;\n",
234 229
235 "var x = 0; return (x == 0) && 3;\n", 230 "var x = 0; return (x == 0) && 3;\n",
236 231
237 "var x = 0; return x || (1, 2, 3);\n", 232 "var x = 0; return x || (1, 2, 3);\n",
(...skipping 22 matching lines...) Expand all
260 255
261 "var x = 1; return x && 3 || 0, 1;\n", 256 "var x = 1; return x && 3 || 0, 1;\n",
262 }; 257 };
263 258
264 CHECK(CompareTexts(BuildActual(printer, snippets), 259 CHECK(CompareTexts(BuildActual(printer, snippets),
265 LoadGolden("LogicalExpressions.golden"))); 260 LoadGolden("LogicalExpressions.golden")));
266 } 261 }
267 262
268 TEST(Parameters) { 263 TEST(Parameters) {
269 InitializedIgnitionHandleScope scope; 264 InitializedIgnitionHandleScope scope;
270 BytecodeExpectationsPrinter printer(CcTest::isolate(), 265 BytecodeExpectationsPrinter printer(CcTest::isolate());
271 ConstantPoolType::kNumber);
272 printer.set_wrap(false); 266 printer.set_wrap(false);
273 printer.set_test_function_name("f"); 267 printer.set_test_function_name("f");
274 268
275 const char* snippets[] = { 269 const char* snippets[] = {
276 "function f() { return this; }", 270 "function f() { return this; }",
277 271
278 "function f(arg1) { return arg1; }", 272 "function f(arg1) { return arg1; }",
279 273
280 "function f(arg1) { return this; }", 274 "function f(arg1) { return this; }",
281 275
282 "function f(arg1, arg2, arg3, arg4, arg5, arg6, arg7) { return arg4; }", 276 "function f(arg1, arg2, arg3, arg4, arg5, arg6, arg7) { return arg4; }",
283 277
284 "function f(arg1, arg2, arg3, arg4, arg5, arg6, arg7) { return this; }", 278 "function f(arg1, arg2, arg3, arg4, arg5, arg6, arg7) { return this; }",
285 279
286 "function f(arg1) { arg1 = 1; }", 280 "function f(arg1) { arg1 = 1; }",
287 281
288 "function f(arg1, arg2, arg3, arg4) { arg2 = 1; }", 282 "function f(arg1, arg2, arg3, arg4) { arg2 = 1; }",
289 }; 283 };
290 284
291 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"), 285 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"),
292 LoadGolden("Parameters.golden"))); 286 LoadGolden("Parameters.golden")));
293 } 287 }
294 288
295 TEST(IntegerConstants) { 289 TEST(IntegerConstants) {
296 InitializedIgnitionHandleScope scope; 290 InitializedIgnitionHandleScope scope;
297 BytecodeExpectationsPrinter printer(CcTest::isolate(), 291 BytecodeExpectationsPrinter printer(CcTest::isolate());
298 ConstantPoolType::kNumber);
299 const char* snippets[] = { 292 const char* snippets[] = {
300 "return 12345678;\n", 293 "return 12345678;\n",
301 294
302 "var a = 1234; return 5678;\n", 295 "var a = 1234; return 5678;\n",
303 296
304 "var a = 1234; return 1234;\n", 297 "var a = 1234; return 1234;\n",
305 }; 298 };
306 299
307 CHECK(CompareTexts(BuildActual(printer, snippets), 300 CHECK(CompareTexts(BuildActual(printer, snippets),
308 LoadGolden("IntegerConstants.golden"))); 301 LoadGolden("IntegerConstants.golden")));
309 } 302 }
310 303
311 TEST(HeapNumberConstants) { 304 TEST(HeapNumberConstants) {
312 InitializedIgnitionHandleScope scope; 305 InitializedIgnitionHandleScope scope;
313 BytecodeExpectationsPrinter printer(CcTest::isolate(), 306 BytecodeExpectationsPrinter printer(CcTest::isolate());
314 ConstantPoolType::kNumber);
315 const char* snippets[] = { 307 const char* snippets[] = {
316 "return 1.2;\n", 308 "return 1.2;\n",
317 309
318 "var a = 1.2; return 2.6;\n", 310 "var a = 1.2; return 2.6;\n",
319 311
320 "var a = 3.14; return 3.14;\n", 312 "var a = 3.14; return 3.14;\n",
321 313
322 "var a;" // 314 "var a;" //
323 REPEAT_256("\na = 1.414;") // 315 REPEAT_256("\na = 1.414;") //
324 " a = 3.14;\n", 316 " a = 3.14;\n",
325 }; 317 };
326 318
327 CHECK(CompareTexts(BuildActual(printer, snippets), 319 CHECK(CompareTexts(BuildActual(printer, snippets),
328 LoadGolden("HeapNumberConstants.golden"))); 320 LoadGolden("HeapNumberConstants.golden")));
329 } 321 }
330 322
331 TEST(StringConstants) { 323 TEST(StringConstants) {
332 InitializedIgnitionHandleScope scope; 324 InitializedIgnitionHandleScope scope;
333 BytecodeExpectationsPrinter printer(CcTest::isolate(), 325 BytecodeExpectationsPrinter printer(CcTest::isolate());
334 ConstantPoolType::kString);
335 const char* snippets[] = { 326 const char* snippets[] = {
336 "return \"This is a string\";\n", 327 "return \"This is a string\";\n",
337 328
338 "var a = \"First string\"; return \"Second string\";\n", 329 "var a = \"First string\"; return \"Second string\";\n",
339 330
340 "var a = \"Same string\"; return \"Same string\";\n", 331 "var a = \"Same string\"; return \"Same string\";\n",
341 }; 332 };
342 333
343 CHECK(CompareTexts(BuildActual(printer, snippets), 334 CHECK(CompareTexts(BuildActual(printer, snippets),
344 LoadGolden("StringConstants.golden"))); 335 LoadGolden("StringConstants.golden")));
345 } 336 }
346 337
347 TEST(PropertyLoads) { 338 TEST(PropertyLoads) {
348 InitializedIgnitionHandleScope scope; 339 InitializedIgnitionHandleScope scope;
349 BytecodeExpectationsPrinter printer(CcTest::isolate(), 340 BytecodeExpectationsPrinter printer(CcTest::isolate());
350 ConstantPoolType::kString);
351 printer.set_wrap(false); 341 printer.set_wrap(false);
352 printer.set_test_function_name("f"); 342 printer.set_test_function_name("f");
353 343
354 const char* snippets[] = { 344 const char* snippets[] = {
355 "function f(a) { return a.name; }\n" 345 "function f(a) { return a.name; }\n"
356 "f({name : \"test\"});\n", 346 "f({name : \"test\"});\n",
357 347
358 "function f(a) { return a[\"key\"]; }\n" 348 "function f(a) { return a[\"key\"]; }\n"
359 "f({key : \"test\"});\n", 349 "f({key : \"test\"});\n",
360 350
(...skipping 22 matching lines...) Expand all
383 "}\n" 373 "}\n"
384 "f({name : \"test\"}, \"name\")\n", 374 "f({name : \"test\"}, \"name\")\n",
385 }; 375 };
386 376
387 CHECK(CompareTexts(BuildActual(printer, snippets), 377 CHECK(CompareTexts(BuildActual(printer, snippets),
388 LoadGolden("PropertyLoads.golden"))); 378 LoadGolden("PropertyLoads.golden")));
389 } 379 }
390 380
391 TEST(PropertyStores) { 381 TEST(PropertyStores) {
392 InitializedIgnitionHandleScope scope; 382 InitializedIgnitionHandleScope scope;
393 BytecodeExpectationsPrinter printer(CcTest::isolate(), 383 BytecodeExpectationsPrinter printer(CcTest::isolate());
394 ConstantPoolType::kString);
395 printer.set_wrap(false); 384 printer.set_wrap(false);
396 printer.set_test_function_name("f"); 385 printer.set_test_function_name("f");
397 386
398 const char* snippets[] = { 387 const char* snippets[] = {
399 "function f(a) { a.name = \"val\"; }\n" 388 "function f(a) { a.name = \"val\"; }\n"
400 "f({name : \"test\"})", 389 "f({name : \"test\"})",
401 390
402 "function f(a) { a[\"key\"] = \"val\"; }\n" 391 "function f(a) { a[\"key\"] = \"val\"; }\n"
403 "f({key : \"test\"})", 392 "f({key : \"test\"})",
404 393
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 }; 438 };
450 439
451 CHECK(CompareTexts(BuildActual(printer, snippets), 440 CHECK(CompareTexts(BuildActual(printer, snippets),
452 LoadGolden("PropertyStores.golden"))); 441 LoadGolden("PropertyStores.golden")));
453 } 442 }
454 443
455 #define FUNC_ARG "new (function Obj() { this.func = function() { return; }})()" 444 #define FUNC_ARG "new (function Obj() { this.func = function() { return; }})()"
456 445
457 TEST(PropertyCall) { 446 TEST(PropertyCall) {
458 InitializedIgnitionHandleScope scope; 447 InitializedIgnitionHandleScope scope;
459 BytecodeExpectationsPrinter printer(CcTest::isolate(), 448 BytecodeExpectationsPrinter printer(CcTest::isolate());
460 ConstantPoolType::kString);
461 printer.set_wrap(false); 449 printer.set_wrap(false);
462 printer.set_test_function_name("f"); 450 printer.set_test_function_name("f");
463 451
464 const char* snippets[] = { 452 const char* snippets[] = {
465 "function f(a) { return a.func(); }\n" 453 "function f(a) { return a.func(); }\n"
466 "f(" FUNC_ARG ")", 454 "f(" FUNC_ARG ")",
467 455
468 "function f(a, b, c) { return a.func(b, c); }\n" 456 "function f(a, b, c) { return a.func(b, c); }\n"
469 "f(" FUNC_ARG ", 1, 2)", 457 "f(" FUNC_ARG ", 1, 2)",
470 458
471 "function f(a, b) { return a.func(b + b, b); }\n" 459 "function f(a, b) { return a.func(b + b, b); }\n"
472 "f(" FUNC_ARG ", 1)", 460 "f(" FUNC_ARG ", 1)",
473 461
474 "function f(a) {\n" 462 "function f(a) {\n"
475 " a.func;\n" // 463 " a.func;\n" //
476 REPEAT_127(" a.func;\n") // 464 REPEAT_127(" a.func;\n") //
477 " return a.func(); }\n" 465 " return a.func(); }\n"
478 "f(" FUNC_ARG ")", 466 "f(" FUNC_ARG ")",
479 }; 467 };
480 468
481 CHECK(CompareTexts(BuildActual(printer, snippets), 469 CHECK(CompareTexts(BuildActual(printer, snippets),
482 LoadGolden("PropertyCall.golden"))); 470 LoadGolden("PropertyCall.golden")));
483 } 471 }
484 472
485 TEST(LoadGlobal) { 473 TEST(LoadGlobal) {
486 InitializedIgnitionHandleScope scope; 474 InitializedIgnitionHandleScope scope;
487 BytecodeExpectationsPrinter printer(CcTest::isolate(), 475 BytecodeExpectationsPrinter printer(CcTest::isolate());
488 ConstantPoolType::kString);
489 printer.set_wrap(false); 476 printer.set_wrap(false);
490 printer.set_test_function_name("f"); 477 printer.set_test_function_name("f");
491 478
492 const char* snippets[] = { 479 const char* snippets[] = {
493 "var a = 1;\n" 480 "var a = 1;\n"
494 "function f() { return a; }\n" 481 "function f() { return a; }\n"
495 "f()", 482 "f()",
496 483
497 "function t() { }\n" 484 "function t() { }\n"
498 "function f() { return t; }\n" 485 "function f() { return t; }\n"
(...skipping 11 matching lines...) Expand all
510 "}\n" 497 "}\n"
511 "f({name: 1});\n", 498 "f({name: 1});\n",
512 }; 499 };
513 500
514 CHECK(CompareTexts(BuildActual(printer, snippets), 501 CHECK(CompareTexts(BuildActual(printer, snippets),
515 LoadGolden("LoadGlobal.golden"))); 502 LoadGolden("LoadGlobal.golden")));
516 } 503 }
517 504
518 TEST(StoreGlobal) { 505 TEST(StoreGlobal) {
519 InitializedIgnitionHandleScope scope; 506 InitializedIgnitionHandleScope scope;
520 BytecodeExpectationsPrinter printer(CcTest::isolate(), 507 BytecodeExpectationsPrinter printer(CcTest::isolate());
521 ConstantPoolType::kString);
522 printer.set_wrap(false); 508 printer.set_wrap(false);
523 printer.set_test_function_name("f"); 509 printer.set_test_function_name("f");
524 510
525 const char* snippets[] = { 511 const char* snippets[] = {
526 "var a = 1;\n" 512 "var a = 1;\n"
527 "function f() { a = 2; }\n" 513 "function f() { a = 2; }\n"
528 "f();\n", 514 "f();\n",
529 515
530 "var a = \"test\"; function f(b) { a = b; }\n" 516 "var a = \"test\"; function f(b) { a = b; }\n"
531 "f(\"global\");\n", 517 "f(\"global\");\n",
(...skipping 23 matching lines...) Expand all
555 "}\n" 541 "}\n"
556 "f({name: 1});\n", 542 "f({name: 1});\n",
557 }; 543 };
558 544
559 CHECK(CompareTexts(BuildActual(printer, snippets), 545 CHECK(CompareTexts(BuildActual(printer, snippets),
560 LoadGolden("StoreGlobal.golden"))); 546 LoadGolden("StoreGlobal.golden")));
561 } 547 }
562 548
563 TEST(CallGlobal) { 549 TEST(CallGlobal) {
564 InitializedIgnitionHandleScope scope; 550 InitializedIgnitionHandleScope scope;
565 BytecodeExpectationsPrinter printer(CcTest::isolate(), 551 BytecodeExpectationsPrinter printer(CcTest::isolate());
566 ConstantPoolType::kString);
567 printer.set_wrap(false); 552 printer.set_wrap(false);
568 printer.set_test_function_name("f"); 553 printer.set_test_function_name("f");
569 554
570 const char* snippets[] = { 555 const char* snippets[] = {
571 "function t() { }\n" 556 "function t() { }\n"
572 "function f() { return t(); }\n" 557 "function f() { return t(); }\n"
573 "f();\n", 558 "f();\n",
574 559
575 "function t(a, b, c) { }\n" 560 "function t(a, b, c) { }\n"
576 "function f() { return t(1, 2, 3); }\n" 561 "function f() { return t(1, 2, 3); }\n"
577 "f();\n", 562 "f();\n",
578 }; 563 };
579 564
580 CHECK(CompareTexts(BuildActual(printer, snippets), 565 CHECK(CompareTexts(BuildActual(printer, snippets),
581 LoadGolden("CallGlobal.golden"))); 566 LoadGolden("CallGlobal.golden")));
582 } 567 }
583 568
584 TEST(CallRuntime) { 569 TEST(CallRuntime) {
585 InitializedIgnitionHandleScope scope; 570 InitializedIgnitionHandleScope scope;
586 BytecodeExpectationsPrinter printer(CcTest::isolate(), 571 BytecodeExpectationsPrinter printer(CcTest::isolate());
587 ConstantPoolType::kMixed);
588 printer.set_wrap(false); 572 printer.set_wrap(false);
589 printer.set_test_function_name("f"); 573 printer.set_test_function_name("f");
590 574
591 const char* snippets[] = { 575 const char* snippets[] = {
592 "function f() { %TheHole() }\n" 576 "function f() { %TheHole() }\n"
593 "f();\n", 577 "f();\n",
594 578
595 "function f(a) { return %IsArray(a) }\n" 579 "function f(a) { return %IsArray(a) }\n"
596 "f(undefined);\n", 580 "f(undefined);\n",
597 581
598 "function f() { return %Add(1, 2) }\n" 582 "function f() { return %Add(1, 2) }\n"
599 "f();\n", 583 "f();\n",
600 584
601 "function f() { return %spread_iterable([1]) }\n" 585 "function f() { return %spread_iterable([1]) }\n"
602 "f();\n", 586 "f();\n",
603 }; 587 };
604 588
605 CHECK(CompareTexts(BuildActual(printer, snippets), 589 CHECK(CompareTexts(BuildActual(printer, snippets),
606 LoadGolden("CallRuntime.golden"))); 590 LoadGolden("CallRuntime.golden")));
607 } 591 }
608 592
609 TEST(IfConditions) { 593 TEST(IfConditions) {
610 InitializedIgnitionHandleScope scope; 594 InitializedIgnitionHandleScope scope;
611 BytecodeExpectationsPrinter printer(CcTest::isolate(), 595 BytecodeExpectationsPrinter printer(CcTest::isolate());
612 ConstantPoolType::kMixed);
613 printer.set_wrap(false); 596 printer.set_wrap(false);
614 printer.set_test_function_name("f"); 597 printer.set_test_function_name("f");
615 598
616 const char* snippets[] = { 599 const char* snippets[] = {
617 "function f() {\n" 600 "function f() {\n"
618 " if (0) {\n" 601 " if (0) {\n"
619 " return 1;\n" 602 " return 1;\n"
620 " } else {\n" 603 " } else {\n"
621 " return -1;\n" 604 " return -1;\n"
622 " }\n" 605 " }\n"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 "};\n" 699 "};\n"
717 "f(-1, 1);\n", 700 "f(-1, 1);\n",
718 }; 701 };
719 702
720 CHECK(CompareTexts(BuildActual(printer, snippets), 703 CHECK(CompareTexts(BuildActual(printer, snippets),
721 LoadGolden("IfConditions.golden"))); 704 LoadGolden("IfConditions.golden")));
722 } 705 }
723 706
724 TEST(DeclareGlobals) { 707 TEST(DeclareGlobals) {
725 InitializedIgnitionHandleScope scope; 708 InitializedIgnitionHandleScope scope;
726 BytecodeExpectationsPrinter printer(CcTest::isolate(), 709 BytecodeExpectationsPrinter printer(CcTest::isolate());
727 ConstantPoolType::kMixed);
728 printer.set_wrap(false); 710 printer.set_wrap(false);
729 printer.set_test_function_name("f"); 711 printer.set_test_function_name("f");
730 printer.set_execute(false); 712 printer.set_execute(false);
731 printer.set_top_level(true); 713 printer.set_top_level(true);
732 714
733 const char* snippets[] = { 715 const char* snippets[] = {
734 "var a = 1;\n", 716 "var a = 1;\n",
735 717
736 "function f() {}\n", 718 "function f() {}\n",
737 719
738 "var a = 1;\n" 720 "var a = 1;\n"
739 "a=2;\n", 721 "a=2;\n",
740 722
741 "function f() {}\n" 723 "function f() {}\n"
742 "f();\n", 724 "f();\n",
743 }; 725 };
744 726
745 CHECK(CompareTexts(BuildActual(printer, snippets), 727 CHECK(CompareTexts(BuildActual(printer, snippets),
746 LoadGolden("DeclareGlobals.golden"))); 728 LoadGolden("DeclareGlobals.golden")));
747 } 729 }
748 730
749 TEST(BreakableBlocks) { 731 TEST(BreakableBlocks) {
750 InitializedIgnitionHandleScope scope; 732 InitializedIgnitionHandleScope scope;
751 BytecodeExpectationsPrinter printer(CcTest::isolate(), 733 BytecodeExpectationsPrinter printer(CcTest::isolate());
752 ConstantPoolType::kMixed);
753 734
754 const char* snippets[] = { 735 const char* snippets[] = {
755 "var x = 0;\n" 736 "var x = 0;\n"
756 "label: {\n" 737 "label: {\n"
757 " x = x + 1;\n" 738 " x = x + 1;\n"
758 " break label;\n" 739 " break label;\n"
759 " x = x + 1;\n" 740 " x = x + 1;\n"
760 "}\n" 741 "}\n"
761 "return x;\n", 742 "return x;\n",
762 743
(...skipping 25 matching lines...) Expand all
788 "}\n" 769 "}\n"
789 "x = 4;\n", 770 "x = 4;\n",
790 }; 771 };
791 772
792 CHECK(CompareTexts(BuildActual(printer, snippets), 773 CHECK(CompareTexts(BuildActual(printer, snippets),
793 LoadGolden("BreakableBlocks.golden"))); 774 LoadGolden("BreakableBlocks.golden")));
794 } 775 }
795 776
796 TEST(BasicLoops) { 777 TEST(BasicLoops) {
797 InitializedIgnitionHandleScope scope; 778 InitializedIgnitionHandleScope scope;
798 BytecodeExpectationsPrinter printer(CcTest::isolate(), 779 BytecodeExpectationsPrinter printer(CcTest::isolate());
799 ConstantPoolType::kMixed);
800 const char* snippets[] = { 780 const char* snippets[] = {
801 "var x = 0;\n" 781 "var x = 0;\n"
802 "while (false) { x = 99; break; continue; }\n" 782 "while (false) { x = 99; break; continue; }\n"
803 "return x;\n", 783 "return x;\n",
804 784
805 "var x = 0;\n" 785 "var x = 0;\n"
806 "while (false) {\n" 786 "while (false) {\n"
807 " x = x + 1;\n" 787 " x = x + 1;\n"
808 "};\n" 788 "};\n"
809 "return x;\n", 789 "return x;\n",
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 " }\n" 922 " }\n"
943 "}\n", 923 "}\n",
944 }; 924 };
945 925
946 CHECK(CompareTexts(BuildActual(printer, snippets), 926 CHECK(CompareTexts(BuildActual(printer, snippets),
947 LoadGolden("BasicLoops.golden"))); 927 LoadGolden("BasicLoops.golden")));
948 } 928 }
949 929
950 TEST(JumpsRequiringConstantWideOperands) { 930 TEST(JumpsRequiringConstantWideOperands) {
951 InitializedIgnitionHandleScope scope; 931 InitializedIgnitionHandleScope scope;
952 BytecodeExpectationsPrinter printer(CcTest::isolate(), 932 BytecodeExpectationsPrinter printer(CcTest::isolate());
953 ConstantPoolType::kNumber);
954 const char* snippets[] = { 933 const char* snippets[] = {
955 REPEAT_256("var x = 0.1;\n") 934 REPEAT_256("var x = 0.1;\n")
956 REPEAT_32("var x = 0.2;\n") 935 REPEAT_32("var x = 0.2;\n")
957 REPEAT_16("var x = 0.3;\n") 936 REPEAT_16("var x = 0.3;\n")
958 REPEAT_8("var x = 0.4;\n") 937 REPEAT_8("var x = 0.4;\n")
959 "for (var i = 0; i < 3; i++) {\n" 938 "for (var i = 0; i < 3; i++) {\n"
960 " if (i == 1) continue;\n" 939 " if (i == 1) continue;\n"
961 " if (i == 2) break;\n" 940 " if (i == 2) break;\n"
962 "}\n" 941 "}\n"
963 "return 3;\n", 942 "return 3;\n",
964 }; 943 };
965 944
966 CHECK(CompareTexts(BuildActual(printer, snippets), 945 CHECK(CompareTexts(BuildActual(printer, snippets),
967 LoadGolden("JumpsRequiringConstantWideOperands.golden"))); 946 LoadGolden("JumpsRequiringConstantWideOperands.golden")));
968 } 947 }
969 948
970 TEST(UnaryOperators) { 949 TEST(UnaryOperators) {
971 InitializedIgnitionHandleScope scope; 950 InitializedIgnitionHandleScope scope;
972 BytecodeExpectationsPrinter printer(CcTest::isolate(), 951 BytecodeExpectationsPrinter printer(CcTest::isolate());
973 ConstantPoolType::kNumber);
974 const char* snippets[] = { 952 const char* snippets[] = {
975 "var x = 0;\n" 953 "var x = 0;\n"
976 "while (x != 10) {\n" 954 "while (x != 10) {\n"
977 " x = x + 10;\n" 955 " x = x + 10;\n"
978 "}\n" 956 "}\n"
979 "return x;\n", 957 "return x;\n",
980 958
981 "var x = false;\n" 959 "var x = false;\n"
982 "do {\n" 960 "do {\n"
983 " x = !x;\n" 961 " x = !x;\n"
(...skipping 16 matching lines...) Expand all
1000 "var x = 13;\n" 978 "var x = 13;\n"
1001 "return -x;\n", 979 "return -x;\n",
1002 }; 980 };
1003 981
1004 CHECK(CompareTexts(BuildActual(printer, snippets), 982 CHECK(CompareTexts(BuildActual(printer, snippets),
1005 LoadGolden("UnaryOperators.golden"))); 983 LoadGolden("UnaryOperators.golden")));
1006 } 984 }
1007 985
1008 TEST(Typeof) { 986 TEST(Typeof) {
1009 InitializedIgnitionHandleScope scope; 987 InitializedIgnitionHandleScope scope;
1010 BytecodeExpectationsPrinter printer(CcTest::isolate(), 988 BytecodeExpectationsPrinter printer(CcTest::isolate());
1011 ConstantPoolType::kString);
1012 printer.set_wrap(false); 989 printer.set_wrap(false);
1013 printer.set_test_function_name("f"); 990 printer.set_test_function_name("f");
1014 991
1015 const char* snippets[] = { 992 const char* snippets[] = {
1016 "function f() {\n" 993 "function f() {\n"
1017 " var x = 13;\n" 994 " var x = 13;\n"
1018 " return typeof(x);\n" 995 " return typeof(x);\n"
1019 "};", 996 "};",
1020 997
1021 "var x = 13;\n" 998 "var x = 13;\n"
1022 "function f() {\n" 999 "function f() {\n"
1023 " return typeof(x);\n" 1000 " return typeof(x);\n"
1024 "};", 1001 "};",
1025 }; 1002 };
1026 1003
1027 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"), 1004 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"),
1028 LoadGolden("Typeof.golden"))); 1005 LoadGolden("Typeof.golden")));
1029 } 1006 }
1030 1007
1031 TEST(Delete) { 1008 TEST(Delete) {
1032 InitializedIgnitionHandleScope scope; 1009 InitializedIgnitionHandleScope scope;
1033 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1010 BytecodeExpectationsPrinter printer(CcTest::isolate());
1034 ConstantPoolType::kMixed);
1035 1011
1036 const char* snippets[] = { 1012 const char* snippets[] = {
1037 "var a = {x:13, y:14}; return delete a.x;\n", 1013 "var a = {x:13, y:14}; return delete a.x;\n",
1038 1014
1039 "'use strict'; var a = {x:13, y:14}; return delete a.x;\n", 1015 "'use strict'; var a = {x:13, y:14}; return delete a.x;\n",
1040 1016
1041 "var a = {1:13, 2:14}; return delete a[2];\n", 1017 "var a = {1:13, 2:14}; return delete a[2];\n",
1042 1018
1043 "var a = 10; return delete a;\n", 1019 "var a = 10; return delete a;\n",
1044 1020
1045 "'use strict';\n" 1021 "'use strict';\n"
1046 "var a = {1:10};\n" 1022 "var a = {1:10};\n"
1047 "(function f1() {return a;});\n" 1023 "(function f1() {return a;});\n"
1048 "return delete a[1];\n", 1024 "return delete a[1];\n",
1049 1025
1050 "return delete 'test';\n", 1026 "return delete 'test';\n",
1051 }; 1027 };
1052 1028
1053 CHECK(CompareTexts(BuildActual(printer, snippets), 1029 CHECK(CompareTexts(BuildActual(printer, snippets),
1054 LoadGolden("Delete.golden"))); 1030 LoadGolden("Delete.golden")));
1055 } 1031 }
1056 1032
1057 TEST(GlobalDelete) { 1033 TEST(GlobalDelete) {
1058 InitializedIgnitionHandleScope scope; 1034 InitializedIgnitionHandleScope scope;
1059 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1035 BytecodeExpectationsPrinter printer(CcTest::isolate());
1060 ConstantPoolType::kMixed);
1061 printer.set_wrap(false); 1036 printer.set_wrap(false);
1062 printer.set_test_function_name("f"); 1037 printer.set_test_function_name("f");
1063 1038
1064 const char* snippets[] = { 1039 const char* snippets[] = {
1065 "var a = {x:13, y:14};\n" 1040 "var a = {x:13, y:14};\n"
1066 "function f() {\n" 1041 "function f() {\n"
1067 " return delete a.x;\n" 1042 " return delete a.x;\n"
1068 "};\n" 1043 "};\n"
1069 "f();\n", 1044 "f();\n",
1070 1045
(...skipping 16 matching lines...) Expand all
1087 "};\n" 1062 "};\n"
1088 "f();\n", 1063 "f();\n",
1089 }; 1064 };
1090 1065
1091 CHECK(CompareTexts(BuildActual(printer, snippets), 1066 CHECK(CompareTexts(BuildActual(printer, snippets),
1092 LoadGolden("GlobalDelete.golden"))); 1067 LoadGolden("GlobalDelete.golden")));
1093 } 1068 }
1094 1069
1095 TEST(FunctionLiterals) { 1070 TEST(FunctionLiterals) {
1096 InitializedIgnitionHandleScope scope; 1071 InitializedIgnitionHandleScope scope;
1097 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1072 BytecodeExpectationsPrinter printer(CcTest::isolate());
1098 ConstantPoolType::kMixed);
1099 1073
1100 const char* snippets[] = { 1074 const char* snippets[] = {
1101 "return function(){ }\n", 1075 "return function(){ }\n",
1102 1076
1103 "return (function(){ })()\n", 1077 "return (function(){ })()\n",
1104 1078
1105 "return (function(x){ return x; })(1)\n", 1079 "return (function(x){ return x; })(1)\n",
1106 }; 1080 };
1107 1081
1108 CHECK(CompareTexts(BuildActual(printer, snippets), 1082 CHECK(CompareTexts(BuildActual(printer, snippets),
1109 LoadGolden("FunctionLiterals.golden"))); 1083 LoadGolden("FunctionLiterals.golden")));
1110 } 1084 }
1111 1085
1112 TEST(RegExpLiterals) { 1086 TEST(RegExpLiterals) {
1113 InitializedIgnitionHandleScope scope; 1087 InitializedIgnitionHandleScope scope;
1114 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1088 BytecodeExpectationsPrinter printer(CcTest::isolate());
1115 ConstantPoolType::kString);
1116 1089
1117 const char* snippets[] = { 1090 const char* snippets[] = {
1118 "return /ab+d/;\n", 1091 "return /ab+d/;\n",
1119 1092
1120 "return /(\\w+)\\s(\\w+)/i;\n", 1093 "return /(\\w+)\\s(\\w+)/i;\n",
1121 1094
1122 "return /ab+d/.exec('abdd');\n", 1095 "return /ab+d/.exec('abdd');\n",
1123 }; 1096 };
1124 1097
1125 CHECK(CompareTexts(BuildActual(printer, snippets), 1098 CHECK(CompareTexts(BuildActual(printer, snippets),
1126 LoadGolden("RegExpLiterals.golden"))); 1099 LoadGolden("RegExpLiterals.golden")));
1127 } 1100 }
1128 1101
1129 TEST(RegExpLiteralsWide) { 1102 TEST(RegExpLiteralsWide) {
1130 InitializedIgnitionHandleScope scope; 1103 InitializedIgnitionHandleScope scope;
1131 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1104 BytecodeExpectationsPrinter printer(CcTest::isolate());
1132 ConstantPoolType::kMixed);
1133 1105
1134 const char* snippets[] = { 1106 const char* snippets[] = {
1135 "var a;" // 1107 "var a;" //
1136 REPEAT_256("\na = 1.23;") // 1108 REPEAT_256("\na = 1.23;") //
1137 "\nreturn /ab+d/;\n", 1109 "\nreturn /ab+d/;\n",
1138 }; 1110 };
1139 1111
1140 CHECK(CompareTexts(BuildActual(printer, snippets), 1112 CHECK(CompareTexts(BuildActual(printer, snippets),
1141 LoadGolden("RegExpLiteralsWide.golden"))); 1113 LoadGolden("RegExpLiteralsWide.golden")));
1142 } 1114 }
1143 1115
1144 TEST(ArrayLiterals) { 1116 TEST(ArrayLiterals) {
1145 InitializedIgnitionHandleScope scope; 1117 InitializedIgnitionHandleScope scope;
1146 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1118 BytecodeExpectationsPrinter printer(CcTest::isolate());
1147 ConstantPoolType::kMixed);
1148 1119
1149 const char* snippets[] = { 1120 const char* snippets[] = {
1150 "return [ 1, 2 ];\n", 1121 "return [ 1, 2 ];\n",
1151 1122
1152 "var a = 1; return [ a, a + 1 ];\n", 1123 "var a = 1; return [ a, a + 1 ];\n",
1153 1124
1154 "return [ [ 1, 2 ], [ 3 ] ];\n", 1125 "return [ [ 1, 2 ], [ 3 ] ];\n",
1155 1126
1156 "var a = 1; return [ [ a, 2 ], [ a + 2 ] ];\n", 1127 "var a = 1; return [ [ a, 2 ], [ a + 2 ] ];\n",
1157 }; 1128 };
1158 1129
1159 CHECK(CompareTexts(BuildActual(printer, snippets), 1130 CHECK(CompareTexts(BuildActual(printer, snippets),
1160 LoadGolden("ArrayLiterals.golden"))); 1131 LoadGolden("ArrayLiterals.golden")));
1161 } 1132 }
1162 1133
1163 TEST(ArrayLiteralsWide) { 1134 TEST(ArrayLiteralsWide) {
1164 InitializedIgnitionHandleScope scope; 1135 InitializedIgnitionHandleScope scope;
1165 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1136 BytecodeExpectationsPrinter printer(CcTest::isolate());
1166 ConstantPoolType::kMixed);
1167 1137
1168 const char* snippets[] = { 1138 const char* snippets[] = {
1169 "var a;" // 1139 "var a;" //
1170 REPEAT_256("\na = 1.23;") // 1140 REPEAT_256("\na = 1.23;") //
1171 "\nreturn [ 1 , 2 ];\n", 1141 "\nreturn [ 1 , 2 ];\n",
1172 }; 1142 };
1173 1143
1174 CHECK(CompareTexts(BuildActual(printer, snippets), 1144 CHECK(CompareTexts(BuildActual(printer, snippets),
1175 LoadGolden("ArrayLiteralsWide.golden"))); 1145 LoadGolden("ArrayLiteralsWide.golden")));
1176 } 1146 }
1177 1147
1178 TEST(ObjectLiterals) { 1148 TEST(ObjectLiterals) {
1179 InitializedIgnitionHandleScope scope; 1149 InitializedIgnitionHandleScope scope;
1180 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1150 BytecodeExpectationsPrinter printer(CcTest::isolate());
1181 ConstantPoolType::kMixed);
1182 1151
1183 const char* snippets[] = { 1152 const char* snippets[] = {
1184 "return { };\n", 1153 "return { };\n",
1185 1154
1186 "return { name: 'string', val: 9.2 };\n", 1155 "return { name: 'string', val: 9.2 };\n",
1187 1156
1188 "var a = 1; return { name: 'string', val: a };\n", 1157 "var a = 1; return { name: 'string', val: a };\n",
1189 1158
1190 "var a = 1; return { val: a, val: a + 1 };\n", 1159 "var a = 1; return { val: a, val: a + 1 };\n",
1191 1160
(...skipping 19 matching lines...) Expand all
1211 1180
1212 "var n = 'name'; return { [n]: 'val', get a() { }, set a(b) {} };\n", 1181 "var n = 'name'; return { [n]: 'val', get a() { }, set a(b) {} };\n",
1213 }; 1182 };
1214 1183
1215 CHECK(CompareTexts(BuildActual(printer, snippets), 1184 CHECK(CompareTexts(BuildActual(printer, snippets),
1216 LoadGolden("ObjectLiterals.golden"))); 1185 LoadGolden("ObjectLiterals.golden")));
1217 } 1186 }
1218 1187
1219 TEST(ObjectLiteralsWide) { 1188 TEST(ObjectLiteralsWide) {
1220 InitializedIgnitionHandleScope scope; 1189 InitializedIgnitionHandleScope scope;
1221 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1190 BytecodeExpectationsPrinter printer(CcTest::isolate());
1222 ConstantPoolType::kMixed);
1223 const char* snippets[] = { 1191 const char* snippets[] = {
1224 "var a;" // 1192 "var a;" //
1225 REPEAT_256("\na = 1.23;") // 1193 REPEAT_256("\na = 1.23;") //
1226 "\nreturn { name: 'string', val: 9.2 };\n", 1194 "\nreturn { name: 'string', val: 9.2 };\n",
1227 }; 1195 };
1228 1196
1229 CHECK(CompareTexts(BuildActual(printer, snippets), 1197 CHECK(CompareTexts(BuildActual(printer, snippets),
1230 LoadGolden("ObjectLiteralsWide.golden"))); 1198 LoadGolden("ObjectLiteralsWide.golden")));
1231 } 1199 }
1232 1200
1233 TEST(TopLevelObjectLiterals) { 1201 TEST(TopLevelObjectLiterals) {
1234 InitializedIgnitionHandleScope scope; 1202 InitializedIgnitionHandleScope scope;
1235 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1203 BytecodeExpectationsPrinter printer(CcTest::isolate());
1236 ConstantPoolType::kMixed);
1237 printer.set_wrap(false); 1204 printer.set_wrap(false);
1238 printer.set_test_function_name("f"); 1205 printer.set_test_function_name("f");
1239 printer.set_execute(false); 1206 printer.set_execute(false);
1240 printer.set_top_level(true); 1207 printer.set_top_level(true);
1241 1208
1242 const char* snippets[] = { 1209 const char* snippets[] = {
1243 "var a = { func: function() { } };\n", 1210 "var a = { func: function() { } };\n",
1244 }; 1211 };
1245 1212
1246 CHECK(CompareTexts(BuildActual(printer, snippets), 1213 CHECK(CompareTexts(BuildActual(printer, snippets),
1247 LoadGolden("TopLevelObjectLiterals.golden"))); 1214 LoadGolden("TopLevelObjectLiterals.golden")));
1248 } 1215 }
1249 1216
1250 TEST(TryCatch) { 1217 TEST(TryCatch) {
1251 InitializedIgnitionHandleScope scope; 1218 InitializedIgnitionHandleScope scope;
1252 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1219 BytecodeExpectationsPrinter printer(CcTest::isolate());
1253 ConstantPoolType::kMixed);
1254 1220
1255 const char* snippets[] = { 1221 const char* snippets[] = {
1256 "try { return 1; } catch(e) { return 2; }\n", 1222 "try { return 1; } catch(e) { return 2; }\n",
1257 1223
1258 "var a;\n" 1224 "var a;\n"
1259 "try { a = 1 } catch(e1) {};\n" 1225 "try { a = 1 } catch(e1) {};\n"
1260 "try { a = 2 } catch(e2) { a = 3 }\n", 1226 "try { a = 2 } catch(e2) { a = 3 }\n",
1261 }; 1227 };
1262 1228
1263 CHECK(CompareTexts(BuildActual(printer, snippets), 1229 CHECK(CompareTexts(BuildActual(printer, snippets),
1264 LoadGolden("TryCatch.golden"))); 1230 LoadGolden("TryCatch.golden")));
1265 } 1231 }
1266 1232
1267 TEST(TryFinally) { 1233 TEST(TryFinally) {
1268 InitializedIgnitionHandleScope scope; 1234 InitializedIgnitionHandleScope scope;
1269 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1235 BytecodeExpectationsPrinter printer(CcTest::isolate());
1270 ConstantPoolType::kMixed);
1271 const char* snippets[] = { 1236 const char* snippets[] = {
1272 "var a = 1;\n" 1237 "var a = 1;\n"
1273 "try { a = 2; } finally { a = 3; }\n", 1238 "try { a = 2; } finally { a = 3; }\n",
1274 1239
1275 "var a = 1;\n" 1240 "var a = 1;\n"
1276 "try { a = 2; } catch(e) { a = 20 } finally { a = 3; }\n", 1241 "try { a = 2; } catch(e) { a = 20 } finally { a = 3; }\n",
1277 1242
1278 "var a; try {\n" 1243 "var a; try {\n"
1279 " try { a = 1 } catch(e) { a = 2 }\n" 1244 " try { a = 1 } catch(e) { a = 2 }\n"
1280 "} catch(e) { a = 20 } finally { a = 3; }\n", 1245 "} catch(e) { a = 20 } finally { a = 3; }\n",
1281 }; 1246 };
1282 1247
1283 CHECK(CompareTexts(BuildActual(printer, snippets), 1248 CHECK(CompareTexts(BuildActual(printer, snippets),
1284 LoadGolden("TryFinally.golden"))); 1249 LoadGolden("TryFinally.golden")));
1285 } 1250 }
1286 1251
1287 TEST(Throw) { 1252 TEST(Throw) {
1288 InitializedIgnitionHandleScope scope; 1253 InitializedIgnitionHandleScope scope;
1289 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1254 BytecodeExpectationsPrinter printer(CcTest::isolate());
1290 ConstantPoolType::kString);
1291 const char* snippets[] = { 1255 const char* snippets[] = {
1292 "throw 1;\n", 1256 "throw 1;\n",
1293 1257
1294 "throw 'Error';\n", 1258 "throw 'Error';\n",
1295 1259
1296 "var a = 1; if (a) { throw 'Error'; };\n", 1260 "var a = 1; if (a) { throw 'Error'; };\n",
1297 }; 1261 };
1298 1262
1299 CHECK( 1263 CHECK(
1300 CompareTexts(BuildActual(printer, snippets), LoadGolden("Throw.golden"))); 1264 CompareTexts(BuildActual(printer, snippets), LoadGolden("Throw.golden")));
1301 } 1265 }
1302 1266
1303 TEST(CallNew) { 1267 TEST(CallNew) {
1304 InitializedIgnitionHandleScope scope; 1268 InitializedIgnitionHandleScope scope;
1305 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1269 BytecodeExpectationsPrinter printer(CcTest::isolate());
1306 ConstantPoolType::kMixed);
1307 printer.set_wrap(false); 1270 printer.set_wrap(false);
1308 printer.set_test_function_name("f"); 1271 printer.set_test_function_name("f");
1309 1272
1310 const char* snippets[] = { 1273 const char* snippets[] = {
1311 "function bar() { this.value = 0; }\n" 1274 "function bar() { this.value = 0; }\n"
1312 "function f() { return new bar(); }\n" 1275 "function f() { return new bar(); }\n"
1313 "f();\n", 1276 "f();\n",
1314 1277
1315 "function bar(x) { this.value = 18; this.x = x;}\n" 1278 "function bar(x) { this.value = 18; this.x = x;}\n"
1316 "function f() { return new bar(3); }\n" 1279 "function f() { return new bar(3); }\n"
(...skipping 13 matching lines...) Expand all
1330 LoadGolden("CallNew.golden"))); 1293 LoadGolden("CallNew.golden")));
1331 } 1294 }
1332 1295
1333 TEST(ContextVariables) { 1296 TEST(ContextVariables) {
1334 // The wide check below relies on MIN_CONTEXT_SLOTS + 3 + 249 == 256, if this 1297 // The wide check below relies on MIN_CONTEXT_SLOTS + 3 + 249 == 256, if this
1335 // ever changes, the REPEAT_XXX should be changed to output the correct number 1298 // ever changes, the REPEAT_XXX should be changed to output the correct number
1336 // of unique variables to trigger the wide slot load / store. 1299 // of unique variables to trigger the wide slot load / store.
1337 STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS + 3 + 249 == 256); 1300 STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS + 3 + 249 == 256);
1338 1301
1339 InitializedIgnitionHandleScope scope; 1302 InitializedIgnitionHandleScope scope;
1340 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1303 BytecodeExpectationsPrinter printer(CcTest::isolate());
1341 ConstantPoolType::kMixed);
1342 const char* snippets[] = { 1304 const char* snippets[] = {
1343 "var a; return function() { a = 1; };\n", 1305 "var a; return function() { a = 1; };\n",
1344 1306
1345 "var a = 1; return function() { a = 2; };\n", 1307 "var a = 1; return function() { a = 2; };\n",
1346 1308
1347 "var a = 1; var b = 2; return function() { a = 2; b = 3 };\n", 1309 "var a = 1; var b = 2; return function() { a = 2; b = 3 };\n",
1348 1310
1349 "var a; (function() { a = 2; })(); return a;\n", 1311 "var a; (function() { a = 2; })(); return a;\n",
1350 1312
1351 "'use strict';\n" 1313 "'use strict';\n"
1352 "let a = 1;\n" 1314 "let a = 1;\n"
1353 "{ let b = 2; return function() { a + b; }; }\n", 1315 "{ let b = 2; return function() { a + b; }; }\n",
1354 1316
1355 "'use strict';\n" 1317 "'use strict';\n"
1356 REPEAT_249_UNIQUE_VARS() 1318 REPEAT_249_UNIQUE_VARS()
1357 "eval();\n" 1319 "eval();\n"
1358 "var b = 100;\n" 1320 "var b = 100;\n"
1359 "return b\n", 1321 "return b\n",
1360 }; 1322 };
1361 1323
1362 CHECK(CompareTexts(BuildActual(printer, snippets), 1324 CHECK(CompareTexts(BuildActual(printer, snippets),
1363 LoadGolden("ContextVariables.golden"))); 1325 LoadGolden("ContextVariables.golden")));
1364 } 1326 }
1365 1327
1366 TEST(ContextParameters) { 1328 TEST(ContextParameters) {
1367 InitializedIgnitionHandleScope scope; 1329 InitializedIgnitionHandleScope scope;
1368 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1330 BytecodeExpectationsPrinter printer(CcTest::isolate());
1369 ConstantPoolType::kMixed);
1370 printer.set_wrap(false); 1331 printer.set_wrap(false);
1371 printer.set_test_function_name("f"); 1332 printer.set_test_function_name("f");
1372 1333
1373 const char* snippets[] = { 1334 const char* snippets[] = {
1374 "function f(arg1) { return function() { arg1 = 2; }; }", 1335 "function f(arg1) { return function() { arg1 = 2; }; }",
1375 1336
1376 "function f(arg1) { var a = function() { arg1 = 2; }; return arg1; }", 1337 "function f(arg1) { var a = function() { arg1 = 2; }; return arg1; }",
1377 1338
1378 "function f(a1, a2, a3, a4) { return function() { a1 = a3; }; }", 1339 "function f(a1, a2, a3, a4) { return function() { a1 = a3; }; }",
1379 1340
1380 "function f() { var self = this; return function() { self = 2; }; }", 1341 "function f() { var self = this; return function() { self = 2; }; }",
1381 }; 1342 };
1382 1343
1383 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"), 1344 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"),
1384 LoadGolden("ContextParameters.golden"))); 1345 LoadGolden("ContextParameters.golden")));
1385 } 1346 }
1386 1347
1387 TEST(OuterContextVariables) { 1348 TEST(OuterContextVariables) {
1388 InitializedIgnitionHandleScope scope; 1349 InitializedIgnitionHandleScope scope;
1389 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1350 BytecodeExpectationsPrinter printer(CcTest::isolate());
1390 ConstantPoolType::kMixed);
1391 printer.set_wrap(false); 1351 printer.set_wrap(false);
1392 printer.set_test_function_name("f"); 1352 printer.set_test_function_name("f");
1393 1353
1394 const char* snippets[] = { 1354 const char* snippets[] = {
1395 "function Outer() {\n" 1355 "function Outer() {\n"
1396 " var outerVar = 1;\n" 1356 " var outerVar = 1;\n"
1397 " function Inner(innerArg) {\n" 1357 " function Inner(innerArg) {\n"
1398 " this.innerFunc = function() { return outerVar * innerArg; }\n" 1358 " this.innerFunc = function() { return outerVar * innerArg; }\n"
1399 " }\n" 1359 " }\n"
1400 " this.getInnerFunc = function() { return new Inner(1).innerFunc; }\n" 1360 " this.getInnerFunc = function() { return new Inner(1).innerFunc; }\n"
1401 "}\n" 1361 "}\n"
1402 "var f = new Outer().getInnerFunc();", 1362 "var f = new Outer().getInnerFunc();",
1403 1363
1404 "function Outer() {\n" 1364 "function Outer() {\n"
1405 " var outerVar = 1;\n" 1365 " var outerVar = 1;\n"
1406 " function Inner(innerArg) {\n" 1366 " function Inner(innerArg) {\n"
1407 " this.innerFunc = function() { outerVar = innerArg; }\n" 1367 " this.innerFunc = function() { outerVar = innerArg; }\n"
1408 " }\n" 1368 " }\n"
1409 " this.getInnerFunc = function() { return new Inner(1).innerFunc; }\n" 1369 " this.getInnerFunc = function() { return new Inner(1).innerFunc; }\n"
1410 "}\n" 1370 "}\n"
1411 "var f = new Outer().getInnerFunc();", 1371 "var f = new Outer().getInnerFunc();",
1412 }; 1372 };
1413 1373
1414 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"), 1374 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"),
1415 LoadGolden("OuterContextVariables.golden"))); 1375 LoadGolden("OuterContextVariables.golden")));
1416 } 1376 }
1417 1377
1418 TEST(CountOperators) { 1378 TEST(CountOperators) {
1419 InitializedIgnitionHandleScope scope; 1379 InitializedIgnitionHandleScope scope;
1420 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1380 BytecodeExpectationsPrinter printer(CcTest::isolate());
1421 ConstantPoolType::kMixed);
1422 const char* snippets[] = { 1381 const char* snippets[] = {
1423 "var a = 1; return ++a;\n", 1382 "var a = 1; return ++a;\n",
1424 1383
1425 "var a = 1; return a++;\n", 1384 "var a = 1; return a++;\n",
1426 1385
1427 "var a = 1; return --a;\n", 1386 "var a = 1; return --a;\n",
1428 1387
1429 "var a = 1; return a--;\n", 1388 "var a = 1; return a--;\n",
1430 1389
1431 "var a = { val: 1 }; return a.val++;\n", 1390 "var a = { val: 1 }; return a.val++;\n",
(...skipping 10 matching lines...) Expand all
1442 1401
1443 "var idx = 1; var a = [1, 2]; return a[idx++] = 2;\n", 1402 "var idx = 1; var a = [1, 2]; return a[idx++] = 2;\n",
1444 }; 1403 };
1445 1404
1446 CHECK(CompareTexts(BuildActual(printer, snippets), 1405 CHECK(CompareTexts(BuildActual(printer, snippets),
1447 LoadGolden("CountOperators.golden"))); 1406 LoadGolden("CountOperators.golden")));
1448 } 1407 }
1449 1408
1450 TEST(GlobalCountOperators) { 1409 TEST(GlobalCountOperators) {
1451 InitializedIgnitionHandleScope scope; 1410 InitializedIgnitionHandleScope scope;
1452 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1411 BytecodeExpectationsPrinter printer(CcTest::isolate());
1453 ConstantPoolType::kString);
1454 printer.set_wrap(false); 1412 printer.set_wrap(false);
1455 printer.set_test_function_name("f"); 1413 printer.set_test_function_name("f");
1456 1414
1457 const char* snippets[] = { 1415 const char* snippets[] = {
1458 "var global = 1;\n" 1416 "var global = 1;\n"
1459 "function f() { return ++global; }\n" 1417 "function f() { return ++global; }\n"
1460 "f();\n", 1418 "f();\n",
1461 1419
1462 "var global = 1;\n" 1420 "var global = 1;\n"
1463 "function f() { return global--; }\n" 1421 "function f() { return global--; }\n"
1464 "f();\n", 1422 "f();\n",
1465 1423
1466 "unallocated = 1;\n" 1424 "unallocated = 1;\n"
1467 "function f() { 'use strict'; return --unallocated; }\n" 1425 "function f() { 'use strict'; return --unallocated; }\n"
1468 "f();\n", 1426 "f();\n",
1469 1427
1470 "unallocated = 1;\n" 1428 "unallocated = 1;\n"
1471 "function f() { return unallocated++; }\n" 1429 "function f() { return unallocated++; }\n"
1472 "f();\n", 1430 "f();\n",
1473 }; 1431 };
1474 1432
1475 CHECK(CompareTexts(BuildActual(printer, snippets), 1433 CHECK(CompareTexts(BuildActual(printer, snippets),
1476 LoadGolden("GlobalCountOperators.golden"))); 1434 LoadGolden("GlobalCountOperators.golden")));
1477 } 1435 }
1478 1436
1479 TEST(CompoundExpressions) { 1437 TEST(CompoundExpressions) {
1480 InitializedIgnitionHandleScope scope; 1438 InitializedIgnitionHandleScope scope;
1481 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1439 BytecodeExpectationsPrinter printer(CcTest::isolate());
1482 ConstantPoolType::kMixed);
1483 const char* snippets[] = { 1440 const char* snippets[] = {
1484 "var a = 1; a += 2;\n", 1441 "var a = 1; a += 2;\n",
1485 1442
1486 "var a = 1; a /= 2;\n", 1443 "var a = 1; a /= 2;\n",
1487 1444
1488 "var a = { val: 2 }; a.name *= 2;\n", 1445 "var a = { val: 2 }; a.name *= 2;\n",
1489 1446
1490 "var a = { 1: 2 }; a[1] ^= 2;\n", 1447 "var a = { 1: 2 }; a[1] ^= 2;\n",
1491 1448
1492 "var a = 1; (function f() { return a; }); a |= 24;\n", 1449 "var a = 1; (function f() { return a; }); a |= 24;\n",
1493 }; 1450 };
1494 1451
1495 CHECK(CompareTexts(BuildActual(printer, snippets), 1452 CHECK(CompareTexts(BuildActual(printer, snippets),
1496 LoadGolden("CompoundExpressions.golden"))); 1453 LoadGolden("CompoundExpressions.golden")));
1497 } 1454 }
1498 1455
1499 TEST(GlobalCompoundExpressions) { 1456 TEST(GlobalCompoundExpressions) {
1500 InitializedIgnitionHandleScope scope; 1457 InitializedIgnitionHandleScope scope;
1501 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1458 BytecodeExpectationsPrinter printer(CcTest::isolate());
1502 ConstantPoolType::kString);
1503 printer.set_wrap(false); 1459 printer.set_wrap(false);
1504 printer.set_test_function_name("f"); 1460 printer.set_test_function_name("f");
1505 1461
1506 const char* snippets[] = { 1462 const char* snippets[] = {
1507 "var global = 1;\n" 1463 "var global = 1;\n"
1508 "function f() { return global &= 1; }\n" 1464 "function f() { return global &= 1; }\n"
1509 "f();\n", 1465 "f();\n",
1510 1466
1511 "unallocated = 1;\n" 1467 "unallocated = 1;\n"
1512 "function f() { return unallocated += 1; }\n" 1468 "function f() { return unallocated += 1; }\n"
1513 "f();\n", 1469 "f();\n",
1514 }; 1470 };
1515 1471
1516 CHECK(CompareTexts(BuildActual(printer, snippets), 1472 CHECK(CompareTexts(BuildActual(printer, snippets),
1517 LoadGolden("GlobalCompoundExpressions.golden"))); 1473 LoadGolden("GlobalCompoundExpressions.golden")));
1518 } 1474 }
1519 1475
1520 TEST(CreateArguments) { 1476 TEST(CreateArguments) {
1521 InitializedIgnitionHandleScope scope; 1477 InitializedIgnitionHandleScope scope;
1522 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1478 BytecodeExpectationsPrinter printer(CcTest::isolate());
1523 ConstantPoolType::kString);
1524 printer.set_wrap(false); 1479 printer.set_wrap(false);
1525 printer.set_test_function_name("f"); 1480 printer.set_test_function_name("f");
1526 1481
1527 const char* snippets[] = { 1482 const char* snippets[] = {
1528 "function f() { return arguments; }", 1483 "function f() { return arguments; }",
1529 1484
1530 "function f() { return arguments[0]; }", 1485 "function f() { return arguments[0]; }",
1531 1486
1532 "function f() { 'use strict'; return arguments; }", 1487 "function f() { 'use strict'; return arguments; }",
1533 1488
1534 "function f(a) { return arguments[0]; }", 1489 "function f(a) { return arguments[0]; }",
1535 1490
1536 "function f(a, b, c) { return arguments; }", 1491 "function f(a, b, c) { return arguments; }",
1537 1492
1538 "function f(a, b, c) { 'use strict'; return arguments; }", 1493 "function f(a, b, c) { 'use strict'; return arguments; }",
1539 }; 1494 };
1540 1495
1541 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"), 1496 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"),
1542 LoadGolden("CreateArguments.golden"))); 1497 LoadGolden("CreateArguments.golden")));
1543 } 1498 }
1544 1499
1545 TEST(CreateRestParameter) { 1500 TEST(CreateRestParameter) {
1546 InitializedIgnitionHandleScope scope; 1501 InitializedIgnitionHandleScope scope;
1547 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1502 BytecodeExpectationsPrinter printer(CcTest::isolate());
1548 ConstantPoolType::kNumber);
1549 printer.set_wrap(false); 1503 printer.set_wrap(false);
1550 printer.set_test_function_name("f"); 1504 printer.set_test_function_name("f");
1551 1505
1552 const char* snippets[] = { 1506 const char* snippets[] = {
1553 "function f(...restArgs) { return restArgs; }", 1507 "function f(...restArgs) { return restArgs; }",
1554 1508
1555 "function f(a, ...restArgs) { return restArgs; }", 1509 "function f(a, ...restArgs) { return restArgs; }",
1556 1510
1557 "function f(a, ...restArgs) { return restArgs[0]; }", 1511 "function f(a, ...restArgs) { return restArgs[0]; }",
1558 1512
1559 "function f(a, ...restArgs) { return restArgs[0] + arguments[0]; }", 1513 "function f(a, ...restArgs) { return restArgs[0] + arguments[0]; }",
1560 }; 1514 };
1561 1515
1562 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"), 1516 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"),
1563 LoadGolden("CreateRestParameter.golden"))); 1517 LoadGolden("CreateRestParameter.golden")));
1564 } 1518 }
1565 1519
1566 TEST(ForIn) { 1520 TEST(ForIn) {
1567 InitializedIgnitionHandleScope scope; 1521 InitializedIgnitionHandleScope scope;
1568 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1522 BytecodeExpectationsPrinter printer(CcTest::isolate());
1569 ConstantPoolType::kMixed);
1570 const char* snippets[] = { 1523 const char* snippets[] = {
1571 "for (var p in null) {}\n", 1524 "for (var p in null) {}\n",
1572 1525
1573 "for (var p in undefined) {}\n", 1526 "for (var p in undefined) {}\n",
1574 1527
1575 "for (var p in undefined) {}\n", 1528 "for (var p in undefined) {}\n",
1576 1529
1577 "var x = 'potatoes';\n" 1530 "var x = 'potatoes';\n"
1578 "for (var p in x) { return p; }\n", 1531 "for (var p in x) { return p; }\n",
1579 1532
1580 "var x = 0;\n" 1533 "var x = 0;\n"
1581 "for (var p in [1,2,3]) { x += p; }\n", 1534 "for (var p in [1,2,3]) { x += p; }\n",
1582 1535
1583 "var x = { 'a': 1, 'b': 2 };\n" 1536 "var x = { 'a': 1, 'b': 2 };\n"
1584 "for (x['a'] in [10, 20, 30]) {\n" 1537 "for (x['a'] in [10, 20, 30]) {\n"
1585 " if (x['a'] == 10) continue;\n" 1538 " if (x['a'] == 10) continue;\n"
1586 " if (x['a'] == 20) break;\n" 1539 " if (x['a'] == 20) break;\n"
1587 "}\n", 1540 "}\n",
1588 1541
1589 "var x = [ 10, 11, 12 ] ;\n" 1542 "var x = [ 10, 11, 12 ] ;\n"
1590 "for (x[0] in [1,2,3]) { return x[3]; }\n", 1543 "for (x[0] in [1,2,3]) { return x[3]; }\n",
1591 }; 1544 };
1592 1545
1593 CHECK( 1546 CHECK(
1594 CompareTexts(BuildActual(printer, snippets), LoadGolden("ForIn.golden"))); 1547 CompareTexts(BuildActual(printer, snippets), LoadGolden("ForIn.golden")));
1595 } 1548 }
1596 1549
1597 TEST(ForOf) { 1550 TEST(ForOf) {
1598 InitializedIgnitionHandleScope scope; 1551 InitializedIgnitionHandleScope scope;
1599 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1552 BytecodeExpectationsPrinter printer(CcTest::isolate());
1600 ConstantPoolType::kMixed);
1601 const char* snippets[] = { 1553 const char* snippets[] = {
1602 "for (var p of [0, 1, 2]) {}\n", 1554 "for (var p of [0, 1, 2]) {}\n",
1603 1555
1604 "var x = 'potatoes';\n" 1556 "var x = 'potatoes';\n"
1605 "for (var p of x) { return p; }\n", 1557 "for (var p of x) { return p; }\n",
1606 1558
1607 "for (var x of [10, 20, 30]) {\n" 1559 "for (var x of [10, 20, 30]) {\n"
1608 " if (x == 10) continue;\n" 1560 " if (x == 10) continue;\n"
1609 " if (x == 20) break;\n" 1561 " if (x == 20) break;\n"
1610 "}\n", 1562 "}\n",
1611 1563
1612 "var x = { 'a': 1, 'b': 2 };\n" 1564 "var x = { 'a': 1, 'b': 2 };\n"
1613 "for (x['a'] of [1,2,3]) { return x['a']; }\n", 1565 "for (x['a'] of [1,2,3]) { return x['a']; }\n",
1614 }; 1566 };
1615 1567
1616 CHECK( 1568 CHECK(
1617 CompareTexts(BuildActual(printer, snippets), LoadGolden("ForOf.golden"))); 1569 CompareTexts(BuildActual(printer, snippets), LoadGolden("ForOf.golden")));
1618 } 1570 }
1619 1571
1620 TEST(Conditional) { 1572 TEST(Conditional) {
1621 InitializedIgnitionHandleScope scope; 1573 InitializedIgnitionHandleScope scope;
1622 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1574 BytecodeExpectationsPrinter printer(CcTest::isolate());
1623 ConstantPoolType::kNumber);
1624 const char* snippets[] = { 1575 const char* snippets[] = {
1625 "return 1 ? 2 : 3;\n", 1576 "return 1 ? 2 : 3;\n",
1626 1577
1627 "return 1 ? 2 ? 3 : 4 : 5;\n", 1578 "return 1 ? 2 ? 3 : 4 : 5;\n",
1628 1579
1629 "return 0 < 1 ? 2 : 3;\n", 1580 "return 0 < 1 ? 2 : 3;\n",
1630 1581
1631 "var x = 0;\n" 1582 "var x = 0;\n"
1632 "return x ? 2 : 3;\n", 1583 "return x ? 2 : 3;\n",
1633 }; 1584 };
1634 1585
1635 CHECK(CompareTexts(BuildActual(printer, snippets), 1586 CHECK(CompareTexts(BuildActual(printer, snippets),
1636 LoadGolden("Conditional.golden"))); 1587 LoadGolden("Conditional.golden")));
1637 } 1588 }
1638 1589
1639 TEST(Switch) { 1590 TEST(Switch) {
1640 InitializedIgnitionHandleScope scope; 1591 InitializedIgnitionHandleScope scope;
1641 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1592 BytecodeExpectationsPrinter printer(CcTest::isolate());
1642 ConstantPoolType::kNumber);
1643 const char* snippets[] = { 1593 const char* snippets[] = {
1644 "var a = 1;\n" 1594 "var a = 1;\n"
1645 "switch(a) {\n" 1595 "switch(a) {\n"
1646 " case 1: return 2;\n" 1596 " case 1: return 2;\n"
1647 " case 2: return 3;\n" 1597 " case 2: return 3;\n"
1648 "}\n", 1598 "}\n",
1649 1599
1650 "var a = 1;\n" 1600 "var a = 1;\n"
1651 "switch(a) {\n" 1601 "switch(a) {\n"
1652 " case 1: a = 2; break;\n" 1602 " case 1: a = 2; break;\n"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1699 " case 2: a = 3;\n" 1649 " case 2: a = 3;\n"
1700 "}\n", 1650 "}\n",
1701 }; 1651 };
1702 1652
1703 CHECK(CompareTexts(BuildActual(printer, snippets), 1653 CHECK(CompareTexts(BuildActual(printer, snippets),
1704 LoadGolden("Switch.golden"))); 1654 LoadGolden("Switch.golden")));
1705 } 1655 }
1706 1656
1707 TEST(BasicBlockToBoolean) { 1657 TEST(BasicBlockToBoolean) {
1708 InitializedIgnitionHandleScope scope; 1658 InitializedIgnitionHandleScope scope;
1709 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1659 BytecodeExpectationsPrinter printer(CcTest::isolate());
1710 ConstantPoolType::kNumber);
1711 const char* snippets[] = { 1660 const char* snippets[] = {
1712 "var a = 1; if (a || a < 0) { return 1; }\n", 1661 "var a = 1; if (a || a < 0) { return 1; }\n",
1713 1662
1714 "var a = 1; if (a && a < 0) { return 1; }\n", 1663 "var a = 1; if (a && a < 0) { return 1; }\n",
1715 1664
1716 "var a = 1; a = (a || a < 0) ? 2 : 3;\n", 1665 "var a = 1; a = (a || a < 0) ? 2 : 3;\n",
1717 }; 1666 };
1718 1667
1719 CHECK(CompareTexts(BuildActual(printer, snippets), 1668 CHECK(CompareTexts(BuildActual(printer, snippets),
1720 LoadGolden("BasicBlockToBoolean.golden"))); 1669 LoadGolden("BasicBlockToBoolean.golden")));
1721 } 1670 }
1722 1671
1723 TEST(DeadCodeRemoval) { 1672 TEST(DeadCodeRemoval) {
1724 InitializedIgnitionHandleScope scope; 1673 InitializedIgnitionHandleScope scope;
1725 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1674 BytecodeExpectationsPrinter printer(CcTest::isolate());
1726 ConstantPoolType::kNumber);
1727 const char* snippets[] = { 1675 const char* snippets[] = {
1728 "return; var a = 1; a();\n", 1676 "return; var a = 1; a();\n",
1729 1677
1730 "if (false) { return; }; var a = 1;\n", 1678 "if (false) { return; }; var a = 1;\n",
1731 1679
1732 "if (true) { return 1; } else { return 2; };\n", 1680 "if (true) { return 1; } else { return 2; };\n",
1733 1681
1734 "var a = 1; if (a) { return 1; }; return 2;\n", 1682 "var a = 1; if (a) { return 1; }; return 2;\n",
1735 }; 1683 };
1736 1684
1737 CHECK(CompareTexts(BuildActual(printer, snippets), 1685 CHECK(CompareTexts(BuildActual(printer, snippets),
1738 LoadGolden("DeadCodeRemoval.golden"))); 1686 LoadGolden("DeadCodeRemoval.golden")));
1739 } 1687 }
1740 1688
1741 TEST(ThisFunction) { 1689 TEST(ThisFunction) {
1742 InitializedIgnitionHandleScope scope; 1690 InitializedIgnitionHandleScope scope;
1743 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1691 BytecodeExpectationsPrinter printer(CcTest::isolate());
1744 ConstantPoolType::kNumber);
1745 printer.set_wrap(false); 1692 printer.set_wrap(false);
1746 printer.set_test_function_name("f"); 1693 printer.set_test_function_name("f");
1747 1694
1748 const char* snippets[] = { 1695 const char* snippets[] = {
1749 "var f;\n" 1696 "var f;\n"
1750 "f = function f() {};", 1697 "f = function f() {};",
1751 1698
1752 "var f;\n" 1699 "var f;\n"
1753 "f = function f() { return f; };", 1700 "f = function f() { return f; };",
1754 }; 1701 };
1755 1702
1756 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"), 1703 CHECK(CompareTexts(BuildActual(printer, snippets, "", "\nf();"),
1757 LoadGolden("ThisFunction.golden"))); 1704 LoadGolden("ThisFunction.golden")));
1758 } 1705 }
1759 1706
1760 TEST(NewTarget) { 1707 TEST(NewTarget) {
1761 InitializedIgnitionHandleScope scope; 1708 InitializedIgnitionHandleScope scope;
1762 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1709 BytecodeExpectationsPrinter printer(CcTest::isolate());
1763 ConstantPoolType::kMixed);
1764 1710
1765 const char* snippets[] = { 1711 const char* snippets[] = {
1766 "return new.target;\n", 1712 "return new.target;\n",
1767 1713
1768 "new.target;\n", 1714 "new.target;\n",
1769 }; 1715 };
1770 1716
1771 CHECK(CompareTexts(BuildActual(printer, snippets), 1717 CHECK(CompareTexts(BuildActual(printer, snippets),
1772 LoadGolden("NewTarget.golden"))); 1718 LoadGolden("NewTarget.golden")));
1773 } 1719 }
1774 1720
1775 TEST(RemoveRedundantLdar) { 1721 TEST(RemoveRedundantLdar) {
1776 InitializedIgnitionHandleScope scope; 1722 InitializedIgnitionHandleScope scope;
1777 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1723 BytecodeExpectationsPrinter printer(CcTest::isolate());
1778 ConstantPoolType::kNumber);
1779 const char* snippets[] = { 1724 const char* snippets[] = {
1780 "var ld_a = 1;\n" // This test is to check Ldar does not 1725 "var ld_a = 1;\n" // This test is to check Ldar does not
1781 "while(true) {\n" // get removed if the preceding Star is 1726 "while(true) {\n" // get removed if the preceding Star is
1782 " ld_a = ld_a + ld_a;\n" // in a different basicblock. 1727 " ld_a = ld_a + ld_a;\n" // in a different basicblock.
1783 " if (ld_a > 10) break;\n" 1728 " if (ld_a > 10) break;\n"
1784 "}\n" 1729 "}\n"
1785 "return ld_a;\n", 1730 "return ld_a;\n",
1786 1731
1787 "var ld_a = 1;\n" 1732 "var ld_a = 1;\n"
1788 "do {\n" 1733 "do {\n"
1789 " ld_a = ld_a + ld_a;\n" 1734 " ld_a = ld_a + ld_a;\n"
1790 " if (ld_a > 10) continue;\n" 1735 " if (ld_a > 10) continue;\n"
1791 "} while(false);\n" 1736 "} while(false);\n"
1792 "return ld_a;\n", 1737 "return ld_a;\n",
1793 1738
1794 "var ld_a = 1;\n" 1739 "var ld_a = 1;\n"
1795 " ld_a = ld_a + ld_a;\n" 1740 " ld_a = ld_a + ld_a;\n"
1796 " return ld_a;\n", 1741 " return ld_a;\n",
1797 }; 1742 };
1798 1743
1799 CHECK(CompareTexts(BuildActual(printer, snippets), 1744 CHECK(CompareTexts(BuildActual(printer, snippets),
1800 LoadGolden("RemoveRedundantLdar.golden"))); 1745 LoadGolden("RemoveRedundantLdar.golden")));
1801 } 1746 }
1802 1747
1803 TEST(AssignmentsInBinaryExpression) { 1748 TEST(AssignmentsInBinaryExpression) {
1804 InitializedIgnitionHandleScope scope; 1749 InitializedIgnitionHandleScope scope;
1805 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1750 BytecodeExpectationsPrinter printer(CcTest::isolate());
1806 ConstantPoolType::kString);
1807 const char* snippets[] = { 1751 const char* snippets[] = {
1808 "var x = 0, y = 1;\n" 1752 "var x = 0, y = 1;\n"
1809 "return (x = 2, y = 3, x = 4, y = 5);\n", 1753 "return (x = 2, y = 3, x = 4, y = 5);\n",
1810 1754
1811 "var x = 55;\n" 1755 "var x = 55;\n"
1812 "var y = (x = 100);\n" 1756 "var y = (x = 100);\n"
1813 "return y;\n", 1757 "return y;\n",
1814 1758
1815 "var x = 55;\n" 1759 "var x = 55;\n"
1816 "x = x + (x = 100) + (x = 101);\n" 1760 "x = x + (x = 100) + (x = 101);\n"
(...skipping 19 matching lines...) Expand all
1836 "var x = 17;\n" 1780 "var x = 17;\n"
1837 "return 1 + x + (x++) + (++x);\n", 1781 "return 1 + x + (x++) + (++x);\n",
1838 }; 1782 };
1839 1783
1840 CHECK(CompareTexts(BuildActual(printer, snippets), 1784 CHECK(CompareTexts(BuildActual(printer, snippets),
1841 LoadGolden("AssignmentsInBinaryExpression.golden"))); 1785 LoadGolden("AssignmentsInBinaryExpression.golden")));
1842 } 1786 }
1843 1787
1844 TEST(Eval) { 1788 TEST(Eval) {
1845 InitializedIgnitionHandleScope scope; 1789 InitializedIgnitionHandleScope scope;
1846 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1790 BytecodeExpectationsPrinter printer(CcTest::isolate());
1847 ConstantPoolType::kString);
1848 const char* snippets[] = { 1791 const char* snippets[] = {
1849 "return eval('1;');\n", 1792 "return eval('1;');\n",
1850 }; 1793 };
1851 1794
1852 CHECK( 1795 CHECK(
1853 CompareTexts(BuildActual(printer, snippets), LoadGolden("Eval.golden"))); 1796 CompareTexts(BuildActual(printer, snippets), LoadGolden("Eval.golden")));
1854 } 1797 }
1855 1798
1856 TEST(LookupSlot) { 1799 TEST(LookupSlot) {
1857 InitializedIgnitionHandleScope scope; 1800 InitializedIgnitionHandleScope scope;
1858 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1801 BytecodeExpectationsPrinter printer(CcTest::isolate());
1859 ConstantPoolType::kString);
1860 1802
1861 const char* snippets[] = { 1803 const char* snippets[] = {
1862 "eval('var x = 10;'); return x;\n", 1804 "eval('var x = 10;'); return x;\n",
1863 1805
1864 "eval('var x = 10;'); return typeof x;\n", 1806 "eval('var x = 10;'); return typeof x;\n",
1865 1807
1866 "x = 20; return eval('');\n", 1808 "x = 20; return eval('');\n",
1867 }; 1809 };
1868 1810
1869 CHECK(CompareTexts(BuildActual(printer, snippets), 1811 CHECK(CompareTexts(BuildActual(printer, snippets),
1870 LoadGolden("LookupSlot.golden"))); 1812 LoadGolden("LookupSlot.golden")));
1871 } 1813 }
1872 1814
1873 TEST(CallLookupSlot) { 1815 TEST(CallLookupSlot) {
1874 InitializedIgnitionHandleScope scope; 1816 InitializedIgnitionHandleScope scope;
1875 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1817 BytecodeExpectationsPrinter printer(CcTest::isolate());
1876 ConstantPoolType::kMixed);
1877 const char* snippets[] = { 1818 const char* snippets[] = {
1878 "g = function(){}; eval(''); return g();\n", 1819 "g = function(){}; eval(''); return g();\n",
1879 }; 1820 };
1880 1821
1881 CHECK(CompareTexts(BuildActual(printer, snippets), 1822 CHECK(CompareTexts(BuildActual(printer, snippets),
1882 LoadGolden("CallLookupSlot.golden"))); 1823 LoadGolden("CallLookupSlot.golden")));
1883 } 1824 }
1884 1825
1885 // TODO(mythria): tests for variable/function declaration in lookup slots. 1826 // TODO(mythria): tests for variable/function declaration in lookup slots.
1886 1827
1887 TEST(LookupSlotInEval) { 1828 TEST(LookupSlotInEval) {
1888 InitializedIgnitionHandleScope scope; 1829 InitializedIgnitionHandleScope scope;
1889 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1830 BytecodeExpectationsPrinter printer(CcTest::isolate());
1890 ConstantPoolType::kString);
1891 printer.set_wrap(false); 1831 printer.set_wrap(false);
1892 printer.set_test_function_name("f"); 1832 printer.set_test_function_name("f");
1893 1833
1894 const char* snippets[] = { 1834 const char* snippets[] = {
1895 "return x;", 1835 "return x;",
1896 1836
1897 "x = 10;", 1837 "x = 10;",
1898 1838
1899 "'use strict'; x = 10;", 1839 "'use strict'; x = 10;",
1900 1840
1901 "return typeof x;", 1841 "return typeof x;",
1902 }; 1842 };
1903 1843
1904 std::string actual = BuildActual(printer, snippets, 1844 std::string actual = BuildActual(printer, snippets,
1905 "var f;\n" 1845 "var f;\n"
1906 "var x = 1;\n" 1846 "var x = 1;\n"
1907 "function f1() {\n" 1847 "function f1() {\n"
1908 " eval(\"function t() { ", 1848 " eval(\"function t() { ",
1909 1849
1910 " }; f = t; f();\");\n" 1850 " }; f = t; f();\");\n"
1911 "}\n" 1851 "}\n"
1912 "f1();"); 1852 "f1();");
1913 1853
1914 CHECK(CompareTexts(actual, LoadGolden("LookupSlotInEval.golden"))); 1854 CHECK(CompareTexts(actual, LoadGolden("LookupSlotInEval.golden")));
1915 } 1855 }
1916 1856
1917 TEST(LookupSlotWideInEval) { 1857 TEST(LookupSlotWideInEval) {
1918 InitializedIgnitionHandleScope scope; 1858 InitializedIgnitionHandleScope scope;
1919 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1859 BytecodeExpectationsPrinter printer(CcTest::isolate());
1920 ConstantPoolType::kMixed);
1921 printer.set_wrap(false); 1860 printer.set_wrap(false);
1922 printer.set_test_function_name("f"); 1861 printer.set_test_function_name("f");
1923 1862
1924 const char* snippets[] = { 1863 const char* snippets[] = {
1925 REPEAT_256(" \"var y = 2.3;\" +\n") // 1864 REPEAT_256(" \"var y = 2.3;\" +\n") //
1926 " \"return x;\" +\n", 1865 " \"return x;\" +\n",
1927 1866
1928 REPEAT_256(" \"var y = 2.3;\" +\n") // 1867 REPEAT_256(" \"var y = 2.3;\" +\n") //
1929 " \"return typeof x;\" +\n", 1868 " \"return typeof x;\" +\n",
1930 1869
(...skipping 14 matching lines...) Expand all
1945 " \"};\" +\n" 1884 " \"};\" +\n"
1946 " \"f = t; f();\"\n);\n" 1885 " \"f = t; f();\"\n);\n"
1947 "}\n" 1886 "}\n"
1948 "f1();"); 1887 "f1();");
1949 1888
1950 CHECK(CompareTexts(actual, LoadGolden("LookupSlotWideInEval.golden"))); 1889 CHECK(CompareTexts(actual, LoadGolden("LookupSlotWideInEval.golden")));
1951 } 1890 }
1952 1891
1953 TEST(DeleteLookupSlotInEval) { 1892 TEST(DeleteLookupSlotInEval) {
1954 InitializedIgnitionHandleScope scope; 1893 InitializedIgnitionHandleScope scope;
1955 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1894 BytecodeExpectationsPrinter printer(CcTest::isolate());
1956 ConstantPoolType::kString);
1957 printer.set_wrap(false); 1895 printer.set_wrap(false);
1958 printer.set_test_function_name("f"); 1896 printer.set_test_function_name("f");
1959 1897
1960 const char* snippets[] = { 1898 const char* snippets[] = {
1961 "delete x;", 1899 "delete x;",
1962 1900
1963 "return delete y;", 1901 "return delete y;",
1964 1902
1965 "return delete z;", 1903 "return delete z;",
1966 }; 1904 };
(...skipping 15 matching lines...) Expand all
1982 1920
1983 TEST(WideRegisters) { 1921 TEST(WideRegisters) {
1984 // Prepare prologue that creates frame for lots of registers. 1922 // Prepare prologue that creates frame for lots of registers.
1985 std::ostringstream os; 1923 std::ostringstream os;
1986 for (size_t i = 0; i < 157; ++i) { 1924 for (size_t i = 0; i < 157; ++i) {
1987 os << "var x" << i << ";\n"; 1925 os << "var x" << i << ";\n";
1988 } 1926 }
1989 std::string prologue(os.str()); 1927 std::string prologue(os.str());
1990 1928
1991 InitializedIgnitionHandleScope scope; 1929 InitializedIgnitionHandleScope scope;
1992 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1930 BytecodeExpectationsPrinter printer(CcTest::isolate());
1993 ConstantPoolType::kNumber);
1994 const char* snippets[] = { 1931 const char* snippets[] = {
1995 "x0 = x127;\n" 1932 "x0 = x127;\n"
1996 "return x0;\n", 1933 "return x0;\n",
1997 1934
1998 "x127 = x126;\n" 1935 "x127 = x126;\n"
1999 "return x127;\n", 1936 "return x127;\n",
2000 1937
2001 "if (x2 > 3) { return x129; }\n" 1938 "if (x2 > 3) { return x129; }\n"
2002 "return x128;\n", 1939 "return x128;\n",
2003 1940
(...skipping 21 matching lines...) Expand all
2025 "%TheHole();\n" 1962 "%TheHole();\n"
2026 "return x1;\n", 1963 "return x1;\n",
2027 }; 1964 };
2028 1965
2029 CHECK(CompareTexts(BuildActual(printer, snippets, prologue.c_str()), 1966 CHECK(CompareTexts(BuildActual(printer, snippets, prologue.c_str()),
2030 LoadGolden("WideRegisters.golden"))); 1967 LoadGolden("WideRegisters.golden")));
2031 } 1968 }
2032 1969
2033 TEST(ConstVariable) { 1970 TEST(ConstVariable) {
2034 InitializedIgnitionHandleScope scope; 1971 InitializedIgnitionHandleScope scope;
2035 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1972 BytecodeExpectationsPrinter printer(CcTest::isolate());
2036 ConstantPoolType::kString);
2037 const char* snippets[] = { 1973 const char* snippets[] = {
2038 "const x = 10;\n", 1974 "const x = 10;\n",
2039 1975
2040 "const x = 10; return x;\n", 1976 "const x = 10; return x;\n",
2041 1977
2042 "const x = ( x = 20);\n", 1978 "const x = ( x = 20);\n",
2043 1979
2044 "const x = 10; x = 20;\n", 1980 "const x = 10; x = 20;\n",
2045 }; 1981 };
2046 1982
2047 CHECK(CompareTexts(BuildActual(printer, snippets), 1983 CHECK(CompareTexts(BuildActual(printer, snippets),
2048 LoadGolden("ConstVariable.golden"))); 1984 LoadGolden("ConstVariable.golden")));
2049 } 1985 }
2050 1986
2051 TEST(LetVariable) { 1987 TEST(LetVariable) {
2052 InitializedIgnitionHandleScope scope; 1988 InitializedIgnitionHandleScope scope;
2053 BytecodeExpectationsPrinter printer(CcTest::isolate(), 1989 BytecodeExpectationsPrinter printer(CcTest::isolate());
2054 ConstantPoolType::kString);
2055 const char* snippets[] = { 1990 const char* snippets[] = {
2056 "let x = 10;\n", 1991 "let x = 10;\n",
2057 1992
2058 "let x = 10; return x;\n", 1993 "let x = 10; return x;\n",
2059 1994
2060 "let x = (x = 20);\n", 1995 "let x = (x = 20);\n",
2061 1996
2062 "let x = 10; x = 20;\n", 1997 "let x = 10; x = 20;\n",
2063 }; 1998 };
2064 1999
2065 CHECK(CompareTexts(BuildActual(printer, snippets), 2000 CHECK(CompareTexts(BuildActual(printer, snippets),
2066 LoadGolden("LetVariable.golden"))); 2001 LoadGolden("LetVariable.golden")));
2067 } 2002 }
2068 2003
2069 TEST(ConstVariableContextSlot) { 2004 TEST(ConstVariableContextSlot) {
2070 // TODO(mythria): Add tests for initialization of this via super calls. 2005 // TODO(mythria): Add tests for initialization of this via super calls.
2071 // TODO(mythria): Add tests that walk the context chain. 2006 // TODO(mythria): Add tests that walk the context chain.
2072 InitializedIgnitionHandleScope scope; 2007 InitializedIgnitionHandleScope scope;
2073 BytecodeExpectationsPrinter printer(CcTest::isolate(), 2008 BytecodeExpectationsPrinter printer(CcTest::isolate());
2074 ConstantPoolType::kMixed);
2075 const char* snippets[] = { 2009 const char* snippets[] = {
2076 "const x = 10; function f1() {return x;}\n", 2010 "const x = 10; function f1() {return x;}\n",
2077 2011
2078 "const x = 10; function f1() {return x;} return x;\n", 2012 "const x = 10; function f1() {return x;} return x;\n",
2079 2013
2080 "const x = (x = 20); function f1() {return x;}\n", 2014 "const x = (x = 20); function f1() {return x;}\n",
2081 2015
2082 "const x = 10; x = 20; function f1() {return x;}\n", 2016 "const x = 10; x = 20; function f1() {return x;}\n",
2083 }; 2017 };
2084 2018
2085 CHECK(CompareTexts(BuildActual(printer, snippets), 2019 CHECK(CompareTexts(BuildActual(printer, snippets),
2086 LoadGolden("ConstVariableContextSlot.golden"))); 2020 LoadGolden("ConstVariableContextSlot.golden")));
2087 } 2021 }
2088 2022
2089 TEST(LetVariableContextSlot) { 2023 TEST(LetVariableContextSlot) {
2090 InitializedIgnitionHandleScope scope; 2024 InitializedIgnitionHandleScope scope;
2091 BytecodeExpectationsPrinter printer(CcTest::isolate(), 2025 BytecodeExpectationsPrinter printer(CcTest::isolate());
2092 ConstantPoolType::kMixed);
2093 const char* snippets[] = { 2026 const char* snippets[] = {
2094 "let x = 10; function f1() {return x;}\n", 2027 "let x = 10; function f1() {return x;}\n",
2095 2028
2096 "let x = 10; function f1() {return x;} return x;\n", 2029 "let x = 10; function f1() {return x;} return x;\n",
2097 2030
2098 "let x = (x = 20); function f1() {return x;}\n", 2031 "let x = (x = 20); function f1() {return x;}\n",
2099 2032
2100 "let x = 10; x = 20; function f1() {return x;}\n", 2033 "let x = 10; x = 20; function f1() {return x;}\n",
2101 }; 2034 };
2102 2035
2103 CHECK(CompareTexts(BuildActual(printer, snippets), 2036 CHECK(CompareTexts(BuildActual(printer, snippets),
2104 LoadGolden("LetVariableContextSlot.golden"))); 2037 LoadGolden("LetVariableContextSlot.golden")));
2105 } 2038 }
2106 2039
2107 TEST(DoExpression) { 2040 TEST(DoExpression) {
2108 bool old_flag = FLAG_harmony_do_expressions; 2041 bool old_flag = FLAG_harmony_do_expressions;
2109 FLAG_harmony_do_expressions = true; 2042 FLAG_harmony_do_expressions = true;
2110 2043
2111 InitializedIgnitionHandleScope scope; 2044 InitializedIgnitionHandleScope scope;
2112 BytecodeExpectationsPrinter printer(CcTest::isolate(), 2045 BytecodeExpectationsPrinter printer(CcTest::isolate());
2113 ConstantPoolType::kString);
2114 const char* snippets[] = { 2046 const char* snippets[] = {
2115 "var a = do { }; return a;\n", 2047 "var a = do { }; return a;\n",
2116 2048
2117 "var a = do { var x = 100; }; return a;\n", 2049 "var a = do { var x = 100; }; return a;\n",
2118 2050
2119 "while(true) { var a = 10; a = do { ++a; break; }; a = 20; }\n", 2051 "while(true) { var a = 10; a = do { ++a; break; }; a = 20; }\n",
2120 }; 2052 };
2121 2053
2122 CHECK(CompareTexts(BuildActual(printer, snippets), 2054 CHECK(CompareTexts(BuildActual(printer, snippets),
2123 LoadGolden("DoExpression.golden"))); 2055 LoadGolden("DoExpression.golden")));
2124 2056
2125 FLAG_harmony_do_expressions = old_flag; 2057 FLAG_harmony_do_expressions = old_flag;
2126 } 2058 }
2127 2059
2128 TEST(WithStatement) { 2060 TEST(WithStatement) {
2129 InitializedIgnitionHandleScope scope; 2061 InitializedIgnitionHandleScope scope;
2130 BytecodeExpectationsPrinter printer(CcTest::isolate(), 2062 BytecodeExpectationsPrinter printer(CcTest::isolate());
2131 ConstantPoolType::kMixed);
2132 const char* snippets[] = { 2063 const char* snippets[] = {
2133 "with ({x:42}) { return x; }\n", 2064 "with ({x:42}) { return x; }\n",
2134 }; 2065 };
2135 2066
2136 CHECK(CompareTexts(BuildActual(printer, snippets), 2067 CHECK(CompareTexts(BuildActual(printer, snippets),
2137 LoadGolden("WithStatement.golden"))); 2068 LoadGolden("WithStatement.golden")));
2138 } 2069 }
2139 2070
2140 TEST(DoDebugger) { 2071 TEST(DoDebugger) {
2141 InitializedIgnitionHandleScope scope; 2072 InitializedIgnitionHandleScope scope;
2142 BytecodeExpectationsPrinter printer(CcTest::isolate(), 2073 BytecodeExpectationsPrinter printer(CcTest::isolate());
2143 ConstantPoolType::kString);
2144 const char* snippets[] = { 2074 const char* snippets[] = {
2145 "debugger;\n", 2075 "debugger;\n",
2146 }; 2076 };
2147 2077
2148 CHECK(CompareTexts(BuildActual(printer, snippets), 2078 CHECK(CompareTexts(BuildActual(printer, snippets),
2149 LoadGolden("DoDebugger.golden"))); 2079 LoadGolden("DoDebugger.golden")));
2150 } 2080 }
2151 2081
2152 TEST(ClassDeclarations) { 2082 TEST(ClassDeclarations) {
2153 InitializedIgnitionHandleScope scope; 2083 InitializedIgnitionHandleScope scope;
2154 BytecodeExpectationsPrinter printer(CcTest::isolate(), 2084 BytecodeExpectationsPrinter printer(CcTest::isolate());
2155 ConstantPoolType::kMixed);
2156 const char* snippets[] = { 2085 const char* snippets[] = {
2157 "class Person {\n" 2086 "class Person {\n"
2158 " constructor(name) { this.name = name; }\n" 2087 " constructor(name) { this.name = name; }\n"
2159 " speak() { console.log(this.name + ' is speaking.'); }\n" 2088 " speak() { console.log(this.name + ' is speaking.'); }\n"
2160 "}\n", 2089 "}\n",
2161 2090
2162 "class person {\n" 2091 "class person {\n"
2163 " constructor(name) { this.name = name; }\n" 2092 " constructor(name) { this.name = name; }\n"
2164 " speak() { console.log(this.name + ' is speaking.'); }\n" 2093 " speak() { console.log(this.name + ' is speaking.'); }\n"
2165 "}\n", 2094 "}\n",
2166 2095
2167 "var n0 = 'a';\n" 2096 "var n0 = 'a';\n"
2168 "var n1 = 'b';\n" 2097 "var n1 = 'b';\n"
2169 "class N {\n" 2098 "class N {\n"
2170 " [n0]() { return n0; }\n" 2099 " [n0]() { return n0; }\n"
2171 " static [n1]() { return n1; }\n" 2100 " static [n1]() { return n1; }\n"
2172 "}\n", 2101 "}\n",
2173 2102
2174 "var count = 0;\n" 2103 "var count = 0;\n"
2175 "class C { constructor() { count++; }}\n" 2104 "class C { constructor() { count++; }}\n"
2176 "return new C();\n", 2105 "return new C();\n",
2177 }; 2106 };
2178 2107
2179 CHECK(CompareTexts(BuildActual(printer, snippets), 2108 CHECK(CompareTexts(BuildActual(printer, snippets),
2180 LoadGolden("ClassDeclarations.golden"))); 2109 LoadGolden("ClassDeclarations.golden")));
2181 } 2110 }
2182 2111
2183 TEST(ClassAndSuperClass) { 2112 TEST(ClassAndSuperClass) {
2184 InitializedIgnitionHandleScope scope; 2113 InitializedIgnitionHandleScope scope;
2185 BytecodeExpectationsPrinter printer(CcTest::isolate(), 2114 BytecodeExpectationsPrinter printer(CcTest::isolate());
2186 ConstantPoolType::kMixed);
2187 printer.set_wrap(false); 2115 printer.set_wrap(false);
2188 printer.set_test_function_name("test"); 2116 printer.set_test_function_name("test");
2189 const char* snippets[] = { 2117 const char* snippets[] = {
2190 "var test;\n" 2118 "var test;\n"
2191 "(function() {\n" 2119 "(function() {\n"
2192 " class A {\n" 2120 " class A {\n"
2193 " method() { return 2; }\n" 2121 " method() { return 2; }\n"
2194 " }\n" 2122 " }\n"
2195 " class B extends A {\n" 2123 " class B extends A {\n"
2196 " method() { return super.method() + 1; }\n" 2124 " method() { return super.method() + 1; }\n"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2234 " test = new B().constructor;\n" 2162 " test = new B().constructor;\n"
2235 "})();\n", 2163 "})();\n",
2236 }; 2164 };
2237 2165
2238 CHECK(CompareTexts(BuildActual(printer, snippets), 2166 CHECK(CompareTexts(BuildActual(printer, snippets),
2239 LoadGolden("ClassAndSuperClass.golden"))); 2167 LoadGolden("ClassAndSuperClass.golden")));
2240 } 2168 }
2241 2169
2242 TEST(Generators) { 2170 TEST(Generators) {
2243 InitializedIgnitionHandleScope scope; 2171 InitializedIgnitionHandleScope scope;
2244 BytecodeExpectationsPrinter printer(CcTest::isolate(), 2172 BytecodeExpectationsPrinter printer(CcTest::isolate());
2245 ConstantPoolType::kMixed);
2246 printer.set_wrap(false); 2173 printer.set_wrap(false);
2247 printer.set_test_function_name("f"); 2174 printer.set_test_function_name("f");
2248 2175
2249 const char* snippets[] = { 2176 const char* snippets[] = {
2250 "function* f() { }\n" 2177 "function* f() { }\n"
2251 "f();\n", 2178 "f();\n",
2252 2179
2253 "function* f() { yield 42 }\n" 2180 "function* f() { yield 42 }\n"
2254 "f();\n", 2181 "f();\n",
2255 2182
2256 "function* f() { for (let x of [42]) yield x }\n" 2183 "function* f() { for (let x of [42]) yield x }\n"
2257 "f();\n", 2184 "f();\n",
2258 }; 2185 };
2259 2186
2260 CHECK(CompareTexts(BuildActual(printer, snippets), 2187 CHECK(CompareTexts(BuildActual(printer, snippets),
2261 LoadGolden("Generators.golden"))); 2188 LoadGolden("Generators.golden")));
2262 } 2189 }
2263 2190
2264 } // namespace interpreter 2191 } // namespace interpreter
2265 } // namespace internal 2192 } // namespace internal
2266 } // namespace v8 2193 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/interpreter/generate-bytecode-expectations.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698