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

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

Issue 1409763004: [types] Use the TypeCache consistently for common types. (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
« no previous file with comments | « src/zone-type-cache.h ('k') | test/unittests/compiler/js-intrinsic-lowering-unittest.cc » ('j') | 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 "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/ast.h" 7 #include "src/ast.h"
8 #include "src/ast-expression-visitor.h" 8 #include "src/ast-expression-visitor.h"
9 #include "src/parser.h" 9 #include "src/parser.h"
10 #include "src/rewriter.h" 10 #include "src/rewriter.h"
11 #include "src/scopes.h" 11 #include "src/scopes.h"
12 #include "src/type-cache.h"
12 #include "src/typing-asm.h" 13 #include "src/typing-asm.h"
13 #include "src/zone-type-cache.h"
14 #include "test/cctest/cctest.h" 14 #include "test/cctest/cctest.h"
15 #include "test/cctest/expression-type-collector.h" 15 #include "test/cctest/expression-type-collector.h"
16 #include "test/cctest/expression-type-collector-macros.h" 16 #include "test/cctest/expression-type-collector-macros.h"
17 17
18 // Macros for function types. 18 // Macros for function types.
19 #define FUNC_V_TYPE Bounds(Type::Function(Type::Undefined(), zone)) 19 #define FUNC_V_TYPE Bounds(Type::Function(Type::Undefined(), zone))
20 #define FUNC_I_TYPE Bounds(Type::Function(cache.kInt32, zone)) 20 #define FUNC_I_TYPE Bounds(Type::Function(cache.kInt32, zone))
21 #define FUNC_F_TYPE Bounds(Type::Function(cache.kFloat32, zone)) 21 #define FUNC_F_TYPE Bounds(Type::Function(cache.kFloat32, zone))
22 #define FUNC_D_TYPE Bounds(Type::Function(cache.kFloat64, zone)) 22 #define FUNC_D_TYPE Bounds(Type::Function(cache.kFloat64, zone))
23 #define FUNC_D2D_TYPE \ 23 #define FUNC_D2D_TYPE \
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 " }\n" 109 " }\n"
110 "\n" 110 "\n"
111 " return { geometricMean: geometricMean };\n" 111 " return { geometricMean: geometricMean };\n"
112 "}\n"; 112 "}\n";
113 113
114 v8::V8::Initialize(); 114 v8::V8::Initialize();
115 HandleAndZoneScope handles; 115 HandleAndZoneScope handles;
116 Zone* zone = handles.main_zone(); 116 Zone* zone = handles.main_zone();
117 ZoneVector<ExpressionTypeEntry> types(zone); 117 ZoneVector<ExpressionTypeEntry> types(zone);
118 CHECK_EQ("", Validate(zone, test_function, &types)); 118 CHECK_EQ("", Validate(zone, test_function, &types));
119 ZoneTypeCache cache; 119 TypeCache cache;
120 120
121 CHECK_TYPES_BEGIN { 121 CHECK_TYPES_BEGIN {
122 // Module. 122 // Module.
123 CHECK_EXPR(FunctionLiteral, Bounds::Unbounded()) { 123 CHECK_EXPR(FunctionLiteral, Bounds::Unbounded()) {
124 // function logSum 124 // function logSum
125 CHECK_EXPR(FunctionLiteral, FUNC_II2D_TYPE) { 125 CHECK_EXPR(FunctionLiteral, FUNC_II2D_TYPE) {
126 CHECK_EXPR(Assignment, Bounds(cache.kInt32)) { 126 CHECK_EXPR(Assignment, Bounds(cache.kInt32)) {
127 CHECK_VAR(start, Bounds(cache.kInt32)); 127 CHECK_VAR(start, Bounds(cache.kInt32));
128 CHECK_EXPR(BinaryOperation, Bounds(cache.kInt32)) { 128 CHECK_EXPR(BinaryOperation, Bounds(cache.kInt32)) {
129 CHECK_VAR(start, Bounds(cache.kInt32)); 129 CHECK_VAR(start, Bounds(cache.kInt32));
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 CHECK_EXPR(Literal, Bounds::Unbounded()); \ 388 CHECK_EXPR(Literal, Bounds::Unbounded()); \
389 } \ 389 } \
390 CHECK_VAR(buffer, Bounds::Unbounded()); \ 390 CHECK_VAR(buffer, Bounds::Unbounded()); \
391 } \ 391 } \
392 } 392 }
393 393
394 394
395 namespace { 395 namespace {
396 396
397 void CheckStdlibShortcuts(Zone* zone, ZoneVector<ExpressionTypeEntry>& types, 397 void CheckStdlibShortcuts(Zone* zone, ZoneVector<ExpressionTypeEntry>& types,
398 size_t& index, int& depth, ZoneTypeCache& cache) { 398 size_t& index, int& depth, TypeCache& cache) {
399 // var exp = stdlib.*; (D * 12) 399 // var exp = stdlib.*; (D * 12)
400 CHECK_VAR_SHORTCUT(Infinity, Bounds(cache.kFloat64)); 400 CHECK_VAR_SHORTCUT(Infinity, Bounds(cache.kFloat64));
401 CHECK_VAR_SHORTCUT(NaN, Bounds(cache.kFloat64)); 401 CHECK_VAR_SHORTCUT(NaN, Bounds(cache.kFloat64));
402 // var x = stdlib.Math.x; D2D 402 // var x = stdlib.Math.x; D2D
403 CHECK_VAR_MATH_SHORTCUT(acos, FUNC_D2D_TYPE); 403 CHECK_VAR_MATH_SHORTCUT(acos, FUNC_D2D_TYPE);
404 CHECK_VAR_MATH_SHORTCUT(asin, FUNC_D2D_TYPE); 404 CHECK_VAR_MATH_SHORTCUT(asin, FUNC_D2D_TYPE);
405 CHECK_VAR_MATH_SHORTCUT(atan, FUNC_D2D_TYPE); 405 CHECK_VAR_MATH_SHORTCUT(atan, FUNC_D2D_TYPE);
406 CHECK_VAR_MATH_SHORTCUT(cos, FUNC_D2D_TYPE); 406 CHECK_VAR_MATH_SHORTCUT(cos, FUNC_D2D_TYPE);
407 CHECK_VAR_MATH_SHORTCUT(sin, FUNC_D2D_TYPE); 407 CHECK_VAR_MATH_SHORTCUT(sin, FUNC_D2D_TYPE);
408 CHECK_VAR_MATH_SHORTCUT(tan, FUNC_D2D_TYPE); 408 CHECK_VAR_MATH_SHORTCUT(tan, FUNC_D2D_TYPE);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 445
446 #define CHECK_FUNC_TYPES_BEGIN(func) \ 446 #define CHECK_FUNC_TYPES_BEGIN(func) \
447 HARNESS_PREAMBLE() \ 447 HARNESS_PREAMBLE() \
448 func "\n" HARNESS_POSTAMBLE(); \ 448 func "\n" HARNESS_POSTAMBLE(); \
449 \ 449 \
450 v8::V8::Initialize(); \ 450 v8::V8::Initialize(); \
451 HandleAndZoneScope handles; \ 451 HandleAndZoneScope handles; \
452 Zone* zone = handles.main_zone(); \ 452 Zone* zone = handles.main_zone(); \
453 ZoneVector<ExpressionTypeEntry> types(zone); \ 453 ZoneVector<ExpressionTypeEntry> types(zone); \
454 CHECK_EQ("", Validate(zone, test_function, &types)); \ 454 CHECK_EQ("", Validate(zone, test_function, &types)); \
455 ZoneTypeCache cache; \ 455 TypeCache cache; \
456 \ 456 \
457 CHECK_TYPES_BEGIN { \ 457 CHECK_TYPES_BEGIN { \
458 /* Module. */ \ 458 /* Module. */ \
459 CHECK_EXPR(FunctionLiteral, Bounds::Unbounded()) { 459 CHECK_EXPR(FunctionLiteral, Bounds::Unbounded()) {
460 #define CHECK_FUNC_TYPES_END_1() \ 460 #define CHECK_FUNC_TYPES_END_1() \
461 /* "use asm"; */ \ 461 /* "use asm"; */ \
462 CHECK_EXPR(Literal, Bounds(Type::String())); \ 462 CHECK_EXPR(Literal, Bounds(Type::String())); \
463 /* stdlib shortcuts. */ \ 463 /* stdlib shortcuts. */ \
464 CheckStdlibShortcuts(zone, types, index, depth, cache); 464 CheckStdlibShortcuts(zone, types, index, depth, cache);
465 465
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after
907 "return {foo: foo, bar: 1};" 907 "return {foo: foo, bar: 1};"
908 "}\n"; 908 "}\n";
909 909
910 v8::V8::Initialize(); 910 v8::V8::Initialize();
911 HandleAndZoneScope handles; 911 HandleAndZoneScope handles;
912 Zone* zone = handles.main_zone(); 912 Zone* zone = handles.main_zone();
913 ZoneVector<ExpressionTypeEntry> types(zone); 913 ZoneVector<ExpressionTypeEntry> types(zone);
914 CHECK_EQ("asm: line 40: non-function in function table\n", 914 CHECK_EQ("asm: line 40: non-function in function table\n",
915 Validate(zone, test_function, &types)); 915 Validate(zone, test_function, &types));
916 } 916 }
OLDNEW
« no previous file with comments | « src/zone-type-cache.h ('k') | test/unittests/compiler/js-intrinsic-lowering-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698