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

Side by Side Diff: runtime/vm/flow_graph_range_analysis.h

Issue 484693002: Don't check for reaching type in the RangeAnalysis::GetRange. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: fix UnboxIntegerInstr::InferRange Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | runtime/vm/flow_graph_range_analysis.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 #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 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 smi_range_(Range::Full(RangeBoundary::kRangeBoundarySmi)) { } 437 smi_range_(Range::Full(RangeBoundary::kRangeBoundarySmi)) { }
438 438
439 // Infer ranges for all values and remove overflow checks from binary smi 439 // Infer ranges for all values and remove overflow checks from binary smi
440 // operations when proven redundant. 440 // operations when proven redundant.
441 void Analyze(); 441 void Analyze();
442 442
443 // Helper that should be used to access ranges of inputs during range 443 // Helper that should be used to access ranges of inputs during range
444 // inference. 444 // inference.
445 // Returns meaningful results for uses of non-smi definitions that have smi 445 // Returns meaningful results for uses of non-smi definitions that have smi
446 // as a reaching type. 446 // as a reaching type.
447 const Range* GetRange(Value* value) const; 447 const Range* GetSmiRange(Value* value) const;
448 448
449 private: 449 private:
450 enum JoinOperator { 450 enum JoinOperator {
451 NONE, 451 NONE,
452 WIDEN, 452 WIDEN,
453 NARROW 453 NARROW
454 }; 454 };
455 static char OpPrefix(JoinOperator op); 455 static char OpPrefix(JoinOperator op);
456 456
457 // Collect all values that were proven to be smi in smi_values_ array and all 457 // Collect all values that were proven to be smi in smi_values_ array and all
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 BitVector* selected_uint32_defs_; 559 BitVector* selected_uint32_defs_;
560 560
561 FlowGraph* flow_graph_; 561 FlowGraph* flow_graph_;
562 Isolate* isolate_; 562 Isolate* isolate_;
563 }; 563 };
564 564
565 565
566 } // namespace dart 566 } // namespace dart
567 567
568 #endif // VM_FLOW_GRAPH_RANGE_ANALYSIS_H_ 568 #endif // VM_FLOW_GRAPH_RANGE_ANALYSIS_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/flow_graph_range_analysis.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698