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