| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_LITHIUM_H_ | 5 #ifndef V8_LITHIUM_H_ |
| 6 #define V8_LITHIUM_H_ | 6 #define V8_LITHIUM_H_ |
| 7 | 7 |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "allocation.h" | 10 #include "allocation.h" |
| (...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 645 inlined_closures_.Add(closure, zone()); | 645 inlined_closures_.Add(closure, zone()); |
| 646 } | 646 } |
| 647 | 647 |
| 648 void AddDeprecationDependency(Handle<Map> map) { | 648 void AddDeprecationDependency(Handle<Map> map) { |
| 649 ASSERT(!map->is_deprecated()); | 649 ASSERT(!map->is_deprecated()); |
| 650 if (!map->CanBeDeprecated()) return; | 650 if (!map->CanBeDeprecated()) return; |
| 651 ASSERT(!info_->IsStub()); | 651 ASSERT(!info_->IsStub()); |
| 652 deprecation_dependencies_.insert(map); | 652 deprecation_dependencies_.insert(map); |
| 653 } | 653 } |
| 654 | 654 |
| 655 void AddStabilityDependency(Handle<Map> map) { |
| 656 ASSERT(map->is_stable()); |
| 657 if (!map->CanTransition()) return; |
| 658 ASSERT(!info_->IsStub()); |
| 659 stability_dependencies_.insert(map); |
| 660 } |
| 661 |
| 655 Zone* zone() const { return info_->zone(); } | 662 Zone* zone() const { return info_->zone(); } |
| 656 | 663 |
| 657 Handle<Code> Codegen(); | 664 Handle<Code> Codegen(); |
| 658 | 665 |
| 659 void set_allocated_double_registers(BitVector* allocated_registers); | 666 void set_allocated_double_registers(BitVector* allocated_registers); |
| 660 BitVector* allocated_double_registers() { | 667 BitVector* allocated_double_registers() { |
| 661 return allocated_double_registers_; | 668 return allocated_double_registers_; |
| 662 } | 669 } |
| 663 | 670 |
| 664 protected: | 671 protected: |
| 665 LChunk(CompilationInfo* info, HGraph* graph); | 672 LChunk(CompilationInfo* info, HGraph* graph); |
| 666 | 673 |
| 667 int spill_slot_count_; | 674 int spill_slot_count_; |
| 668 | 675 |
| 669 private: | 676 private: |
| 670 typedef std::less<Handle<Map> > MapLess; | 677 typedef std::less<Handle<Map> > MapLess; |
| 671 typedef zone_allocator<Handle<Map> > MapAllocator; | 678 typedef zone_allocator<Handle<Map> > MapAllocator; |
| 672 typedef std::set<Handle<Map>, MapLess, MapAllocator> MapSet; | 679 typedef std::set<Handle<Map>, MapLess, MapAllocator> MapSet; |
| 673 | 680 |
| 674 void CommitDependencies(Handle<Code> code) const; | 681 void CommitDependencies(Handle<Code> code) const; |
| 675 | 682 |
| 676 CompilationInfo* info_; | 683 CompilationInfo* info_; |
| 677 HGraph* const graph_; | 684 HGraph* const graph_; |
| 678 BitVector* allocated_double_registers_; | 685 BitVector* allocated_double_registers_; |
| 679 ZoneList<LInstruction*> instructions_; | 686 ZoneList<LInstruction*> instructions_; |
| 680 ZoneList<LPointerMap*> pointer_maps_; | 687 ZoneList<LPointerMap*> pointer_maps_; |
| 681 ZoneList<Handle<JSFunction> > inlined_closures_; | 688 ZoneList<Handle<JSFunction> > inlined_closures_; |
| 682 MapSet deprecation_dependencies_; | 689 MapSet deprecation_dependencies_; |
| 690 MapSet stability_dependencies_; |
| 683 }; | 691 }; |
| 684 | 692 |
| 685 | 693 |
| 686 class LChunkBuilderBase BASE_EMBEDDED { | 694 class LChunkBuilderBase BASE_EMBEDDED { |
| 687 public: | 695 public: |
| 688 explicit LChunkBuilderBase(Zone* zone) | 696 explicit LChunkBuilderBase(Zone* zone) |
| 689 : argument_count_(0), | 697 : argument_count_(0), |
| 690 zone_(zone) { } | 698 zone_(zone) { } |
| 691 | 699 |
| 692 virtual ~LChunkBuilderBase() { } | 700 virtual ~LChunkBuilderBase() { } |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 730 private: | 738 private: |
| 731 LChunk* chunk_; | 739 LChunk* chunk_; |
| 732 | 740 |
| 733 DISALLOW_COPY_AND_ASSIGN(LPhase); | 741 DISALLOW_COPY_AND_ASSIGN(LPhase); |
| 734 }; | 742 }; |
| 735 | 743 |
| 736 | 744 |
| 737 } } // namespace v8::internal | 745 } } // namespace v8::internal |
| 738 | 746 |
| 739 #endif // V8_LITHIUM_H_ | 747 #endif // V8_LITHIUM_H_ |
| OLD | NEW |