| 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 #include "vm/flow_graph_optimizer.h" | 5 #include "vm/flow_graph_optimizer.h" |
| 6 | 6 |
| 7 #include "vm/bit_vector.h" | 7 #include "vm/bit_vector.h" |
| 8 #include "vm/cha.h" | 8 #include "vm/cha.h" |
| 9 #include "vm/cpu.h" | 9 #include "vm/cpu.h" |
| 10 #include "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" |
| (...skipping 5454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5465 | 5465 |
| 5466 enum Kind { | 5466 enum Kind { |
| 5467 kNoneAlias = -1, | 5467 kNoneAlias = -1, |
| 5468 kCurrentContextAlias = 0, | 5468 kCurrentContextAlias = 0, |
| 5469 kUnknownIndexAlias = 1, | 5469 kUnknownIndexAlias = 1, |
| 5470 kFieldAlias = 2, | 5470 kFieldAlias = 2, |
| 5471 kVMFieldAlias = 3, | 5471 kVMFieldAlias = 3, |
| 5472 kConstantIndex = 4, | 5472 kConstantIndex = 4, |
| 5473 kNumKinds = kConstantIndex + 1 | 5473 kNumKinds = kConstantIndex + 1 |
| 5474 }; | 5474 }; |
| 5475 COMPILE_ASSERT(kNumKinds < ((1 << kBitsForKind) - 1), InvalidBitFieldSize); | 5475 COMPILE_ASSERT(kNumKinds < ((1 << kBitsForKind) - 1)); |
| 5476 | 5476 |
| 5477 explicit Alias(intptr_t alias) : alias_(alias) { } | 5477 explicit Alias(intptr_t alias) : alias_(alias) { } |
| 5478 | 5478 |
| 5479 Alias(Kind kind, uword payload) | 5479 Alias(Kind kind, uword payload) |
| 5480 : alias_(KindField::encode(kind) | PayloadField::encode(payload)) { } | 5480 : alias_(KindField::encode(kind) | PayloadField::encode(payload)) { } |
| 5481 | 5481 |
| 5482 uword payload() const { | 5482 uword payload() const { |
| 5483 return PayloadField::decode(alias_); | 5483 return PayloadField::decode(alias_); |
| 5484 } | 5484 } |
| 5485 | 5485 |
| (...skipping 2092 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7578 } | 7578 } |
| 7579 } | 7579 } |
| 7580 | 7580 |
| 7581 | 7581 |
| 7582 class CSEInstructionMap : public ValueObject { | 7582 class CSEInstructionMap : public ValueObject { |
| 7583 public: | 7583 public: |
| 7584 // Right now CSE and LICM track a single effect: possible externalization of | 7584 // Right now CSE and LICM track a single effect: possible externalization of |
| 7585 // strings. | 7585 // strings. |
| 7586 // Other effects like modifications of fields are tracked in a separate load | 7586 // Other effects like modifications of fields are tracked in a separate load |
| 7587 // forwarding pass via Alias structure. | 7587 // forwarding pass via Alias structure. |
| 7588 COMPILE_ASSERT(EffectSet::kLastEffect == 1, single_effect_is_tracked); | 7588 COMPILE_ASSERT(EffectSet::kLastEffect == 1); |
| 7589 | 7589 |
| 7590 CSEInstructionMap() : independent_(), dependent_() { } | 7590 CSEInstructionMap() : independent_(), dependent_() { } |
| 7591 explicit CSEInstructionMap(const CSEInstructionMap& other) | 7591 explicit CSEInstructionMap(const CSEInstructionMap& other) |
| 7592 : ValueObject(), | 7592 : ValueObject(), |
| 7593 independent_(other.independent_), | 7593 independent_(other.independent_), |
| 7594 dependent_(other.dependent_) { | 7594 dependent_(other.dependent_) { |
| 7595 } | 7595 } |
| 7596 | 7596 |
| 7597 void RemoveAffected(EffectSet effects) { | 7597 void RemoveAffected(EffectSet effects) { |
| 7598 if (!effects.IsNone()) { | 7598 if (!effects.IsNone()) { |
| (...skipping 2247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9846 } | 9846 } |
| 9847 | 9847 |
| 9848 // Insert materializations at environment uses. | 9848 // Insert materializations at environment uses. |
| 9849 for (intptr_t i = 0; i < exits.length(); i++) { | 9849 for (intptr_t i = 0; i < exits.length(); i++) { |
| 9850 CreateMaterializationAt(exits[i], alloc, alloc->cls(), *slots); | 9850 CreateMaterializationAt(exits[i], alloc, alloc->cls(), *slots); |
| 9851 } | 9851 } |
| 9852 } | 9852 } |
| 9853 | 9853 |
| 9854 | 9854 |
| 9855 } // namespace dart | 9855 } // namespace dart |
| OLD | NEW |