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

Side by Side Diff: runtime/vm/flow_graph_range_analysis_test.cc

Issue 1678203002: Remove more feature in product mode (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 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 | « runtime/vm/flow_graph_range_analysis.cc ('k') | runtime/vm/flow_graph_type_propagator.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 (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/flow_graph_range_analysis.h" 5 #include "vm/flow_graph_range_analysis.h"
6 #include "vm/unit_test.h" 6 #include "vm/unit_test.h"
7 7
8 namespace dart { 8 namespace dart {
9 9
10
11 TEST_CASE(RangeTests) { 10 TEST_CASE(RangeTests) {
12 Range* zero = new Range( 11 Range* zero = new Range(
13 RangeBoundary::FromConstant(0), 12 RangeBoundary::FromConstant(0),
14 RangeBoundary::FromConstant(0)); 13 RangeBoundary::FromConstant(0));
15 Range* positive = new Range( 14 Range* positive = new Range(
16 RangeBoundary::FromConstant(0), 15 RangeBoundary::FromConstant(0),
17 RangeBoundary::FromConstant(100)); 16 RangeBoundary::FromConstant(100));
18 Range* negative = new Range( 17 Range* negative = new Range(
19 RangeBoundary::FromConstant(-1), 18 RangeBoundary::FromConstant(-1),
20 RangeBoundary::FromConstant(-100)); 19 RangeBoundary::FromConstant(-100));
(...skipping 15 matching lines...) Expand all
36 Range* left_range = new Range( \ 35 Range* left_range = new Range( \
37 RangeBoundary::FromConstant(l_min), \ 36 RangeBoundary::FromConstant(l_min), \
38 RangeBoundary::FromConstant(l_max)); \ 37 RangeBoundary::FromConstant(l_max)); \
39 Range* shift_range = new Range( \ 38 Range* shift_range = new Range( \
40 RangeBoundary::FromConstant(r_min), \ 39 RangeBoundary::FromConstant(r_min), \
41 RangeBoundary::FromConstant(r_max)); \ 40 RangeBoundary::FromConstant(r_max)); \
42 Op(left_range, shift_range, &min, &max); \ 41 Op(left_range, shift_range, &min, &max); \
43 min = Clamp(min); \ 42 min = Clamp(min); \
44 max = Clamp(max); \ 43 max = Clamp(max); \
45 EXPECT(min.Equals(res_min)); \ 44 EXPECT(min.Equals(res_min)); \
46 if (!min.Equals(res_min)) OS::Print("%s\n", min.ToCString()); \ 45 if (FLAG_support_il_printer && !min.Equals(res_min)) { \
46 OS::Print("%s\n", min.ToCString()); \
47 } \
47 EXPECT(max.Equals(res_max)); \ 48 EXPECT(max.Equals(res_max)); \
48 if (!max.Equals(res_max)) OS::Print("%s\n", max.ToCString()); \ 49 if (FLAG_support_il_printer && !max.Equals(res_max)) { \
50 OS::Print("%s\n", max.ToCString()); \
51 } \
49 } 52 }
50 53
51 #define NO_CLAMP(b) (b) 54 #define NO_CLAMP(b) (b)
52 #define TEST_RANGE_OP(Op, l_min, l_max, r_min, r_max, result_min, result_max) \ 55 #define TEST_RANGE_OP(Op, l_min, l_max, r_min, r_max, result_min, result_max) \
53 TEST_RANGE_OP_(Op, l_min, l_max, r_min, r_max, \ 56 TEST_RANGE_OP_(Op, l_min, l_max, r_min, r_max, \
54 NO_CLAMP, result_min, result_max) 57 NO_CLAMP, result_min, result_max)
55 58
56 #define CLAMP_TO_SMI(b) (b.Clamp(RangeBoundary::kRangeBoundarySmi)) 59 #define CLAMP_TO_SMI(b) (b.Clamp(RangeBoundary::kRangeBoundarySmi))
57 #define TEST_RANGE_OP_SMI(Op, l_min, l_max, r_min, r_max, res_min, res_max) \ 60 #define TEST_RANGE_OP_SMI(Op, l_min, l_max, r_min, r_max, res_min, res_max) \
58 TEST_RANGE_OP_(Op, l_min, l_max, r_min, r_max, \ 61 TEST_RANGE_OP_(Op, l_min, l_max, r_min, r_max, \
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 RangeBoundary::FromConstant(l_max)); \ 323 RangeBoundary::FromConstant(l_max)); \
321 Range* right_range = new Range( \ 324 Range* right_range = new Range( \
322 RangeBoundary::FromConstant(r_min), \ 325 RangeBoundary::FromConstant(r_min), \
323 RangeBoundary::FromConstant(r_max)); \ 326 RangeBoundary::FromConstant(r_max)); \
324 EXPECT(left_range->min().ConstantValue() == l_min); \ 327 EXPECT(left_range->min().ConstantValue() == l_min); \
325 EXPECT(left_range->max().ConstantValue() == l_max); \ 328 EXPECT(left_range->max().ConstantValue() == l_max); \
326 EXPECT(right_range->min().ConstantValue() == r_min); \ 329 EXPECT(right_range->min().ConstantValue() == r_min); \
327 EXPECT(right_range->max().ConstantValue() == r_max); \ 330 EXPECT(right_range->max().ConstantValue() == r_max); \
328 Range::Add(left_range, right_range, &min, &max, NULL); \ 331 Range::Add(left_range, right_range, &min, &max, NULL); \
329 EXPECT(min.Equals(result_min)); \ 332 EXPECT(min.Equals(result_min)); \
330 if (!min.Equals(result_min)) { \ 333 if (FLAG_support_il_printer && !min.Equals(result_min)) { \
331 OS::Print("%s != %s\n", min.ToCString(), result_min.ToCString()); \ 334 OS::Print("%s != %s\n", min.ToCString(), result_min.ToCString()); \
332 } \ 335 } \
333 EXPECT(max.Equals(result_max)); \ 336 EXPECT(max.Equals(result_max)); \
334 if (!max.Equals(result_max)) { \ 337 if (FLAG_support_il_printer && !max.Equals(result_max)) { \
335 OS::Print("%s != %s\n", max.ToCString(), result_max.ToCString()); \ 338 OS::Print("%s != %s\n", max.ToCString(), result_max.ToCString()); \
336 } \ 339 } \
337 } 340 }
338 341
339 // [kMaxInt32, kMaxInt32 + 15] + [10, 20] = [kMaxInt32 + 10, kMaxInt32 + 35]. 342 // [kMaxInt32, kMaxInt32 + 15] + [10, 20] = [kMaxInt32 + 10, kMaxInt32 + 35].
340 TEST_RANGE_ADD(static_cast<int64_t>(kMaxInt32), 343 TEST_RANGE_ADD(static_cast<int64_t>(kMaxInt32),
341 static_cast<int64_t>(kMaxInt32) + 15, 344 static_cast<int64_t>(kMaxInt32) + 15,
342 static_cast<int64_t>(10), 345 static_cast<int64_t>(10),
343 static_cast<int64_t>(20), 346 static_cast<int64_t>(20),
344 RangeBoundary(static_cast<int64_t>(kMaxInt32) + 10), 347 RangeBoundary(static_cast<int64_t>(kMaxInt32) + 10),
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 RangeBoundary::FromConstant(l_max)); \ 418 RangeBoundary::FromConstant(l_max)); \
416 Range* right_range = new Range( \ 419 Range* right_range = new Range( \
417 RangeBoundary::FromConstant(r_min), \ 420 RangeBoundary::FromConstant(r_min), \
418 RangeBoundary::FromConstant(r_max)); \ 421 RangeBoundary::FromConstant(r_max)); \
419 EXPECT(left_range->min().ConstantValue() == l_min); \ 422 EXPECT(left_range->min().ConstantValue() == l_min); \
420 EXPECT(left_range->max().ConstantValue() == l_max); \ 423 EXPECT(left_range->max().ConstantValue() == l_max); \
421 EXPECT(right_range->min().ConstantValue() == r_min); \ 424 EXPECT(right_range->min().ConstantValue() == r_min); \
422 EXPECT(right_range->max().ConstantValue() == r_max); \ 425 EXPECT(right_range->max().ConstantValue() == r_max); \
423 Range::Sub(left_range, right_range, &min, &max, NULL); \ 426 Range::Sub(left_range, right_range, &min, &max, NULL); \
424 EXPECT(min.Equals(result_min)); \ 427 EXPECT(min.Equals(result_min)); \
425 if (!min.Equals(result_min)) { \ 428 if (FLAG_support_il_printer && !min.Equals(result_min)) { \
426 OS::Print("%s != %s\n", min.ToCString(), result_min.ToCString()); \ 429 OS::Print("%s != %s\n", min.ToCString(), result_min.ToCString()); \
427 } \ 430 } \
428 EXPECT(max.Equals(result_max)); \ 431 EXPECT(max.Equals(result_max)); \
429 if (!max.Equals(result_max)) { \ 432 if (FLAG_support_il_printer && !max.Equals(result_max)) { \
430 OS::Print("%s != %s\n", max.ToCString(), result_max.ToCString()); \ 433 OS::Print("%s != %s\n", max.ToCString(), result_max.ToCString()); \
431 } \ 434 } \
432 } 435 }
433 436
434 // [kMaxInt32, kMaxInt32 + 15] - [10, 20] = [kMaxInt32 - 20, kMaxInt32 + 5]. 437 // [kMaxInt32, kMaxInt32 + 15] - [10, 20] = [kMaxInt32 - 20, kMaxInt32 + 5].
435 TEST_RANGE_SUB(static_cast<int64_t>(kMaxInt32), 438 TEST_RANGE_SUB(static_cast<int64_t>(kMaxInt32),
436 static_cast<int64_t>(kMaxInt32) + 15, 439 static_cast<int64_t>(kMaxInt32) + 15,
437 static_cast<int64_t>(10), 440 static_cast<int64_t>(10),
438 static_cast<int64_t>(20), 441 static_cast<int64_t>(20),
439 RangeBoundary(static_cast<int64_t>(kMaxInt32) - 20), 442 RangeBoundary(static_cast<int64_t>(kMaxInt32) - 20),
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 RangeBoundary::FromConstant(l_max)); \ 481 RangeBoundary::FromConstant(l_max)); \
479 Range* right_range = new Range( \ 482 Range* right_range = new Range( \
480 RangeBoundary::FromConstant(r_min), \ 483 RangeBoundary::FromConstant(r_min), \
481 RangeBoundary::FromConstant(r_max)); \ 484 RangeBoundary::FromConstant(r_max)); \
482 EXPECT(left_range->min().ConstantValue() == l_min); \ 485 EXPECT(left_range->min().ConstantValue() == l_min); \
483 EXPECT(left_range->max().ConstantValue() == l_max); \ 486 EXPECT(left_range->max().ConstantValue() == l_max); \
484 EXPECT(right_range->min().ConstantValue() == r_min); \ 487 EXPECT(right_range->min().ConstantValue() == r_min); \
485 EXPECT(right_range->max().ConstantValue() == r_max); \ 488 EXPECT(right_range->max().ConstantValue() == r_max); \
486 Range::And(left_range, right_range, &min, &max); \ 489 Range::And(left_range, right_range, &min, &max); \
487 EXPECT(min.Equals(result_min)); \ 490 EXPECT(min.Equals(result_min)); \
488 if (!min.Equals(result_min)) { \ 491 if (FLAG_support_il_printer && !min.Equals(result_min)) { \
489 OS::Print("%s != %s\n", min.ToCString(), result_min.ToCString()); \ 492 OS::Print("%s != %s\n", min.ToCString(), result_min.ToCString()); \
490 } \ 493 } \
491 EXPECT(max.Equals(result_max)); \ 494 EXPECT(max.Equals(result_max)); \
492 if (!max.Equals(result_max)) { \ 495 if (FLAG_support_il_printer && !max.Equals(result_max)) { \
493 OS::Print("%s != %s\n", max.ToCString(), result_max.ToCString()); \ 496 OS::Print("%s != %s\n", max.ToCString(), result_max.ToCString()); \
494 } \ 497 } \
495 } 498 }
496 499
497 // [0xff, 0xfff] & [0xf, 0xf] = [0x0, 0xf]. 500 // [0xff, 0xfff] & [0xf, 0xf] = [0x0, 0xf].
498 TEST_RANGE_AND(static_cast<int64_t>(0xff), 501 TEST_RANGE_AND(static_cast<int64_t>(0xff),
499 static_cast<int64_t>(0xfff), 502 static_cast<int64_t>(0xfff),
500 static_cast<int64_t>(0xf), 503 static_cast<int64_t>(0xf),
501 static_cast<int64_t>(0xf), 504 static_cast<int64_t>(0xf),
502 RangeBoundary(0), 505 RangeBoundary(0),
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 p_infinity, 699 p_infinity,
697 size).IsMaximumOrAbove(size)); 700 size).IsMaximumOrAbove(size));
698 701
699 EXPECT(RangeBoundary::JoinMax( 702 EXPECT(RangeBoundary::JoinMax(
700 p_infinity, 703 p_infinity,
701 RangeBoundary::FromConstant(1), 704 RangeBoundary::FromConstant(1),
702 size).IsMaximumOrAbove(size)); 705 size).IsMaximumOrAbove(size));
703 } 706 }
704 707
705 } // namespace dart 708 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/flow_graph_range_analysis.cc ('k') | runtime/vm/flow_graph_type_propagator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698