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

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

Issue 3004463002: [vm] Use strong mode types to calculate CompileType (Closed)
Patch Set: Address review comments Created 3 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
« no previous file with comments | « runtime/vm/flow_graph_type_propagator.cc ('k') | runtime/vm/kernel_binary_flowgraph.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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ 5 #ifndef RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_
6 #define RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ 6 #define RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_
7 7
8 #include "vm/allocation.h" 8 #include "vm/allocation.h"
9 #include "vm/ast.h" 9 #include "vm/ast.h"
10 #include "vm/flags.h" 10 #include "vm/flags.h"
(...skipping 2894 matching lines...) Expand 10 before | Expand all | Expand 10 after
2905 intptr_t checked_argument_count() const { return checked_argument_count_; } 2905 intptr_t checked_argument_count() const { return checked_argument_count_; }
2906 const Function& interface_target() const { return interface_target_; } 2906 const Function& interface_target() const { return interface_target_; }
2907 2907
2908 bool has_unique_selector() const { return has_unique_selector_; } 2908 bool has_unique_selector() const { return has_unique_selector_; }
2909 void set_has_unique_selector(bool b) { has_unique_selector_ = b; } 2909 void set_has_unique_selector(bool b) { has_unique_selector_ = b; }
2910 2910
2911 virtual intptr_t CallCount() const { 2911 virtual intptr_t CallCount() const {
2912 return ic_data() == NULL ? 0 : ic_data()->AggregateCount(); 2912 return ic_data() == NULL ? 0 : ic_data()->AggregateCount();
2913 } 2913 }
2914 2914
2915 virtual CompileType ComputeType() const;
2916
2915 virtual bool ComputeCanDeoptimize() const { return true; } 2917 virtual bool ComputeCanDeoptimize() const { return true; }
2916 2918
2917 virtual Definition* Canonicalize(FlowGraph* flow_graph); 2919 virtual Definition* Canonicalize(FlowGraph* flow_graph);
2918 2920
2919 virtual bool CanBecomeDeoptimizationTarget() const { 2921 virtual bool CanBecomeDeoptimizationTarget() const {
2920 // Instance calls that are specialized by the optimizer need a 2922 // Instance calls that are specialized by the optimizer need a
2921 // deoptimization descriptor before the call. 2923 // deoptimization descriptor before the call.
2922 return true; 2924 return true;
2923 } 2925 }
2924 2926
(...skipping 3819 matching lines...) Expand 10 before | Expand all | Expand 10 after
6744 SetInputAt(1, right); 6746 SetInputAt(1, right);
6745 } 6747 }
6746 6748
6747 InstanceCallInstr* call() const { return call_; } 6749 InstanceCallInstr* call() const { return call_; }
6748 Token::Kind op_kind() const { return op_kind_; } 6750 Token::Kind op_kind() const { return op_kind_; }
6749 Value* left() const { return inputs_[0]; } 6751 Value* left() const { return inputs_[0]; }
6750 Value* right() const { return inputs_[1]; } 6752 Value* right() const { return inputs_[1]; }
6751 6753
6752 virtual bool ComputeCanDeoptimize() const { return false; } 6754 virtual bool ComputeCanDeoptimize() const { return false; }
6753 6755
6756 virtual CompileType ComputeType() const;
6757
6754 virtual bool HasUnknownSideEffects() const { return true; } 6758 virtual bool HasUnknownSideEffects() const { return true; }
6755 6759
6756 virtual Definition* Canonicalize(FlowGraph* flow_graph); 6760 virtual Definition* Canonicalize(FlowGraph* flow_graph);
6757 6761
6758 PRINT_OPERANDS_TO_SUPPORT 6762 PRINT_OPERANDS_TO_SUPPORT
6759 6763
6760 DECLARE_INSTRUCTION(CheckedSmiOp) 6764 DECLARE_INSTRUCTION(CheckedSmiOp)
6761 6765
6762 private: 6766 private:
6763 InstanceCallInstr* call_; 6767 InstanceCallInstr* call_;
(...skipping 12 matching lines...) Expand all
6776 is_negated_(false) { 6780 is_negated_(false) {
6777 ASSERT(call->type_args_len() == 0); 6781 ASSERT(call->type_args_len() == 0);
6778 SetInputAt(0, left); 6782 SetInputAt(0, left);
6779 SetInputAt(1, right); 6783 SetInputAt(1, right);
6780 } 6784 }
6781 6785
6782 InstanceCallInstr* call() const { return call_; } 6786 InstanceCallInstr* call() const { return call_; }
6783 6787
6784 virtual bool ComputeCanDeoptimize() const { return false; } 6788 virtual bool ComputeCanDeoptimize() const { return false; }
6785 6789
6790 virtual CompileType ComputeType() const;
6791
6786 virtual Definition* Canonicalize(FlowGraph* flow_graph); 6792 virtual Definition* Canonicalize(FlowGraph* flow_graph);
6787 6793
6788 virtual void NegateComparison() { 6794 virtual void NegateComparison() {
6789 ComparisonInstr::NegateComparison(); 6795 ComparisonInstr::NegateComparison();
6790 is_negated_ = !is_negated_; 6796 is_negated_ = !is_negated_;
6791 } 6797 }
6792 6798
6793 bool is_negated() const { return is_negated_; } 6799 bool is_negated() const { return is_negated_; }
6794 6800
6795 virtual bool HasUnknownSideEffects() const { return true; } 6801 virtual bool HasUnknownSideEffects() const { return true; }
(...skipping 1307 matching lines...) Expand 10 before | Expand all | Expand 10 after
8103 #define DEFINE_UNIMPLEMENTED_INSTRUCTION(Name) \ 8109 #define DEFINE_UNIMPLEMENTED_INSTRUCTION(Name) \
8104 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \ 8110 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \
8105 UNIMPLEMENTED(); \ 8111 UNIMPLEMENTED(); \
8106 return NULL; \ 8112 return NULL; \
8107 } \ 8113 } \
8108 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } 8114 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); }
8109 8115
8110 } // namespace dart 8116 } // namespace dart
8111 8117
8112 #endif // RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ 8118 #endif // RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_
OLDNEW
« no previous file with comments | « runtime/vm/flow_graph_type_propagator.cc ('k') | runtime/vm/kernel_binary_flowgraph.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698