OLD | NEW |
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/growable_array.h" | 10 #include "vm/growable_array.h" |
(...skipping 915 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
926 void Unsupported(FlowGraphCompiler* compiler); | 926 void Unsupported(FlowGraphCompiler* compiler); |
927 | 927 |
928 protected: | 928 protected: |
929 // GetDeoptId and/or CopyDeoptIdFrom. | 929 // GetDeoptId and/or CopyDeoptIdFrom. |
930 friend class CallSiteInliner; | 930 friend class CallSiteInliner; |
931 friend class LICM; | 931 friend class LICM; |
932 friend class ComparisonInstr; | 932 friend class ComparisonInstr; |
933 friend class Scheduler; | 933 friend class Scheduler; |
934 friend class BlockEntryInstr; | 934 friend class BlockEntryInstr; |
935 friend class CatchBlockEntryInstr; // deopt_id_ | 935 friend class CatchBlockEntryInstr; // deopt_id_ |
| 936 friend class DebugStepCheckInstr; // deopt_id_ |
| 937 friend class StrictCompareInstr; // deopt_id_ |
936 | 938 |
937 // Fetch deopt id without checking if this computation can deoptimize. | 939 // Fetch deopt id without checking if this computation can deoptimize. |
938 intptr_t GetDeoptId() const { return deopt_id_; } | 940 intptr_t GetDeoptId() const { return deopt_id_; } |
939 | 941 |
940 void CopyDeoptIdFrom(const Instruction& instr) { | 942 void CopyDeoptIdFrom(const Instruction& instr) { |
941 deopt_id_ = instr.deopt_id_; | 943 deopt_id_ = instr.deopt_id_; |
942 } | 944 } |
943 | 945 |
944 private: | 946 private: |
945 friend class BranchInstr; // For RawSetInputAt. | 947 friend class BranchInstr; // For RawSetInputAt. |
(...skipping 2675 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3621 bool is_auto_scope_; | 3623 bool is_auto_scope_; |
3622 bool link_lazily_; | 3624 bool link_lazily_; |
3623 const TokenPosition token_pos_; | 3625 const TokenPosition token_pos_; |
3624 | 3626 |
3625 DISALLOW_COPY_AND_ASSIGN(NativeCallInstr); | 3627 DISALLOW_COPY_AND_ASSIGN(NativeCallInstr); |
3626 }; | 3628 }; |
3627 | 3629 |
3628 | 3630 |
3629 class DebugStepCheckInstr : public TemplateInstruction<0, NoThrow> { | 3631 class DebugStepCheckInstr : public TemplateInstruction<0, NoThrow> { |
3630 public: | 3632 public: |
3631 DebugStepCheckInstr(TokenPosition token_pos, RawPcDescriptors::Kind stub_kind) | 3633 DebugStepCheckInstr(TokenPosition token_pos, |
3632 : token_pos_(token_pos), stub_kind_(stub_kind) {} | 3634 RawPcDescriptors::Kind stub_kind, |
| 3635 intptr_t deopt_id) |
| 3636 : TemplateInstruction<0, NoThrow>(deopt_id), |
| 3637 token_pos_(token_pos), |
| 3638 stub_kind_(stub_kind) {} |
3633 | 3639 |
3634 DECLARE_INSTRUCTION(DebugStepCheck) | 3640 DECLARE_INSTRUCTION(DebugStepCheck) |
3635 | 3641 |
3636 virtual TokenPosition token_pos() const { return token_pos_; } | 3642 virtual TokenPosition token_pos() const { return token_pos_; } |
3637 virtual bool ComputeCanDeoptimize() const { return false; } | 3643 virtual bool ComputeCanDeoptimize() const { return false; } |
3638 virtual EffectSet Effects() const { return EffectSet::All(); } | 3644 virtual EffectSet Effects() const { return EffectSet::All(); } |
3639 virtual Instruction* Canonicalize(FlowGraph* flow_graph); | 3645 virtual Instruction* Canonicalize(FlowGraph* flow_graph); |
3640 | 3646 |
3641 private: | 3647 private: |
3642 const TokenPosition token_pos_; | 3648 const TokenPosition token_pos_; |
(...skipping 4586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8229 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \ | 8235 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \ |
8230 UNIMPLEMENTED(); \ | 8236 UNIMPLEMENTED(); \ |
8231 return NULL; \ | 8237 return NULL; \ |
8232 } \ | 8238 } \ |
8233 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } | 8239 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } |
8234 | 8240 |
8235 | 8241 |
8236 } // namespace dart | 8242 } // namespace dart |
8237 | 8243 |
8238 #endif // RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ | 8244 #endif // RUNTIME_VM_INTERMEDIATE_LANGUAGE_H_ |
OLD | NEW |