OLD | NEW |
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 #ifndef VM_FLOW_GRAPH_RANGE_ANALYSIS_H_ | 5 #ifndef VM_FLOW_GRAPH_RANGE_ANALYSIS_H_ |
6 #define VM_FLOW_GRAPH_RANGE_ANALYSIS_H_ | 6 #define VM_FLOW_GRAPH_RANGE_ANALYSIS_H_ |
7 | 7 |
8 #include "vm/flow_graph.h" | 8 #include "vm/flow_graph.h" |
9 #include "vm/intermediate_language.h" | 9 #include "vm/intermediate_language.h" |
10 | 10 |
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 static void Shl(const Range* left_range, | 452 static void Shl(const Range* left_range, |
453 const Range* right_range, | 453 const Range* right_range, |
454 RangeBoundary* min, | 454 RangeBoundary* min, |
455 RangeBoundary* max); | 455 RangeBoundary* max); |
456 | 456 |
457 static bool And(const Range* left_range, | 457 static bool And(const Range* left_range, |
458 const Range* right_range, | 458 const Range* right_range, |
459 RangeBoundary* min, | 459 RangeBoundary* min, |
460 RangeBoundary* max); | 460 RangeBoundary* max); |
461 | 461 |
| 462 static void Xor(const Range* left_range, |
| 463 const Range* right_range, |
| 464 RangeBoundary* min, |
| 465 RangeBoundary* max); |
462 | 466 |
463 // Both the a and b ranges are >= 0. | 467 // Both the a and b ranges are >= 0. |
464 static bool OnlyPositiveOrZero(const Range& a, const Range& b); | 468 static bool OnlyPositiveOrZero(const Range& a, const Range& b); |
465 | 469 |
466 // Both the a and b ranges are <= 0. | 470 // Both the a and b ranges are <= 0. |
467 static bool OnlyNegativeOrZero(const Range& a, const Range& b); | 471 static bool OnlyNegativeOrZero(const Range& a, const Range& b); |
468 | 472 |
469 // Return the maximum absolute value included in range. | 473 // Return the maximum absolute value included in range. |
470 static int64_t ConstantAbsMax(const Range* range); | 474 static int64_t ConstantAbsMax(const Range* range); |
471 | 475 |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 BitVector* selected_uint32_defs_; | 654 BitVector* selected_uint32_defs_; |
651 | 655 |
652 FlowGraph* flow_graph_; | 656 FlowGraph* flow_graph_; |
653 Isolate* isolate_; | 657 Isolate* isolate_; |
654 }; | 658 }; |
655 | 659 |
656 | 660 |
657 } // namespace dart | 661 } // namespace dart |
658 | 662 |
659 #endif // VM_FLOW_GRAPH_RANGE_ANALYSIS_H_ | 663 #endif // VM_FLOW_GRAPH_RANGE_ANALYSIS_H_ |
OLD | NEW |