OLD | NEW |
---|---|
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
666 | LengthBits::encode(length_); | 666 | LengthBits::encode(length_); |
667 } | 667 } |
668 }; | 668 }; |
669 | 669 |
670 | 670 |
671 class FastCloneShallowObjectStub : public HydrogenCodeStub { | 671 class FastCloneShallowObjectStub : public HydrogenCodeStub { |
672 public: | 672 public: |
673 // Maximum number of properties in copied object. | 673 // Maximum number of properties in copied object. |
674 static const int kMaximumClonedProperties = 6; | 674 static const int kMaximumClonedProperties = 6; |
675 | 675 |
676 explicit FastCloneShallowObjectStub(int length) | 676 FastCloneShallowObjectStub(AllocationSiteMode allocation_site_mode, |
Michael Starzinger
2013/10/10 13:27:39
As discussed offline: I don't think it makes much
mvstanton
2013/10/10 14:09:04
Good comment, I added FLAG_allocation_site_pretenu
| |
677 : length_(length) { | 677 int length) |
678 : allocation_site_mode_(allocation_site_mode), | |
679 length_(length) { | |
678 ASSERT_GE(length_, 0); | 680 ASSERT_GE(length_, 0); |
679 ASSERT_LE(length_, kMaximumClonedProperties); | 681 ASSERT_LE(length_, kMaximumClonedProperties); |
680 } | 682 } |
681 | 683 |
682 int length() const { return length_; } | 684 int length() const { return length_; } |
685 AllocationSiteMode allocation_site_mode() const { | |
686 return allocation_site_mode_; | |
687 } | |
683 | 688 |
684 virtual Handle<Code> GenerateCode(Isolate* isolate); | 689 virtual Handle<Code> GenerateCode(Isolate* isolate); |
685 | 690 |
686 virtual void InitializeInterfaceDescriptor( | 691 virtual void InitializeInterfaceDescriptor( |
687 Isolate* isolate, | 692 Isolate* isolate, |
688 CodeStubInterfaceDescriptor* descriptor); | 693 CodeStubInterfaceDescriptor* descriptor); |
689 | 694 |
690 private: | 695 private: |
696 AllocationSiteMode allocation_site_mode_; | |
691 int length_; | 697 int length_; |
692 | 698 |
699 class AllocationSiteModeBits: public BitField<AllocationSiteMode, 0, 1> {}; | |
700 class LengthBits: public BitField<int, 1, 4> {}; | |
701 // Ensure data fits within available bits. | |
702 STATIC_ASSERT(LAST_ALLOCATION_SITE_MODE == 1); | |
703 STATIC_ASSERT(kMaximumClonedProperties < 16); | |
704 | |
693 Major MajorKey() { return FastCloneShallowObject; } | 705 Major MajorKey() { return FastCloneShallowObject; } |
694 int NotMissMinorKey() { return length_; } | 706 int NotMissMinorKey() { |
707 return AllocationSiteModeBits::encode(allocation_site_mode_) | |
708 | LengthBits::encode(length_); | |
709 } | |
695 | 710 |
696 DISALLOW_COPY_AND_ASSIGN(FastCloneShallowObjectStub); | 711 DISALLOW_COPY_AND_ASSIGN(FastCloneShallowObjectStub); |
697 }; | 712 }; |
698 | 713 |
699 | 714 |
700 class CreateAllocationSiteStub : public HydrogenCodeStub { | 715 class CreateAllocationSiteStub : public HydrogenCodeStub { |
701 public: | 716 public: |
702 explicit CreateAllocationSiteStub() { } | 717 explicit CreateAllocationSiteStub() { } |
703 | 718 |
704 virtual Handle<Code> GenerateCode(Isolate* isolate); | 719 virtual Handle<Code> GenerateCode(Isolate* isolate); |
(...skipping 1651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2356 int MinorKey() { return 0; } | 2371 int MinorKey() { return 0; } |
2357 | 2372 |
2358 void Generate(MacroAssembler* masm); | 2373 void Generate(MacroAssembler* masm); |
2359 | 2374 |
2360 DISALLOW_COPY_AND_ASSIGN(ProfileEntryHookStub); | 2375 DISALLOW_COPY_AND_ASSIGN(ProfileEntryHookStub); |
2361 }; | 2376 }; |
2362 | 2377 |
2363 } } // namespace v8::internal | 2378 } } // namespace v8::internal |
2364 | 2379 |
2365 #endif // V8_CODE_STUBS_H_ | 2380 #endif // V8_CODE_STUBS_H_ |
OLD | NEW |