Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: src/code-stub-assembler.h

Issue 2163253002: [stubs] Port store IC dispatcher to TurboFan. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressing comments Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/code-factory.cc ('k') | src/code-stub-assembler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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_CODE_STUB_ASSEMBLER_H_ 5 #ifndef V8_CODE_STUB_ASSEMBLER_H_
6 #define V8_CODE_STUB_ASSEMBLER_H_ 6 #define V8_CODE_STUB_ASSEMBLER_H_
7 7
8 #include <functional> 8 #include <functional>
9 9
10 #include "src/compiler/code-assembler.h" 10 #include "src/compiler/code-assembler.h"
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 LookupInHolder& lookup_property_in_holder, 624 LookupInHolder& lookup_property_in_holder,
625 LookupInHolder& lookup_element_in_holder, 625 LookupInHolder& lookup_element_in_holder,
626 Label* if_end, Label* if_bailout); 626 Label* if_end, Label* if_bailout);
627 627
628 // Instanceof helpers. 628 // Instanceof helpers.
629 // ES6 section 7.3.19 OrdinaryHasInstance (C, O) 629 // ES6 section 7.3.19 OrdinaryHasInstance (C, O)
630 compiler::Node* OrdinaryHasInstance(compiler::Node* context, 630 compiler::Node* OrdinaryHasInstance(compiler::Node* context,
631 compiler::Node* callable, 631 compiler::Node* callable,
632 compiler::Node* object); 632 compiler::Node* object);
633 633
634 // LoadIC helpers. 634 // Load/StoreIC helpers.
635 struct LoadICParameters { 635 struct LoadICParameters {
636 LoadICParameters(compiler::Node* context, compiler::Node* receiver, 636 LoadICParameters(compiler::Node* context, compiler::Node* receiver,
637 compiler::Node* name, compiler::Node* slot, 637 compiler::Node* name, compiler::Node* slot,
638 compiler::Node* vector) 638 compiler::Node* vector)
639 : context(context), 639 : context(context),
640 receiver(receiver), 640 receiver(receiver),
641 name(name), 641 name(name),
642 slot(slot), 642 slot(slot),
643 vector(vector) {} 643 vector(vector) {}
644 644
645 compiler::Node* context; 645 compiler::Node* context;
646 compiler::Node* receiver; 646 compiler::Node* receiver;
647 compiler::Node* name; 647 compiler::Node* name;
648 compiler::Node* slot; 648 compiler::Node* slot;
649 compiler::Node* vector; 649 compiler::Node* vector;
650 }; 650 };
651 651
652 struct StoreICParameters : public LoadICParameters {
653 StoreICParameters(compiler::Node* context, compiler::Node* receiver,
654 compiler::Node* name, compiler::Node* value,
655 compiler::Node* slot, compiler::Node* vector)
656 : LoadICParameters(context, receiver, name, slot, vector),
657 value(value) {}
658 compiler::Node* value;
659 };
660
652 // Load type feedback vector from the stub caller's frame. 661 // Load type feedback vector from the stub caller's frame.
653 compiler::Node* LoadTypeFeedbackVectorForStub(); 662 compiler::Node* LoadTypeFeedbackVectorForStub();
654 663
655 // Update the type feedback vector. 664 // Update the type feedback vector.
656 void UpdateFeedback(compiler::Node* feedback, 665 void UpdateFeedback(compiler::Node* feedback,
657 compiler::Node* type_feedback_vector, 666 compiler::Node* type_feedback_vector,
658 compiler::Node* slot_id); 667 compiler::Node* slot_id);
659 668
660 compiler::Node* LoadReceiverMap(compiler::Node* receiver); 669 compiler::Node* LoadReceiverMap(compiler::Node* receiver);
661 670
662 // Checks monomorphic case. Returns {feedback} entry of the vector. 671 // Checks monomorphic case. Returns {feedback} entry of the vector.
663 compiler::Node* TryMonomorphicCase(const LoadICParameters* p, 672 compiler::Node* TryMonomorphicCase(compiler::Node* slot,
673 compiler::Node* vector,
664 compiler::Node* receiver_map, 674 compiler::Node* receiver_map,
665 Label* if_handler, Variable* var_handler, 675 Label* if_handler, Variable* var_handler,
666 Label* if_miss); 676 Label* if_miss);
667 void HandlePolymorphicCase(const LoadICParameters* p, 677 void HandlePolymorphicCase(compiler::Node* receiver_map,
668 compiler::Node* receiver_map,
669 compiler::Node* feedback, Label* if_handler, 678 compiler::Node* feedback, Label* if_handler,
670 Variable* var_handler, Label* if_miss, 679 Variable* var_handler, Label* if_miss,
671 int unroll_count); 680 int unroll_count);
672 681
673 compiler::Node* StubCachePrimaryOffset(compiler::Node* name, 682 compiler::Node* StubCachePrimaryOffset(compiler::Node* name,
674 compiler::Node* map); 683 compiler::Node* map);
675 684
676 compiler::Node* StubCacheSecondaryOffset(compiler::Node* name, 685 compiler::Node* StubCacheSecondaryOffset(compiler::Node* name,
677 compiler::Node* seed); 686 compiler::Node* seed);
678 687
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 748
740 compiler::Node* CopyElementsOnWrite(compiler::Node* object, 749 compiler::Node* CopyElementsOnWrite(compiler::Node* object,
741 compiler::Node* elements, 750 compiler::Node* elements,
742 ElementsKind kind, compiler::Node* length, 751 ElementsKind kind, compiler::Node* length,
743 ParameterMode mode, Label* bailout); 752 ParameterMode mode, Label* bailout);
744 753
745 void LoadIC(const LoadICParameters* p); 754 void LoadIC(const LoadICParameters* p);
746 void LoadGlobalIC(const LoadICParameters* p); 755 void LoadGlobalIC(const LoadICParameters* p);
747 void KeyedLoadIC(const LoadICParameters* p); 756 void KeyedLoadIC(const LoadICParameters* p);
748 void KeyedLoadICGeneric(const LoadICParameters* p); 757 void KeyedLoadICGeneric(const LoadICParameters* p);
758 void StoreIC(const StoreICParameters* p);
749 759
750 void TransitionElementsKind(compiler::Node* object, compiler::Node* map, 760 void TransitionElementsKind(compiler::Node* object, compiler::Node* map,
751 ElementsKind from_kind, ElementsKind to_kind, 761 ElementsKind from_kind, ElementsKind to_kind,
752 bool is_jsarray, Label* bailout); 762 bool is_jsarray, Label* bailout);
753 763
754 void TrapAllocationMemento(compiler::Node* object, Label* memento_found); 764 void TrapAllocationMemento(compiler::Node* object, Label* memento_found);
755 765
756 compiler::Node* PageFromAddress(compiler::Node* address); 766 compiler::Node* PageFromAddress(compiler::Node* address);
757 767
758 // Get the enumerable length from |map| and return the result as a Smi. 768 // Get the enumerable length from |map| and return the result as a Smi.
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 Label* bailout); 853 Label* bailout);
844 854
845 static const int kElementLoopUnrollThreshold = 8; 855 static const int kElementLoopUnrollThreshold = 8;
846 }; 856 };
847 857
848 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags); 858 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags);
849 859
850 } // namespace internal 860 } // namespace internal
851 } // namespace v8 861 } // namespace v8
852 #endif // V8_CODE_STUB_ASSEMBLER_H_ 862 #endif // V8_CODE_STUB_ASSEMBLER_H_
OLDNEW
« no previous file with comments | « src/code-factory.cc ('k') | src/code-stub-assembler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698