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<Code> handler); | 612 void ConfigureMonomorphic(Handle<Map> receiver_map, Handle<Object> 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<Code> handler); | 640 Handle<Object> 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 |