| 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 VM_INTERMEDIATE_LANGUAGE_H_ | 5 #ifndef VM_INTERMEDIATE_LANGUAGE_H_ |
| 6 #define VM_INTERMEDIATE_LANGUAGE_H_ | 6 #define 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 879 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 890 | 890 |
| 891 void Unsupported(FlowGraphCompiler* compiler); | 891 void Unsupported(FlowGraphCompiler* compiler); |
| 892 | 892 |
| 893 protected: | 893 protected: |
| 894 // GetDeoptId and/or CopyDeoptIdFrom. | 894 // GetDeoptId and/or CopyDeoptIdFrom. |
| 895 friend class CallSiteInliner; | 895 friend class CallSiteInliner; |
| 896 friend class LICM; | 896 friend class LICM; |
| 897 friend class ComparisonInstr; | 897 friend class ComparisonInstr; |
| 898 friend class Scheduler; | 898 friend class Scheduler; |
| 899 friend class BlockEntryInstr; | 899 friend class BlockEntryInstr; |
| 900 friend class CatchBlockEntryInstr; // deopt_id_ |
| 900 | 901 |
| 901 // Fetch deopt id without checking if this computation can deoptimize. | 902 // Fetch deopt id without checking if this computation can deoptimize. |
| 902 intptr_t GetDeoptId() const { | 903 intptr_t GetDeoptId() const { |
| 903 return deopt_id_; | 904 return deopt_id_; |
| 904 } | 905 } |
| 905 | 906 |
| 906 void CopyDeoptIdFrom(const Instruction& instr) { | 907 void CopyDeoptIdFrom(const Instruction& instr) { |
| 907 deopt_id_ = instr.deopt_id_; | 908 deopt_id_ = instr.deopt_id_; |
| 908 } | 909 } |
| 909 | 910 |
| (...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1557 | 1558 |
| 1558 class CatchBlockEntryInstr : public BlockEntryInstr { | 1559 class CatchBlockEntryInstr : public BlockEntryInstr { |
| 1559 public: | 1560 public: |
| 1560 CatchBlockEntryInstr(intptr_t block_id, | 1561 CatchBlockEntryInstr(intptr_t block_id, |
| 1561 intptr_t try_index, | 1562 intptr_t try_index, |
| 1562 GraphEntryInstr* graph_entry, | 1563 GraphEntryInstr* graph_entry, |
| 1563 const Array& handler_types, | 1564 const Array& handler_types, |
| 1564 intptr_t catch_try_index, | 1565 intptr_t catch_try_index, |
| 1565 const LocalVariable& exception_var, | 1566 const LocalVariable& exception_var, |
| 1566 const LocalVariable& stacktrace_var, | 1567 const LocalVariable& stacktrace_var, |
| 1567 bool needs_stacktrace) | 1568 bool needs_stacktrace, |
| 1569 intptr_t deopt_id) |
| 1568 : BlockEntryInstr(block_id, try_index), | 1570 : BlockEntryInstr(block_id, try_index), |
| 1569 graph_entry_(graph_entry), | 1571 graph_entry_(graph_entry), |
| 1570 predecessor_(NULL), | 1572 predecessor_(NULL), |
| 1571 catch_handler_types_(Array::ZoneHandle(handler_types.raw())), | 1573 catch_handler_types_(Array::ZoneHandle(handler_types.raw())), |
| 1572 catch_try_index_(catch_try_index), | 1574 catch_try_index_(catch_try_index), |
| 1573 exception_var_(exception_var), | 1575 exception_var_(exception_var), |
| 1574 stacktrace_var_(stacktrace_var), | 1576 stacktrace_var_(stacktrace_var), |
| 1575 needs_stacktrace_(needs_stacktrace) { } | 1577 needs_stacktrace_(needs_stacktrace) { |
| 1578 deopt_id_ = deopt_id; |
| 1579 } |
| 1576 | 1580 |
| 1577 DECLARE_INSTRUCTION(CatchBlockEntry) | 1581 DECLARE_INSTRUCTION(CatchBlockEntry) |
| 1578 | 1582 |
| 1579 virtual intptr_t PredecessorCount() const { | 1583 virtual intptr_t PredecessorCount() const { |
| 1580 return (predecessor_ == NULL) ? 0 : 1; | 1584 return (predecessor_ == NULL) ? 0 : 1; |
| 1581 } | 1585 } |
| 1582 virtual BlockEntryInstr* PredecessorAt(intptr_t index) const { | 1586 virtual BlockEntryInstr* PredecessorAt(intptr_t index) const { |
| 1583 ASSERT((index == 0) && (predecessor_ != NULL)); | 1587 ASSERT((index == 0) && (predecessor_ != NULL)); |
| 1584 return predecessor_; | 1588 return predecessor_; |
| 1585 } | 1589 } |
| (...skipping 6710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8296 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \ | 8300 LocationSummary* Name::MakeLocationSummary(Zone* zone, bool opt) const { \ |
| 8297 UNIMPLEMENTED(); \ | 8301 UNIMPLEMENTED(); \ |
| 8298 return NULL; \ | 8302 return NULL; \ |
| 8299 } \ | 8303 } \ |
| 8300 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } | 8304 void Name::EmitNativeCode(FlowGraphCompiler* compiler) { UNIMPLEMENTED(); } |
| 8301 | 8305 |
| 8302 | 8306 |
| 8303 } // namespace dart | 8307 } // namespace dart |
| 8304 | 8308 |
| 8305 #endif // VM_INTERMEDIATE_LANGUAGE_H_ | 8309 #endif // VM_INTERMEDIATE_LANGUAGE_H_ |
| OLD | NEW |