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

Side by Side Diff: test/cctest/test-asm-validator.cc

Issue 1490593002: Passing zone to type objects so printing macros work in arm debug mode. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years 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 | « no previous file | 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 // 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 "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/ast/ast.h" 10 #include "src/ast/ast.h"
11 #include "src/ast/ast-expression-visitor.h" 11 #include "src/ast/ast-expression-visitor.h"
12 #include "src/ast/scopes.h" 12 #include "src/ast/scopes.h"
13 #include "src/parsing/parser.h" 13 #include "src/parsing/parser.h"
14 #include "src/parsing/rewriter.h" 14 #include "src/parsing/rewriter.h"
15 #include "src/type-cache.h" 15 #include "src/type-cache.h"
16 #include "src/typing-asm.h" 16 #include "src/typing-asm.h"
17 #include "test/cctest/cctest.h" 17 #include "test/cctest/cctest.h"
18 #include "test/cctest/expression-type-collector.h" 18 #include "test/cctest/expression-type-collector.h"
19 #include "test/cctest/expression-type-collector-macros.h" 19 #include "test/cctest/expression-type-collector-macros.h"
20 20
21 // Macros for function types. 21 // Macros for function types.
22 #define FUNC_V_TYPE Bounds(Type::Function(Type::Undefined(), zone)) 22 #define FUNC_V_TYPE Bounds(Type::Function(Type::Undefined(zone), zone))
23 #define FUNC_I_TYPE Bounds(Type::Function(cache.kAsmSigned, zone)) 23 #define FUNC_I_TYPE Bounds(Type::Function(cache.kAsmSigned, zone))
24 #define FUNC_F_TYPE Bounds(Type::Function(cache.kAsmFloat, zone)) 24 #define FUNC_F_TYPE Bounds(Type::Function(cache.kAsmFloat, zone))
25 #define FUNC_D_TYPE Bounds(Type::Function(cache.kAsmDouble, zone)) 25 #define FUNC_D_TYPE Bounds(Type::Function(cache.kAsmDouble, zone))
26 #define FUNC_D2D_TYPE \ 26 #define FUNC_D2D_TYPE \
27 Bounds(Type::Function(cache.kAsmDouble, cache.kAsmDouble, zone)) 27 Bounds(Type::Function(cache.kAsmDouble, cache.kAsmDouble, zone))
28 #define FUNC_N2F_TYPE \ 28 #define FUNC_N2F_TYPE \
29 Bounds(Type::Function(cache.kAsmFloat, Type::Number(), zone)) 29 Bounds(Type::Function(cache.kAsmFloat, Type::Number(zone), zone))
30 #define FUNC_I2I_TYPE \ 30 #define FUNC_I2I_TYPE \
31 Bounds(Type::Function(cache.kAsmSigned, cache.kAsmInt, zone)) 31 Bounds(Type::Function(cache.kAsmSigned, cache.kAsmInt, zone))
32 #define FUNC_II2D_TYPE \ 32 #define FUNC_II2D_TYPE \
33 Bounds(Type::Function(cache.kAsmDouble, cache.kAsmInt, cache.kAsmInt, zone)) 33 Bounds(Type::Function(cache.kAsmDouble, cache.kAsmInt, cache.kAsmInt, zone))
34 #define FUNC_II2I_TYPE \ 34 #define FUNC_II2I_TYPE \
35 Bounds(Type::Function(cache.kAsmSigned, cache.kAsmInt, cache.kAsmInt, zone)) 35 Bounds(Type::Function(cache.kAsmSigned, cache.kAsmInt, cache.kAsmInt, zone))
36 #define FUNC_DD2D_TYPE \ 36 #define FUNC_DD2D_TYPE \
37 Bounds(Type::Function(cache.kAsmDouble, cache.kAsmDouble, cache.kAsmDouble, \ 37 Bounds(Type::Function(cache.kAsmDouble, cache.kAsmDouble, cache.kAsmDouble, \
38 zone)) 38 zone))
39 #define FUNC_N2N_TYPE \ 39 #define FUNC_N2N_TYPE \
40 Bounds(Type::Function(Type::Number(), Type::Number(), zone)) 40 Bounds(Type::Function(Type::Number(zone), Type::Number(zone), zone))
41 41
42 // Macros for array types. 42 // Macros for array types.
43 #define FLOAT64_ARRAY_TYPE Bounds(Type::Array(cache.kAsmDouble, zone)) 43 #define FLOAT64_ARRAY_TYPE Bounds(Type::Array(cache.kAsmDouble, zone))
44 #define FUNC_I2I_ARRAY_TYPE \ 44 #define FUNC_I2I_ARRAY_TYPE \
45 Bounds(Type::Array(Type::Function(cache.kAsmSigned, cache.kAsmInt, zone), \ 45 Bounds(Type::Array(Type::Function(cache.kAsmSigned, cache.kAsmInt, zone), \
46 zone)) 46 zone))
47 47
48 using namespace v8::internal; 48 using namespace v8::internal;
49 49
50 namespace { 50 namespace {
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum)); 258 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum));
259 } 259 }
260 CHECK_EXPR(Literal, Bounds(cache.kAsmDouble)); 260 CHECK_EXPR(Literal, Bounds(cache.kAsmDouble));
261 } 261 }
262 } 262 }
263 } 263 }
264 CHECK_EXPR(Literal, Bounds(cache.kAsmDouble)); 264 CHECK_EXPR(Literal, Bounds(cache.kAsmDouble));
265 } 265 }
266 } 266 }
267 // "use asm"; 267 // "use asm";
268 CHECK_EXPR(Literal, Bounds(Type::String())); 268 CHECK_EXPR(Literal, Bounds(Type::String(zone)));
269 // var exp = stdlib.Math.exp; 269 // var exp = stdlib.Math.exp;
270 CHECK_EXPR(Assignment, FUNC_D2D_TYPE) { 270 CHECK_EXPR(Assignment, FUNC_D2D_TYPE) {
271 CHECK_VAR(exp, FUNC_D2D_TYPE); 271 CHECK_VAR(exp, FUNC_D2D_TYPE);
272 CHECK_EXPR(Property, FUNC_D2D_TYPE) { 272 CHECK_EXPR(Property, FUNC_D2D_TYPE) {
273 CHECK_EXPR(Property, Bounds::Unbounded()) { 273 CHECK_EXPR(Property, Bounds::Unbounded()) {
274 CHECK_VAR(stdlib, Bounds::Unbounded()); 274 CHECK_VAR(stdlib, Bounds::Unbounded());
275 CHECK_EXPR(Literal, Bounds::Unbounded()); 275 CHECK_EXPR(Literal, Bounds::Unbounded());
276 } 276 }
277 CHECK_EXPR(Literal, Bounds::Unbounded()); 277 CHECK_EXPR(Literal, Bounds::Unbounded());
278 } 278 }
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 v8::V8::Initialize(); \ 456 v8::V8::Initialize(); \
457 HandleAndZoneScope handles; \ 457 HandleAndZoneScope handles; \
458 Zone* zone = handles.main_zone(); \ 458 Zone* zone = handles.main_zone(); \
459 ZoneVector<ExpressionTypeEntry> types(zone); \ 459 ZoneVector<ExpressionTypeEntry> types(zone); \
460 CHECK_EQ("", Validate(zone, test_function, &types)); \ 460 CHECK_EQ("", Validate(zone, test_function, &types)); \
461 TypeCache cache; \ 461 TypeCache cache; \
462 \ 462 \
463 CHECK_TYPES_BEGIN { \ 463 CHECK_TYPES_BEGIN { \
464 /* Module. */ \ 464 /* Module. */ \
465 CHECK_EXPR(FunctionLiteral, Bounds::Unbounded()) { 465 CHECK_EXPR(FunctionLiteral, Bounds::Unbounded()) {
466 #define CHECK_FUNC_TYPES_END_1() \ 466 #define CHECK_FUNC_TYPES_END_1() \
467 /* "use asm"; */ \ 467 /* "use asm"; */ \
468 CHECK_EXPR(Literal, Bounds(Type::String())); \ 468 CHECK_EXPR(Literal, Bounds(Type::String(zone))); \
469 /* stdlib shortcuts. */ \ 469 /* stdlib shortcuts. */ \
470 CheckStdlibShortcuts(zone, types, index, depth, cache); 470 CheckStdlibShortcuts(zone, types, index, depth, cache);
471 471
472 472
473 #define CHECK_FUNC_TYPES_END_2() \ 473 #define CHECK_FUNC_TYPES_END_2() \
474 /* return { foo: foo }; */ \ 474 /* return { foo: foo }; */ \
475 CHECK_EXPR(ObjectLiteral, Bounds::Unbounded()) { \ 475 CHECK_EXPR(ObjectLiteral, Bounds::Unbounded()) { \
476 CHECK_VAR(foo, FUNC_V_TYPE); \ 476 CHECK_VAR(foo, FUNC_V_TYPE); \
477 } \ 477 } \
478 } \ 478 } \
479 } \ 479 } \
(...skipping 23 matching lines...) Expand all
503 CHECK_FUNC_TYPES_END 503 CHECK_FUNC_TYPES_END
504 } 504 }
505 505
506 506
507 TEST(ReturnVoid) { 507 TEST(ReturnVoid) {
508 CHECK_FUNC_TYPES_BEGIN( 508 CHECK_FUNC_TYPES_BEGIN(
509 "function bar() { return; }\n" 509 "function bar() { return; }\n"
510 "function foo() { bar(); }") { 510 "function foo() { bar(); }") {
511 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE) { 511 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE) {
512 // return undefined; 512 // return undefined;
513 CHECK_EXPR(Literal, Bounds(Type::Undefined())); 513 CHECK_EXPR(Literal, Bounds(Type::Undefined(zone)));
514 } 514 }
515 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE) { 515 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE) {
516 CHECK_EXPR(Call, Bounds(Type::Undefined())) { 516 CHECK_EXPR(Call, Bounds(Type::Undefined(zone))) {
517 CHECK_VAR(bar, FUNC_V_TYPE); 517 CHECK_VAR(bar, FUNC_V_TYPE);
518 } 518 }
519 } 519 }
520 } 520 }
521 CHECK_FUNC_TYPES_END 521 CHECK_FUNC_TYPES_END
522 } 522 }
523 523
524 524
525 TEST(EmptyBody) { 525 TEST(EmptyBody) {
526 CHECK_FUNC_TYPES_BEGIN( 526 CHECK_FUNC_TYPES_BEGIN(
527 "function bar() { }\n" 527 "function bar() { }\n"
528 "function foo() { bar(); }") { 528 "function foo() { bar(); }") {
529 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE); 529 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE);
530 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE) { 530 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE) {
531 CHECK_EXPR(Call, Bounds(Type::Undefined())) { 531 CHECK_EXPR(Call, Bounds(Type::Undefined(zone))) {
532 CHECK_VAR(bar, FUNC_V_TYPE); 532 CHECK_VAR(bar, FUNC_V_TYPE);
533 } 533 }
534 } 534 }
535 } 535 }
536 CHECK_FUNC_TYPES_END 536 CHECK_FUNC_TYPES_END
537 } 537 }
538 538
539 539
540 TEST(DoesNothing) { 540 TEST(DoesNothing) {
541 CHECK_FUNC_TYPES_BEGIN( 541 CHECK_FUNC_TYPES_BEGIN(
542 "function bar() { var x = 1.0; }\n" 542 "function bar() { var x = 1.0; }\n"
543 "function foo() { bar(); }") { 543 "function foo() { bar(); }") {
544 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE) { 544 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE) {
545 CHECK_EXPR(Assignment, Bounds(cache.kAsmDouble)) { 545 CHECK_EXPR(Assignment, Bounds(cache.kAsmDouble)) {
546 CHECK_VAR(x, Bounds(cache.kAsmDouble)); 546 CHECK_VAR(x, Bounds(cache.kAsmDouble));
547 CHECK_EXPR(Literal, Bounds(cache.kAsmDouble)); 547 CHECK_EXPR(Literal, Bounds(cache.kAsmDouble));
548 } 548 }
549 } 549 }
550 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE) { 550 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE) {
551 CHECK_EXPR(Call, Bounds(Type::Undefined())) { 551 CHECK_EXPR(Call, Bounds(Type::Undefined(zone))) {
552 CHECK_VAR(bar, FUNC_V_TYPE); 552 CHECK_VAR(bar, FUNC_V_TYPE);
553 } 553 }
554 } 554 }
555 } 555 }
556 CHECK_FUNC_TYPES_END 556 CHECK_FUNC_TYPES_END
557 } 557 }
558 558
559 559
560 TEST(ReturnInt32Literal) { 560 TEST(ReturnInt32Literal) {
561 CHECK_FUNC_TYPES_BEGIN( 561 CHECK_FUNC_TYPES_BEGIN(
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 CHECK_EXPR(FunctionLiteral, FUNC_I_TYPE) { 1005 CHECK_EXPR(FunctionLiteral, FUNC_I_TYPE) {
1006 CHECK_EXPR(Assignment, Bounds(cache.kAsmInt)) { 1006 CHECK_EXPR(Assignment, Bounds(cache.kAsmInt)) {
1007 CHECK_VAR(x, Bounds(cache.kAsmInt)); 1007 CHECK_VAR(x, Bounds(cache.kAsmInt));
1008 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum)); 1008 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum));
1009 } 1009 }
1010 CHECK_EXPR(Assignment, Bounds(cache.kAsmInt)) { 1010 CHECK_EXPR(Assignment, Bounds(cache.kAsmInt)) {
1011 CHECK_VAR(y, Bounds(cache.kAsmInt)); 1011 CHECK_VAR(y, Bounds(cache.kAsmInt));
1012 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum)); 1012 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum));
1013 } 1013 }
1014 CHECK_EXPR(BinaryOperation, Bounds(cache.kAsmSigned)) { 1014 CHECK_EXPR(BinaryOperation, Bounds(cache.kAsmSigned)) {
1015 CHECK_EXPR(BinaryOperation, Bounds(Type::None(), Type::Any())) { 1015 CHECK_EXPR(BinaryOperation, Bounds(Type::None(zone), Type::Any(zone))) {
1016 CHECK_EXPR(BinaryOperation, Bounds(cache.kAsmUnsigned)) { 1016 CHECK_EXPR(BinaryOperation, Bounds(cache.kAsmUnsigned)) {
1017 CHECK_VAR(x, Bounds(cache.kAsmInt)); 1017 CHECK_VAR(x, Bounds(cache.kAsmInt));
1018 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum)); 1018 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum));
1019 } 1019 }
1020 CHECK_EXPR(BinaryOperation, Bounds(cache.kAsmUnsigned)) { 1020 CHECK_EXPR(BinaryOperation, Bounds(cache.kAsmUnsigned)) {
1021 CHECK_VAR(y, Bounds(cache.kAsmInt)); 1021 CHECK_VAR(y, Bounds(cache.kAsmInt));
1022 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum)); 1022 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum));
1023 } 1023 }
1024 } 1024 }
1025 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum)); 1025 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum));
(...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after
1664 1664
1665 1665
1666 TEST(ForeignFunction) { 1666 TEST(ForeignFunction) {
1667 CHECK_FUNC_TYPES_BEGIN( 1667 CHECK_FUNC_TYPES_BEGIN(
1668 "var baz = foreign.baz;\n" 1668 "var baz = foreign.baz;\n"
1669 "function bar() { return baz(1, 2)|0; }\n" 1669 "function bar() { return baz(1, 2)|0; }\n"
1670 "function foo() { bar(); }") { 1670 "function foo() { bar(); }") {
1671 CHECK_EXPR(FunctionLiteral, FUNC_I_TYPE) { 1671 CHECK_EXPR(FunctionLiteral, FUNC_I_TYPE) {
1672 CHECK_EXPR(BinaryOperation, Bounds(cache.kAsmSigned)) { 1672 CHECK_EXPR(BinaryOperation, Bounds(cache.kAsmSigned)) {
1673 CHECK_EXPR(Call, Bounds(Type::Number(zone))) { 1673 CHECK_EXPR(Call, Bounds(Type::Number(zone))) {
1674 CHECK_VAR(baz, Bounds(Type::Any())); 1674 CHECK_VAR(baz, Bounds(Type::Any(zone)));
1675 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum)); 1675 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum));
1676 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum)); 1676 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum));
1677 } 1677 }
1678 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum)); 1678 CHECK_EXPR(Literal, Bounds(cache.kAsmFixnum));
1679 } 1679 }
1680 } 1680 }
1681 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE) { 1681 CHECK_EXPR(FunctionLiteral, FUNC_V_TYPE) {
1682 CHECK_EXPR(Call, Bounds(cache.kAsmSigned)) { 1682 CHECK_EXPR(Call, Bounds(cache.kAsmSigned)) {
1683 CHECK_VAR(bar, FUNC_I_TYPE); 1683 CHECK_VAR(bar, FUNC_I_TYPE);
1684 } 1684 }
1685 } 1685 }
1686 } 1686 }
1687 CHECK_FUNC_TYPES_END_1() 1687 CHECK_FUNC_TYPES_END_1()
1688 CHECK_EXPR(Assignment, Bounds(Type::Any())) { 1688 CHECK_EXPR(Assignment, Bounds(Type::Any(zone))) {
1689 CHECK_VAR(baz, Bounds(Type::Any())); 1689 CHECK_VAR(baz, Bounds(Type::Any(zone)));
1690 CHECK_EXPR(Property, Bounds(Type::Any())) { 1690 CHECK_EXPR(Property, Bounds(Type::Any(zone))) {
1691 CHECK_VAR(foreign, Bounds::Unbounded()); 1691 CHECK_VAR(foreign, Bounds::Unbounded());
1692 CHECK_EXPR(Literal, Bounds::Unbounded()); 1692 CHECK_EXPR(Literal, Bounds::Unbounded());
1693 } 1693 }
1694 } 1694 }
1695 CHECK_FUNC_TYPES_END_2() 1695 CHECK_FUNC_TYPES_END_2()
1696 } 1696 }
1697 1697
1698 1698
1699 TEST(BadExports) { 1699 TEST(BadExports) {
1700 HARNESS_PREAMBLE() 1700 HARNESS_PREAMBLE()
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
1818 CHECK(!cache.kAsmFloat->Is(cache.kAsmFixnum)); 1818 CHECK(!cache.kAsmFloat->Is(cache.kAsmFixnum));
1819 CHECK(!cache.kAsmFloat->Is(cache.kAsmDouble)); 1819 CHECK(!cache.kAsmFloat->Is(cache.kAsmDouble));
1820 1820
1821 CHECK(cache.kAsmDouble->Is(cache.kAsmDouble)); 1821 CHECK(cache.kAsmDouble->Is(cache.kAsmDouble));
1822 CHECK(!cache.kAsmDouble->Is(cache.kAsmInt)); 1822 CHECK(!cache.kAsmDouble->Is(cache.kAsmInt));
1823 CHECK(!cache.kAsmDouble->Is(cache.kAsmUnsigned)); 1823 CHECK(!cache.kAsmDouble->Is(cache.kAsmUnsigned));
1824 CHECK(!cache.kAsmDouble->Is(cache.kAsmSigned)); 1824 CHECK(!cache.kAsmDouble->Is(cache.kAsmSigned));
1825 CHECK(!cache.kAsmDouble->Is(cache.kAsmFixnum)); 1825 CHECK(!cache.kAsmDouble->Is(cache.kAsmFixnum));
1826 CHECK(!cache.kAsmDouble->Is(cache.kAsmFloat)); 1826 CHECK(!cache.kAsmDouble->Is(cache.kAsmFloat));
1827 } 1827 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698