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

Side by Side Diff: src/hydrogen-instructions.h

Issue 296113008: Allow HPushArgument to handle more than one argument. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebase, and use int instead of unsigned Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « src/hydrogen.cc ('k') | src/hydrogen-instructions.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_HYDROGEN_INSTRUCTIONS_H_ 5 #ifndef V8_HYDROGEN_INSTRUCTIONS_H_
6 #define V8_HYDROGEN_INSTRUCTIONS_H_ 6 #define V8_HYDROGEN_INSTRUCTIONS_H_
7 7
8 #include "v8.h" 8 #include "v8.h"
9 9
10 #include "allocation.h" 10 #include "allocation.h"
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 V(LoadNamedGeneric) \ 120 V(LoadNamedGeneric) \
121 V(LoadRoot) \ 121 V(LoadRoot) \
122 V(MapEnumLength) \ 122 V(MapEnumLength) \
123 V(MathFloorOfDiv) \ 123 V(MathFloorOfDiv) \
124 V(MathMinMax) \ 124 V(MathMinMax) \
125 V(Mod) \ 125 V(Mod) \
126 V(Mul) \ 126 V(Mul) \
127 V(OsrEntry) \ 127 V(OsrEntry) \
128 V(Parameter) \ 128 V(Parameter) \
129 V(Power) \ 129 V(Power) \
130 V(PushArgument) \ 130 V(PushArguments) \
131 V(RegExpLiteral) \ 131 V(RegExpLiteral) \
132 V(Return) \ 132 V(Return) \
133 V(Ror) \ 133 V(Ror) \
134 V(Sar) \ 134 V(Sar) \
135 V(SeqStringGetChar) \ 135 V(SeqStringGetChar) \
136 V(SeqStringSetChar) \ 136 V(SeqStringSetChar) \
137 V(Shl) \ 137 V(Shl) \
138 V(Shr) \ 138 V(Shr) \
139 V(Simulate) \ 139 V(Simulate) \
140 V(StackCheck) \ 140 V(StackCheck) \
(...skipping 2027 matching lines...) Expand 10 before | Expand all | Expand 10 after
2168 } 2168 }
2169 2169
2170 DECLARE_CONCRETE_INSTRUCTION(LeaveInlined) 2170 DECLARE_CONCRETE_INSTRUCTION(LeaveInlined)
2171 2171
2172 private: 2172 private:
2173 HEnterInlined* entry_; 2173 HEnterInlined* entry_;
2174 int drop_count_; 2174 int drop_count_;
2175 }; 2175 };
2176 2176
2177 2177
2178 class HPushArgument V8_FINAL : public HUnaryOperation { 2178 class HPushArguments V8_FINAL : public HInstruction {
2179 public: 2179 public:
2180 DECLARE_INSTRUCTION_FACTORY_P1(HPushArgument, HValue*); 2180 DECLARE_INSTRUCTION_FACTORY_P1(HPushArguments, Zone*);
2181 DECLARE_INSTRUCTION_FACTORY_P2(HPushArguments, Zone*, HValue*);
2182 DECLARE_INSTRUCTION_FACTORY_P3(HPushArguments, Zone*, HValue*, HValue*);
2183 DECLARE_INSTRUCTION_FACTORY_P4(HPushArguments, Zone*,
2184 HValue*, HValue*, HValue*);
2185 DECLARE_INSTRUCTION_FACTORY_P5(HPushArguments, Zone*,
2186 HValue*, HValue*, HValue*, HValue*);
2181 2187
2182 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { 2188 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
2183 return Representation::Tagged(); 2189 return Representation::Tagged();
2184 } 2190 }
2185 2191
2186 virtual int argument_delta() const V8_OVERRIDE { return 1; } 2192 virtual int argument_delta() const V8_OVERRIDE { return inputs_.length(); }
2187 HValue* argument() { return OperandAt(0); } 2193 HValue* argument(int i) { return OperandAt(i); }
2188 2194
2189 DECLARE_CONCRETE_INSTRUCTION(PushArgument) 2195 virtual int OperandCount() V8_FINAL V8_OVERRIDE { return inputs_.length(); }
2196 virtual HValue* OperandAt(int i) const V8_FINAL V8_OVERRIDE {
2197 return inputs_[i];
2198 }
2199
2200 void AddArgument(HValue* arg) {
2201 inputs_.Add(NULL, zone_);
2202 SetOperandAt(inputs_.length() - 1, arg);
2203 }
2204
2205 DECLARE_CONCRETE_INSTRUCTION(PushArguments)
2206
2207 protected:
2208 virtual void InternalSetOperandAt(int i, HValue* value) V8_FINAL V8_OVERRIDE {
2209 inputs_[i] = value;
2210 }
2190 2211
2191 private: 2212 private:
2192 explicit HPushArgument(HValue* value) : HUnaryOperation(value) { 2213 HPushArguments(Zone* zone,
2214 HValue* arg1 = NULL, HValue* arg2 = NULL,
2215 HValue* arg3 = NULL, HValue* arg4 = NULL)
2216 : HInstruction(HType::Tagged()), zone_(zone), inputs_(4, zone) {
2193 set_representation(Representation::Tagged()); 2217 set_representation(Representation::Tagged());
2218 if (arg1) {
2219 inputs_.Add(NULL, zone);
2220 SetOperandAt(0, arg1);
2221 }
2222 if (arg2) {
2223 inputs_.Add(NULL, zone);
2224 SetOperandAt(1, arg2);
2225 }
2226 if (arg3) {
2227 inputs_.Add(NULL, zone);
2228 SetOperandAt(2, arg3);
2229 }
2230 if (arg4) {
2231 inputs_.Add(NULL, zone);
2232 SetOperandAt(3, arg4);
2233 }
2194 } 2234 }
2235
2236 Zone* zone_;
2237 ZoneList<HValue*> inputs_;
2195 }; 2238 };
2196 2239
2197 2240
2198 class HThisFunction V8_FINAL : public HTemplateInstruction<0> { 2241 class HThisFunction V8_FINAL : public HTemplateInstruction<0> {
2199 public: 2242 public:
2200 DECLARE_INSTRUCTION_FACTORY_P0(HThisFunction); 2243 DECLARE_INSTRUCTION_FACTORY_P0(HThisFunction);
2201 2244
2202 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { 2245 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
2203 return Representation::None(); 2246 return Representation::None();
2204 } 2247 }
(...skipping 5550 matching lines...) Expand 10 before | Expand all | Expand 10 after
7755 virtual bool IsDeletable() const V8_OVERRIDE { return true; } 7798 virtual bool IsDeletable() const V8_OVERRIDE { return true; }
7756 }; 7799 };
7757 7800
7758 7801
7759 #undef DECLARE_INSTRUCTION 7802 #undef DECLARE_INSTRUCTION
7760 #undef DECLARE_CONCRETE_INSTRUCTION 7803 #undef DECLARE_CONCRETE_INSTRUCTION
7761 7804
7762 } } // namespace v8::internal 7805 } } // namespace v8::internal
7763 7806
7764 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 7807 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW
« no previous file with comments | « src/hydrogen.cc ('k') | src/hydrogen-instructions.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698