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 1398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1409 | 1409 |
1410 intptr_t entry_count() const { return entry_count_; } | 1410 intptr_t entry_count() const { return entry_count_; } |
1411 void set_entry_count(intptr_t count) { entry_count_ = count; } | 1411 void set_entry_count(intptr_t count) { entry_count_ = count; } |
1412 | 1412 |
1413 intptr_t spill_slot_count() const { return spill_slot_count_; } | 1413 intptr_t spill_slot_count() const { return spill_slot_count_; } |
1414 void set_spill_slot_count(intptr_t count) { | 1414 void set_spill_slot_count(intptr_t count) { |
1415 ASSERT(count >= 0); | 1415 ASSERT(count >= 0); |
1416 spill_slot_count_ = count; | 1416 spill_slot_count_ = count; |
1417 } | 1417 } |
1418 | 1418 |
1419 // Number of stack slots reserved for compiling try-catch. For functions | |
1420 // without try-catch, this is 0. Otherwise, it is the number of local | |
1421 // variables. | |
1422 intptr_t fixed_slot_count() const { return fixed_slot_count_; } | |
1423 void set_fixed_slot_count(intptr_t count) { | |
1424 ASSERT(count >= 0); | |
1425 fixed_slot_count_ = count; | |
1426 } | |
1427 TargetEntryInstr* normal_entry() const { return normal_entry_; } | 1419 TargetEntryInstr* normal_entry() const { return normal_entry_; } |
1428 | 1420 |
1429 const ParsedFunction& parsed_function() const { | 1421 const ParsedFunction& parsed_function() const { |
1430 return *parsed_function_; | 1422 return *parsed_function_; |
1431 } | 1423 } |
1432 | 1424 |
1433 const GrowableArray<CatchBlockEntryInstr*>& catch_entries() const { | 1425 const GrowableArray<CatchBlockEntryInstr*>& catch_entries() const { |
1434 return catch_entries_; | 1426 return catch_entries_; |
1435 } | 1427 } |
1436 | 1428 |
1437 virtual void PrintTo(BufferFormatter* f) const; | 1429 virtual void PrintTo(BufferFormatter* f) const; |
1438 | 1430 |
1439 private: | 1431 private: |
1440 virtual void ClearPredecessors() {} | 1432 virtual void ClearPredecessors() {} |
1441 virtual void AddPredecessor(BlockEntryInstr* predecessor) { UNREACHABLE(); } | 1433 virtual void AddPredecessor(BlockEntryInstr* predecessor) { UNREACHABLE(); } |
1442 | 1434 |
1443 const ParsedFunction* parsed_function_; | 1435 const ParsedFunction* parsed_function_; |
1444 TargetEntryInstr* normal_entry_; | 1436 TargetEntryInstr* normal_entry_; |
1445 GrowableArray<CatchBlockEntryInstr*> catch_entries_; | 1437 GrowableArray<CatchBlockEntryInstr*> catch_entries_; |
1446 GrowableArray<Definition*> initial_definitions_; | 1438 GrowableArray<Definition*> initial_definitions_; |
1447 const intptr_t osr_id_; | 1439 const intptr_t osr_id_; |
1448 intptr_t entry_count_; | 1440 intptr_t entry_count_; |
1449 intptr_t spill_slot_count_; | 1441 intptr_t spill_slot_count_; |
1450 intptr_t fixed_slot_count_; // For try-catch in optimized code. | |
1451 | 1442 |
1452 DISALLOW_COPY_AND_ASSIGN(GraphEntryInstr); | 1443 DISALLOW_COPY_AND_ASSIGN(GraphEntryInstr); |
1453 }; | 1444 }; |
1454 | 1445 |
1455 | 1446 |
1456 class JoinEntryInstr : public BlockEntryInstr { | 1447 class JoinEntryInstr : public BlockEntryInstr { |
1457 public: | 1448 public: |
1458 JoinEntryInstr(intptr_t block_id, intptr_t try_index) | 1449 JoinEntryInstr(intptr_t block_id, intptr_t try_index) |
1459 : BlockEntryInstr(block_id, try_index), | 1450 : BlockEntryInstr(block_id, try_index), |
1460 predecessors_(2), // Two is the assumed to be the common case. | 1451 predecessors_(2), // Two is the assumed to be the common case. |
(...skipping 5655 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7116 ForwardInstructionIterator* current_iterator_; | 7107 ForwardInstructionIterator* current_iterator_; |
7117 | 7108 |
7118 private: | 7109 private: |
7119 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); | 7110 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); |
7120 }; | 7111 }; |
7121 | 7112 |
7122 | 7113 |
7123 } // namespace dart | 7114 } // namespace dart |
7124 | 7115 |
7125 #endif // VM_INTERMEDIATE_LANGUAGE_H_ | 7116 #endif // VM_INTERMEDIATE_LANGUAGE_H_ |
OLD | NEW |