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

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

Issue 309763003: Fix HPushArguments instruction. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 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 2044 matching lines...) Expand 10 before | Expand all | Expand 10 after
2055 DECLARE_CONCRETE_INSTRUCTION(LeaveInlined) 2055 DECLARE_CONCRETE_INSTRUCTION(LeaveInlined)
2056 2056
2057 private: 2057 private:
2058 HEnterInlined* entry_; 2058 HEnterInlined* entry_;
2059 int drop_count_; 2059 int drop_count_;
2060 }; 2060 };
2061 2061
2062 2062
2063 class HPushArguments V8_FINAL : public HInstruction { 2063 class HPushArguments V8_FINAL : public HInstruction {
2064 public: 2064 public:
2065 DECLARE_INSTRUCTION_FACTORY_P1(HPushArguments, Zone*); 2065 static HPushArguments* New(Zone* zone, HValue* context) {
2066 DECLARE_INSTRUCTION_FACTORY_P2(HPushArguments, Zone*, HValue*); 2066 return new(zone) HPushArguments(zone);
2067 DECLARE_INSTRUCTION_FACTORY_P3(HPushArguments, Zone*, HValue*, HValue*); 2067 }
2068 DECLARE_INSTRUCTION_FACTORY_P4(HPushArguments, Zone*, 2068 static HPushArguments* New(Zone* zone, HValue* context, HValue* arg1) {
2069 HValue*, HValue*, HValue*); 2069 HPushArguments* instr = new(zone) HPushArguments(zone);
2070 DECLARE_INSTRUCTION_FACTORY_P5(HPushArguments, Zone*, 2070 instr->AddInput(arg1);
2071 HValue*, HValue*, HValue*, HValue*); 2071 return instr;
2072 }
2073 static HPushArguments* New(Zone* zone, HValue* context, HValue* arg1,
2074 HValue* arg2) {
2075 HPushArguments* instr = new(zone) HPushArguments(zone);
2076 instr->AddInput(arg1);
2077 instr->AddInput(arg2);
2078 return instr;
2079 }
2080 static HPushArguments* New(Zone* zone, HValue* context, HValue* arg1,
2081 HValue* arg2, HValue* arg3) {
2082 HPushArguments* instr = new(zone) HPushArguments(zone);
2083 instr->AddInput(arg1);
2084 instr->AddInput(arg2);
2085 instr->AddInput(arg3);
2086 return instr;
2087 }
2088 static HPushArguments* New(Zone* zone, HValue* context, HValue* arg1,
2089 HValue* arg2, HValue* arg3, HValue* arg4) {
2090 HPushArguments* instr = new(zone) HPushArguments(zone);
2091 instr->AddInput(arg1);
2092 instr->AddInput(arg2);
2093 instr->AddInput(arg3);
2094 instr->AddInput(arg4);
2095 return instr;
2096 }
2072 2097
2073 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { 2098 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
2074 return Representation::Tagged(); 2099 return Representation::Tagged();
2075 } 2100 }
2076 2101
2077 virtual int argument_delta() const V8_OVERRIDE { return inputs_.length(); } 2102 virtual int argument_delta() const V8_OVERRIDE { return inputs_.length(); }
2078 HValue* argument(int i) { return OperandAt(i); } 2103 HValue* argument(int i) { return OperandAt(i); }
2079 2104
2080 virtual int OperandCount() V8_FINAL V8_OVERRIDE { return inputs_.length(); } 2105 virtual int OperandCount() V8_FINAL V8_OVERRIDE { return inputs_.length(); }
2081 virtual HValue* OperandAt(int i) const V8_FINAL V8_OVERRIDE { 2106 virtual HValue* OperandAt(int i) const V8_FINAL V8_OVERRIDE {
2082 return inputs_[i]; 2107 return inputs_[i];
2083 } 2108 }
2084 2109
2085 void AddArgument(HValue* arg) { 2110 void AddInput(HValue* value);
2086 inputs_.Add(NULL, zone_);
2087 SetOperandAt(inputs_.length() - 1, arg);
2088 }
2089 2111
2090 DECLARE_CONCRETE_INSTRUCTION(PushArguments) 2112 DECLARE_CONCRETE_INSTRUCTION(PushArguments)
2091 2113
2092 protected: 2114 protected:
2093 virtual void InternalSetOperandAt(int i, HValue* value) V8_FINAL V8_OVERRIDE { 2115 virtual void InternalSetOperandAt(int i, HValue* value) V8_FINAL V8_OVERRIDE {
2094 inputs_[i] = value; 2116 inputs_[i] = value;
2095 } 2117 }
2096 2118
2097 private: 2119 private:
2098 HPushArguments(Zone* zone, 2120 explicit HPushArguments(Zone* zone)
2099 HValue* arg1 = NULL, HValue* arg2 = NULL, 2121 : HInstruction(HType::Tagged()), inputs_(4, zone) {
2100 HValue* arg3 = NULL, HValue* arg4 = NULL)
2101 : HInstruction(HType::Tagged()), zone_(zone), inputs_(4, zone) {
2102 set_representation(Representation::Tagged()); 2122 set_representation(Representation::Tagged());
2103 if (arg1) {
2104 inputs_.Add(NULL, zone);
2105 SetOperandAt(0, arg1);
2106 }
2107 if (arg2) {
2108 inputs_.Add(NULL, zone);
2109 SetOperandAt(1, arg2);
2110 }
2111 if (arg3) {
2112 inputs_.Add(NULL, zone);
2113 SetOperandAt(2, arg3);
2114 }
2115 if (arg4) {
2116 inputs_.Add(NULL, zone);
2117 SetOperandAt(3, arg4);
2118 }
2119 } 2123 }
2120 2124
2121 Zone* zone_;
2122 ZoneList<HValue*> inputs_; 2125 ZoneList<HValue*> inputs_;
2123 }; 2126 };
2124 2127
2125 2128
2126 class HThisFunction V8_FINAL : public HTemplateInstruction<0> { 2129 class HThisFunction V8_FINAL : public HTemplateInstruction<0> {
2127 public: 2130 public:
2128 DECLARE_INSTRUCTION_FACTORY_P0(HThisFunction); 2131 DECLARE_INSTRUCTION_FACTORY_P0(HThisFunction);
2129 2132
2130 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { 2133 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
2131 return Representation::None(); 2134 return Representation::None();
(...skipping 5582 matching lines...) Expand 10 before | Expand all | Expand 10 after
7714 virtual bool IsDeletable() const V8_OVERRIDE { return true; } 7717 virtual bool IsDeletable() const V8_OVERRIDE { return true; }
7715 }; 7718 };
7716 7719
7717 7720
7718 #undef DECLARE_INSTRUCTION 7721 #undef DECLARE_INSTRUCTION
7719 #undef DECLARE_CONCRETE_INSTRUCTION 7722 #undef DECLARE_CONCRETE_INSTRUCTION
7720 7723
7721 } } // namespace v8::internal 7724 } } // namespace v8::internal
7722 7725
7723 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 7726 #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