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

Side by Side Diff: test/cctest/compiler/test-run-bytecode-graph-builder.cc

Issue 1459543003: [Interpreter] Add support for unary operators to bytecode graph builder. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 1 month 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
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 // TODO(jochen): Remove this after the setting is turned on globally. 5 // TODO(jochen): Remove this after the setting is turned on globally.
6 #define V8_IMMINENT_DEPRECATION_WARNINGS 6 #define V8_IMMINENT_DEPRECATION_WARNINGS
7 7
8 #include <utility> 8 #include <utility>
9 9
10 #include "src/compiler/pipeline.h" 10 #include "src/compiler/pipeline.h"
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 407
408 size_t num_snippets = sizeof(snippets) / sizeof(snippets[0]); 408 size_t num_snippets = sizeof(snippets) / sizeof(snippets[0]);
409 for (size_t i = 0; i < num_snippets; i++) { 409 for (size_t i = 0; i < num_snippets; i++) {
410 BytecodeGraphTester tester(isolate, zone, snippets[i].code_snippet); 410 BytecodeGraphTester tester(isolate, zone, snippets[i].code_snippet);
411 auto callable = tester.GetCallable<>(); 411 auto callable = tester.GetCallable<>();
412 Handle<Object> return_value = callable().ToHandleChecked(); 412 Handle<Object> return_value = callable().ToHandleChecked();
413 CHECK(return_value->SameValue(*snippets[i].return_value())); 413 CHECK(return_value->SameValue(*snippets[i].return_value()));
414 } 414 }
415 } 415 }
416 416
417
418 TEST(BytecodeGraphBuilderLogicalNot) {
419 HandleAndZoneScope scope;
420 Isolate* isolate = scope.main_isolate();
421 Zone* zone = scope.main_zone();
422 Factory* factory = isolate->factory();
423
424 ExpectedSnippet<1> snippets[] = {
425 {"return !p1;",
426 {factory->false_value(),
427 BytecodeGraphTester::NewObject("({val : 10})")}},
428 {"return !p1;", {factory->true_value(), factory->NewNumberFromInt(0)}},
429 {"return !p1;", {factory->true_value(), factory->undefined_value()}},
430 {"return !p1;", {factory->false_value(), factory->NewNumberFromInt(10)}},
431 {"return !p1;", {factory->false_value(), factory->true_value()}},
432 {"return !p1;",
433 {factory->false_value(), factory->NewStringFromStaticChars("abc")}},
434 };
435
436 size_t num_snippets = sizeof(snippets) / sizeof(snippets[0]);
437 for (size_t i = 0; i < num_snippets; i++) {
438 ScopedVector<char> script(1024);
439 SNPrintF(script, "function %s(p1) { %s }\n%s({});", kFunctionName,
440 snippets[i].code_snippet, kFunctionName);
441
442 BytecodeGraphTester tester(isolate, zone, script.start());
443 auto callable = tester.GetCallable<Handle<Object>>();
444 Handle<Object> return_value =
445 callable(snippets[i].parameter(0)).ToHandleChecked();
446 CHECK(return_value->SameValue(*snippets[i].return_value()));
447 }
448 }
449
450
451 TEST(BytecodeGraphBuilderTypeOf) {
452 HandleAndZoneScope scope;
453 Isolate* isolate = scope.main_isolate();
454 Zone* zone = scope.main_zone();
455 Factory* factory = isolate->factory();
456
457 ExpectedSnippet<1> snippets[] = {
458 {"return typeof p1;",
459 {factory->NewStringFromStaticChars("object"),
460 BytecodeGraphTester::NewObject("({val : 10})")}},
461 {"return typeof p1;",
462 {factory->NewStringFromStaticChars("undefined"),
463 factory->undefined_value()}},
464 {"return typeof p1;",
465 {factory->NewStringFromStaticChars("number"),
466 factory->NewNumberFromInt(10)}},
467 {"return typeof p1;",
468 {factory->NewStringFromStaticChars("boolean"), factory->true_value()}},
469 {"return typeof p1;",
470 {factory->NewStringFromStaticChars("string"),
471 factory->NewStringFromStaticChars("abc")}},
472 };
473
474 size_t num_snippets = sizeof(snippets) / sizeof(snippets[0]);
475 for (size_t i = 0; i < num_snippets; i++) {
476 ScopedVector<char> script(1024);
477 SNPrintF(script, "function %s(p1) { %s }\n%s({});", kFunctionName,
478 snippets[i].code_snippet, kFunctionName);
479
480 BytecodeGraphTester tester(isolate, zone, script.start());
481 auto callable = tester.GetCallable<Handle<Object>>();
482 Handle<Object> return_value =
483 callable(snippets[i].parameter(0)).ToHandleChecked();
484 CHECK(return_value->SameValue(*snippets[i].return_value()));
485 }
486 }
487
488
489 TEST(BytecodeGraphBuilderDelete) {
490 HandleAndZoneScope scope;
491 Isolate* isolate = scope.main_isolate();
492 Zone* zone = scope.main_zone();
493 Factory* factory = isolate->factory();
494
495 ExpectedSnippet<1> snippets[] = {
496 {"return delete p1.val;",
497 {factory->true_value(), BytecodeGraphTester::NewObject("({val : 10})")}},
498 {"delete p1.val; return p1.val;",
499 {factory->undefined_value(),
500 BytecodeGraphTester::NewObject("({val : 10})")}},
501 {"delete p1.name; return p1.val;",
502 {factory->NewNumberFromInt(10),
503 BytecodeGraphTester::NewObject("({val : 10, name:'abc'})")}},
504 {"'use strict'; return delete p1.val;",
505 {factory->true_value(), BytecodeGraphTester::NewObject("({val : 10})")}},
506 {"'use strict'; delete p1.val; return p1.val;",
507 {factory->undefined_value(),
508 BytecodeGraphTester::NewObject("({val : 10})")}},
509 {"'use strict'; delete p1.name; return p1.val;",
510 {factory->NewNumberFromInt(10),
511 BytecodeGraphTester::NewObject("({val : 10, name:'abc'})")}},
512 // TODO(mythria): Add tests for global and unallocated when we have
513 // support for LdaContextSlot
514 };
515
516 size_t num_snippets = sizeof(snippets) / sizeof(snippets[0]);
517 for (size_t i = 0; i < num_snippets; i++) {
518 ScopedVector<char> script(1024);
519 SNPrintF(script, "function %s(p1) { %s }\n%s({});", kFunctionName,
520 snippets[i].code_snippet, kFunctionName);
521
522 BytecodeGraphTester tester(isolate, zone, script.start());
523 auto callable = tester.GetCallable<Handle<Object>>();
524 Handle<Object> return_value =
525 callable(snippets[i].parameter(0)).ToHandleChecked();
526 CHECK(return_value->SameValue(*snippets[i].return_value()));
527 }
528 }
529
417 } // namespace compiler 530 } // namespace compiler
418 } // namespace internal 531 } // namespace internal
419 } // namespace v8 532 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/bytecode-graph-builder.cc ('k') | test/unittests/compiler/bytecode-graph-builder-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698