| OLD | NEW |
| 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_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 5 #ifndef V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
| 6 #define V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 6 #define V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
| 7 | 7 |
| 8 #include <cstring> | 8 #include <cstring> |
| 9 #include <iosfwd> | 9 #include <iosfwd> |
| 10 | 10 |
| (...skipping 2143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2154 | 2154 |
| 2155 template <int V> | 2155 template <int V> |
| 2156 class HCall : public HTemplateInstruction<V> { | 2156 class HCall : public HTemplateInstruction<V> { |
| 2157 public: | 2157 public: |
| 2158 // The argument count includes the receiver. | 2158 // The argument count includes the receiver. |
| 2159 explicit HCall<V>(int argument_count) : argument_count_(argument_count) { | 2159 explicit HCall<V>(int argument_count) : argument_count_(argument_count) { |
| 2160 this->set_representation(Representation::Tagged()); | 2160 this->set_representation(Representation::Tagged()); |
| 2161 this->SetAllSideEffects(); | 2161 this->SetAllSideEffects(); |
| 2162 } | 2162 } |
| 2163 | 2163 |
| 2164 HType CalculateInferredType() final { return HType::Tagged(); } | |
| 2165 | |
| 2166 virtual int argument_count() const { | 2164 virtual int argument_count() const { |
| 2167 return argument_count_; | 2165 return argument_count_; |
| 2168 } | 2166 } |
| 2169 | 2167 |
| 2170 int argument_delta() const override { return -argument_count(); } | 2168 int argument_delta() const override { return -argument_count(); } |
| 2171 | 2169 |
| 2172 private: | 2170 private: |
| 2173 int argument_count_; | 2171 int argument_count_; |
| 2174 }; | 2172 }; |
| 2175 | 2173 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2233 return Representation::Tagged(); | 2231 return Representation::Tagged(); |
| 2234 } else { | 2232 } else { |
| 2235 int par_index = index - 2; | 2233 int par_index = index - 2; |
| 2236 DCHECK(par_index < GetParameterCount()); | 2234 DCHECK(par_index < GetParameterCount()); |
| 2237 return RepresentationFromType(descriptor_.GetParameterType(par_index)); | 2235 return RepresentationFromType(descriptor_.GetParameterType(par_index)); |
| 2238 } | 2236 } |
| 2239 } | 2237 } |
| 2240 | 2238 |
| 2241 DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor) | 2239 DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor) |
| 2242 | 2240 |
| 2243 HType CalculateInferredType() final { return HType::Tagged(); } | |
| 2244 | |
| 2245 // Defines whether this instruction corresponds to a JS call at tail position. | 2241 // Defines whether this instruction corresponds to a JS call at tail position. |
| 2246 TailCallMode syntactic_tail_call_mode() const { | 2242 TailCallMode syntactic_tail_call_mode() const { |
| 2247 return SyntacticTailCallModeField::decode(bit_field_); | 2243 return SyntacticTailCallModeField::decode(bit_field_); |
| 2248 } | 2244 } |
| 2249 | 2245 |
| 2250 // Defines whether this call should be generated as a tail call. | 2246 // Defines whether this call should be generated as a tail call. |
| 2251 TailCallMode tail_call_mode() const { | 2247 TailCallMode tail_call_mode() const { |
| 2252 return TailCallModeField::decode(bit_field_); | 2248 return TailCallModeField::decode(bit_field_); |
| 2253 } | 2249 } |
| 2254 bool IsTailCall() const { return tail_call_mode() == TailCallMode::kAllow; } | 2250 bool IsTailCall() const { return tail_call_mode() == TailCallMode::kAllow; } |
| (...skipping 4909 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7164 bool IsDeletable() const override { return true; } | 7160 bool IsDeletable() const override { return true; } |
| 7165 }; | 7161 }; |
| 7166 | 7162 |
| 7167 #undef DECLARE_INSTRUCTION | 7163 #undef DECLARE_INSTRUCTION |
| 7168 #undef DECLARE_CONCRETE_INSTRUCTION | 7164 #undef DECLARE_CONCRETE_INSTRUCTION |
| 7169 | 7165 |
| 7170 } // namespace internal | 7166 } // namespace internal |
| 7171 } // namespace v8 | 7167 } // namespace v8 |
| 7172 | 7168 |
| 7173 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 7169 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
| OLD | NEW |