| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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_TYPE_FEEDBACK_VECTOR_H_ | 5 #ifndef V8_TYPE_FEEDBACK_VECTOR_H_ |
| 6 #define V8_TYPE_FEEDBACK_VECTOR_H_ | 6 #define V8_TYPE_FEEDBACK_VECTOR_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "src/base/logging.h" | 10 #include "src/base/logging.h" |
| (...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 602 : FeedbackNexus( | 602 : FeedbackNexus( |
| 603 TypeFeedbackVector::DummyVector(isolate), | 603 TypeFeedbackVector::DummyVector(isolate), |
| 604 FeedbackVectorSlot(TypeFeedbackVector::kDummyStoreICSlot)) {} | 604 FeedbackVectorSlot(TypeFeedbackVector::kDummyStoreICSlot)) {} |
| 605 StoreICNexus(TypeFeedbackVector* vector, FeedbackVectorSlot slot) | 605 StoreICNexus(TypeFeedbackVector* vector, FeedbackVectorSlot slot) |
| 606 : FeedbackNexus(vector, slot) { | 606 : FeedbackNexus(vector, slot) { |
| 607 DCHECK_EQ(FeedbackVectorSlotKind::STORE_IC, vector->GetKind(slot)); | 607 DCHECK_EQ(FeedbackVectorSlotKind::STORE_IC, vector->GetKind(slot)); |
| 608 } | 608 } |
| 609 | 609 |
| 610 void Clear(Code* host); | 610 void Clear(Code* host); |
| 611 | 611 |
| 612 void ConfigureMonomorphic(Handle<Map> receiver_map, Handle<Object> handler); | 612 void ConfigureMonomorphic(Handle<Map> receiver_map, Handle<Code> handler); |
| 613 | 613 |
| 614 void ConfigurePolymorphic(MapHandleList* maps, | 614 void ConfigurePolymorphic(MapHandleList* maps, |
| 615 List<Handle<Object>>* handlers); | 615 List<Handle<Object>>* handlers); |
| 616 | 616 |
| 617 InlineCacheState StateFromFeedback() const override; | 617 InlineCacheState StateFromFeedback() const override; |
| 618 }; | 618 }; |
| 619 | 619 |
| 620 | 620 |
| 621 class KeyedStoreICNexus : public FeedbackNexus { | 621 class KeyedStoreICNexus : public FeedbackNexus { |
| 622 public: | 622 public: |
| 623 KeyedStoreICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorSlot slot) | 623 KeyedStoreICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorSlot slot) |
| 624 : FeedbackNexus(vector, slot) { | 624 : FeedbackNexus(vector, slot) { |
| 625 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_STORE_IC, vector->GetKind(slot)); | 625 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_STORE_IC, vector->GetKind(slot)); |
| 626 } | 626 } |
| 627 explicit KeyedStoreICNexus(Isolate* isolate) | 627 explicit KeyedStoreICNexus(Isolate* isolate) |
| 628 : FeedbackNexus( | 628 : FeedbackNexus( |
| 629 TypeFeedbackVector::DummyVector(isolate), | 629 TypeFeedbackVector::DummyVector(isolate), |
| 630 FeedbackVectorSlot(TypeFeedbackVector::kDummyKeyedStoreICSlot)) {} | 630 FeedbackVectorSlot(TypeFeedbackVector::kDummyKeyedStoreICSlot)) {} |
| 631 KeyedStoreICNexus(TypeFeedbackVector* vector, FeedbackVectorSlot slot) | 631 KeyedStoreICNexus(TypeFeedbackVector* vector, FeedbackVectorSlot slot) |
| 632 : FeedbackNexus(vector, slot) { | 632 : FeedbackNexus(vector, slot) { |
| 633 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_STORE_IC, vector->GetKind(slot)); | 633 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_STORE_IC, vector->GetKind(slot)); |
| 634 } | 634 } |
| 635 | 635 |
| 636 void Clear(Code* host); | 636 void Clear(Code* host); |
| 637 | 637 |
| 638 // name can be a null handle for element loads. | 638 // name can be a null handle for element loads. |
| 639 void ConfigureMonomorphic(Handle<Name> name, Handle<Map> receiver_map, | 639 void ConfigureMonomorphic(Handle<Name> name, Handle<Map> receiver_map, |
| 640 Handle<Object> handler); | 640 Handle<Code> handler); |
| 641 // name can be null. | 641 // name can be null. |
| 642 void ConfigurePolymorphic(Handle<Name> name, MapHandleList* maps, | 642 void ConfigurePolymorphic(Handle<Name> name, MapHandleList* maps, |
| 643 List<Handle<Object>>* handlers); | 643 List<Handle<Object>>* handlers); |
| 644 void ConfigurePolymorphic(MapHandleList* maps, | 644 void ConfigurePolymorphic(MapHandleList* maps, |
| 645 MapHandleList* transitioned_maps, | 645 MapHandleList* transitioned_maps, |
| 646 CodeHandleList* handlers); | 646 CodeHandleList* handlers); |
| 647 void ConfigureMegamorphicKeyed(IcCheckType property_type); | 647 void ConfigureMegamorphicKeyed(IcCheckType property_type); |
| 648 | 648 |
| 649 KeyedAccessStoreMode GetKeyedAccessStoreMode() const; | 649 KeyedAccessStoreMode GetKeyedAccessStoreMode() const; |
| 650 IcCheckType GetKeyType() const; | 650 IcCheckType GetKeyType() const; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 715 } | 715 } |
| 716 }; | 716 }; |
| 717 | 717 |
| 718 inline BinaryOperationHint BinaryOperationHintFromFeedback(int type_feedback); | 718 inline BinaryOperationHint BinaryOperationHintFromFeedback(int type_feedback); |
| 719 inline CompareOperationHint CompareOperationHintFromFeedback(int type_feedback); | 719 inline CompareOperationHint CompareOperationHintFromFeedback(int type_feedback); |
| 720 | 720 |
| 721 } // namespace internal | 721 } // namespace internal |
| 722 } // namespace v8 | 722 } // namespace v8 |
| 723 | 723 |
| 724 #endif // V8_TRANSITIONS_H_ | 724 #endif // V8_TRANSITIONS_H_ |
| OLD | NEW |