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

Side by Side Diff: src/compiler/js-operator.cc

Issue 2729143002: [compiler] Simplify paramerters for spread call. (Closed)
Patch Set: Address nits. Created 3 years, 9 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/compiler/js-operator.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "src/compiler/js-operator.h" 5 #include "src/compiler/js-operator.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "src/base/lazy-instance.h" 9 #include "src/base/lazy-instance.h"
10 #include "src/compiler/opcodes.h" 10 #include "src/compiler/opcodes.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 69
70 std::ostream& operator<<(std::ostream& os, ConstructParameters const& p) { 70 std::ostream& operator<<(std::ostream& os, ConstructParameters const& p) {
71 return os << p.arity() << ", " << p.frequency(); 71 return os << p.arity() << ", " << p.frequency();
72 } 72 }
73 73
74 ConstructParameters const& ConstructParametersOf(Operator const* op) { 74 ConstructParameters const& ConstructParametersOf(Operator const* op) {
75 DCHECK_EQ(IrOpcode::kJSConstruct, op->opcode()); 75 DCHECK_EQ(IrOpcode::kJSConstruct, op->opcode());
76 return OpParameter<ConstructParameters>(op); 76 return OpParameter<ConstructParameters>(op);
77 } 77 }
78 78
79 bool operator==(ConstructWithSpreadParameters const& lhs, 79 bool operator==(SpreadWithArityParameters const& lhs,
80 ConstructWithSpreadParameters const& rhs) { 80 SpreadWithArityParameters const& rhs) {
81 return lhs.arity() == rhs.arity(); 81 return lhs.arity() == rhs.arity();
82 } 82 }
83 83
84 bool operator!=(ConstructWithSpreadParameters const& lhs, 84 bool operator!=(SpreadWithArityParameters const& lhs,
85 ConstructWithSpreadParameters const& rhs) { 85 SpreadWithArityParameters const& rhs) {
86 return !(lhs == rhs); 86 return !(lhs == rhs);
87 } 87 }
88 88
89 size_t hash_value(ConstructWithSpreadParameters const& p) { 89 size_t hash_value(SpreadWithArityParameters const& p) {
90 return base::hash_combine(p.arity()); 90 return base::hash_combine(p.arity());
91 } 91 }
92 92
93 std::ostream& operator<<(std::ostream& os, 93 std::ostream& operator<<(std::ostream& os, SpreadWithArityParameters const& p) {
94 ConstructWithSpreadParameters const& p) {
95 return os << p.arity(); 94 return os << p.arity();
96 } 95 }
97 96
98 ConstructWithSpreadParameters const& ConstructWithSpreadParametersOf( 97 SpreadWithArityParameters const& SpreadWithArityParametersOf(
99 Operator const* op) { 98 Operator const* op) {
100 DCHECK_EQ(IrOpcode::kJSConstructWithSpread, op->opcode()); 99 DCHECK(op->opcode() == IrOpcode::kJSConstructWithSpread ||
101 return OpParameter<ConstructWithSpreadParameters>(op); 100 op->opcode() == IrOpcode::kJSCallWithSpread);
101 return OpParameter<SpreadWithArityParameters>(op);
102 } 102 }
103 103
104 std::ostream& operator<<(std::ostream& os, CallParameters const& p) { 104 std::ostream& operator<<(std::ostream& os, CallParameters const& p) {
105 os << p.arity() << ", " << p.frequency() << ", " << p.convert_mode() << ", " 105 os << p.arity() << ", " << p.frequency() << ", " << p.convert_mode() << ", "
106 << p.tail_call_mode(); 106 << p.tail_call_mode();
107 return os; 107 return os;
108 } 108 }
109 109
110 const CallParameters& CallParametersOf(const Operator* op) { 110 const CallParameters& CallParametersOf(const Operator* op) {
111 DCHECK_EQ(IrOpcode::kJSCall, op->opcode()); 111 DCHECK_EQ(IrOpcode::kJSCall, op->opcode());
112 return OpParameter<CallParameters>(op); 112 return OpParameter<CallParameters>(op);
113 } 113 }
114 114
115 std::ostream& operator<<(std::ostream& os, 115 std::ostream& operator<<(std::ostream& os,
116 CallForwardVarargsParameters const& p) { 116 CallForwardVarargsParameters const& p) {
117 return os << p.start_index() << ", " << p.tail_call_mode(); 117 return os << p.start_index() << ", " << p.tail_call_mode();
118 } 118 }
119 119
120 CallForwardVarargsParameters const& CallForwardVarargsParametersOf( 120 CallForwardVarargsParameters const& CallForwardVarargsParametersOf(
121 Operator const* op) { 121 Operator const* op) {
122 DCHECK_EQ(IrOpcode::kJSCallForwardVarargs, op->opcode()); 122 DCHECK_EQ(IrOpcode::kJSCallForwardVarargs, op->opcode());
123 return OpParameter<CallForwardVarargsParameters>(op); 123 return OpParameter<CallForwardVarargsParameters>(op);
124 } 124 }
125 125
126 bool operator==(CallWithSpreadParameters const& lhs,
127 CallWithSpreadParameters const& rhs) {
128 return lhs.arity() == rhs.arity();
129 }
130
131 bool operator!=(CallWithSpreadParameters const& lhs,
132 CallWithSpreadParameters const& rhs) {
133 return !(lhs == rhs);
134 }
135
136 size_t hash_value(CallWithSpreadParameters const& p) {
137 return base::hash_combine(p.arity());
138 }
139
140 std::ostream& operator<<(std::ostream& os, CallWithSpreadParameters const& p) {
141 return os << p.arity();
142 }
143
144 CallWithSpreadParameters const& CallWithSpreadParametersOf(Operator const* op) {
145 DCHECK_EQ(IrOpcode::kJSCallWithSpread, op->opcode());
146 return OpParameter<CallWithSpreadParameters>(op);
147 }
148 126
149 bool operator==(CallRuntimeParameters const& lhs, 127 bool operator==(CallRuntimeParameters const& lhs,
150 CallRuntimeParameters const& rhs) { 128 CallRuntimeParameters const& rhs) {
151 return lhs.id() == rhs.id() && lhs.arity() == rhs.arity(); 129 return lhs.id() == rhs.id() && lhs.arity() == rhs.arity();
152 } 130 }
153 131
154 132
155 bool operator!=(CallRuntimeParameters const& lhs, 133 bool operator!=(CallRuntimeParameters const& lhs,
156 CallRuntimeParameters const& rhs) { 134 CallRuntimeParameters const& rhs) {
157 return !(lhs == rhs); 135 return !(lhs == rhs);
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
758 CallParameters parameters(arity, frequency, feedback, tail_call_mode, 736 CallParameters parameters(arity, frequency, feedback, tail_call_mode,
759 convert_mode); 737 convert_mode);
760 return new (zone()) Operator1<CallParameters>( // -- 738 return new (zone()) Operator1<CallParameters>( // --
761 IrOpcode::kJSCall, Operator::kNoProperties, // opcode 739 IrOpcode::kJSCall, Operator::kNoProperties, // opcode
762 "JSCall", // name 740 "JSCall", // name
763 parameters.arity(), 1, 1, 1, 1, 2, // inputs/outputs 741 parameters.arity(), 1, 1, 1, 1, 2, // inputs/outputs
764 parameters); // parameter 742 parameters); // parameter
765 } 743 }
766 744
767 const Operator* JSOperatorBuilder::CallWithSpread(uint32_t arity) { 745 const Operator* JSOperatorBuilder::CallWithSpread(uint32_t arity) {
768 CallWithSpreadParameters parameters(arity); 746 SpreadWithArityParameters parameters(arity);
769 return new (zone()) Operator1<CallWithSpreadParameters>( // -- 747 return new (zone()) Operator1<SpreadWithArityParameters>( // --
770 IrOpcode::kJSCallWithSpread, Operator::kNoProperties, // opcode 748 IrOpcode::kJSCallWithSpread, Operator::kNoProperties, // opcode
771 "JSCallWithSpread", // name 749 "JSCallWithSpread", // name
772 parameters.arity(), 1, 1, 1, 1, 2, // counts 750 parameters.arity(), 1, 1, 1, 1, 2, // counts
773 parameters); // parameter 751 parameters); // parameter
774 } 752 }
775 753
776 const Operator* JSOperatorBuilder::CallRuntime(Runtime::FunctionId id) { 754 const Operator* JSOperatorBuilder::CallRuntime(Runtime::FunctionId id) {
777 const Runtime::Function* f = Runtime::FunctionForId(id); 755 const Runtime::Function* f = Runtime::FunctionForId(id);
778 return CallRuntime(f, f->nargs); 756 return CallRuntime(f, f->nargs);
779 } 757 }
(...skipping 21 matching lines...) Expand all
801 VectorSlotPair const& feedback) { 779 VectorSlotPair const& feedback) {
802 ConstructParameters parameters(arity, frequency, feedback); 780 ConstructParameters parameters(arity, frequency, feedback);
803 return new (zone()) Operator1<ConstructParameters>( // -- 781 return new (zone()) Operator1<ConstructParameters>( // --
804 IrOpcode::kJSConstruct, Operator::kNoProperties, // opcode 782 IrOpcode::kJSConstruct, Operator::kNoProperties, // opcode
805 "JSConstruct", // name 783 "JSConstruct", // name
806 parameters.arity(), 1, 1, 1, 1, 2, // counts 784 parameters.arity(), 1, 1, 1, 1, 2, // counts
807 parameters); // parameter 785 parameters); // parameter
808 } 786 }
809 787
810 const Operator* JSOperatorBuilder::ConstructWithSpread(uint32_t arity) { 788 const Operator* JSOperatorBuilder::ConstructWithSpread(uint32_t arity) {
811 ConstructWithSpreadParameters parameters(arity); 789 SpreadWithArityParameters parameters(arity);
812 return new (zone()) Operator1<ConstructWithSpreadParameters>( // -- 790 return new (zone()) Operator1<SpreadWithArityParameters>( // --
813 IrOpcode::kJSConstructWithSpread, Operator::kNoProperties, // opcode 791 IrOpcode::kJSConstructWithSpread, Operator::kNoProperties, // opcode
814 "JSConstructWithSpread", // name 792 "JSConstructWithSpread", // name
815 parameters.arity(), 1, 1, 1, 1, 2, // counts 793 parameters.arity(), 1, 1, 1, 1, 2, // counts
816 parameters); // parameter 794 parameters); // parameter
817 } 795 }
818 796
819 const Operator* JSOperatorBuilder::ConvertReceiver( 797 const Operator* JSOperatorBuilder::ConvertReceiver(
820 ConvertReceiverMode convert_mode) { 798 ConvertReceiverMode convert_mode) {
821 return new (zone()) Operator1<ConvertReceiverMode>( // -- 799 return new (zone()) Operator1<ConvertReceiverMode>( // --
822 IrOpcode::kJSConvertReceiver, Operator::kEliminatable, // opcode 800 IrOpcode::kJSConvertReceiver, Operator::kEliminatable, // opcode
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
1077 return new (zone()) Operator1<Handle<ScopeInfo>>( // -- 1055 return new (zone()) Operator1<Handle<ScopeInfo>>( // --
1078 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode 1056 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode
1079 "JSCreateScriptContext", // name 1057 "JSCreateScriptContext", // name
1080 1, 1, 1, 1, 1, 2, // counts 1058 1, 1, 1, 1, 1, 2, // counts
1081 scope_info); // parameter 1059 scope_info); // parameter
1082 } 1060 }
1083 1061
1084 } // namespace compiler 1062 } // namespace compiler
1085 } // namespace internal 1063 } // namespace internal
1086 } // namespace v8 1064 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/js-operator.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698