| OLD | NEW | 
|---|
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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_COMPILER_JS_OPERATOR_H_ | 5 #ifndef V8_COMPILER_JS_OPERATOR_H_ | 
| 6 #define V8_COMPILER_JS_OPERATOR_H_ | 6 #define V8_COMPILER_JS_OPERATOR_H_ | 
| 7 | 7 | 
| 8 #include "src/base/compiler-specific.h" | 8 #include "src/base/compiler-specific.h" | 
| 9 #include "src/globals.h" | 9 #include "src/globals.h" | 
| 10 #include "src/runtime/runtime.h" | 10 #include "src/runtime/runtime.h" | 
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 140 | 140 | 
| 141   uint32_t const bit_field_; | 141   uint32_t const bit_field_; | 
| 142 }; | 142 }; | 
| 143 | 143 | 
| 144 std::ostream& operator<<(std::ostream&, CallForwardVarargsParameters const&); | 144 std::ostream& operator<<(std::ostream&, CallForwardVarargsParameters const&); | 
| 145 | 145 | 
| 146 CallForwardVarargsParameters const& CallForwardVarargsParametersOf( | 146 CallForwardVarargsParameters const& CallForwardVarargsParametersOf( | 
| 147     Operator const*) WARN_UNUSED_RESULT; | 147     Operator const*) WARN_UNUSED_RESULT; | 
| 148 | 148 | 
| 149 // Defines the arity and the call flags for a JavaScript function call. This is | 149 // Defines the arity and the call flags for a JavaScript function call. This is | 
| 150 // used as a parameter by JSCallFunction operators. | 150 // used as a parameter by JSCall operators. | 
| 151 class CallFunctionParameters final { | 151 class CallParameters final { | 
| 152  public: | 152  public: | 
| 153   CallFunctionParameters(size_t arity, float frequency, | 153   CallParameters(size_t arity, float frequency, VectorSlotPair const& feedback, | 
| 154                          VectorSlotPair const& feedback, | 154                  TailCallMode tail_call_mode, ConvertReceiverMode convert_mode) | 
| 155                          TailCallMode tail_call_mode, |  | 
| 156                          ConvertReceiverMode convert_mode) |  | 
| 157       : bit_field_(ArityField::encode(arity) | | 155       : bit_field_(ArityField::encode(arity) | | 
| 158                    ConvertReceiverModeField::encode(convert_mode) | | 156                    ConvertReceiverModeField::encode(convert_mode) | | 
| 159                    TailCallModeField::encode(tail_call_mode)), | 157                    TailCallModeField::encode(tail_call_mode)), | 
| 160         frequency_(frequency), | 158         frequency_(frequency), | 
| 161         feedback_(feedback) {} | 159         feedback_(feedback) {} | 
| 162 | 160 | 
| 163   size_t arity() const { return ArityField::decode(bit_field_); } | 161   size_t arity() const { return ArityField::decode(bit_field_); } | 
| 164   float frequency() const { return frequency_; } | 162   float frequency() const { return frequency_; } | 
| 165   ConvertReceiverMode convert_mode() const { | 163   ConvertReceiverMode convert_mode() const { | 
| 166     return ConvertReceiverModeField::decode(bit_field_); | 164     return ConvertReceiverModeField::decode(bit_field_); | 
| 167   } | 165   } | 
| 168   TailCallMode tail_call_mode() const { | 166   TailCallMode tail_call_mode() const { | 
| 169     return TailCallModeField::decode(bit_field_); | 167     return TailCallModeField::decode(bit_field_); | 
| 170   } | 168   } | 
| 171   VectorSlotPair const& feedback() const { return feedback_; } | 169   VectorSlotPair const& feedback() const { return feedback_; } | 
| 172 | 170 | 
| 173   bool operator==(CallFunctionParameters const& that) const { | 171   bool operator==(CallParameters const& that) const { | 
| 174     return this->bit_field_ == that.bit_field_ && | 172     return this->bit_field_ == that.bit_field_ && | 
| 175            this->frequency_ == that.frequency_ && | 173            this->frequency_ == that.frequency_ && | 
| 176            this->feedback_ == that.feedback_; | 174            this->feedback_ == that.feedback_; | 
| 177   } | 175   } | 
| 178   bool operator!=(CallFunctionParameters const& that) const { | 176   bool operator!=(CallParameters const& that) const { return !(*this == that); } | 
| 179     return !(*this == that); |  | 
| 180   } |  | 
| 181 | 177 | 
| 182  private: | 178  private: | 
| 183   friend size_t hash_value(CallFunctionParameters const& p) { | 179   friend size_t hash_value(CallParameters const& p) { | 
| 184     return base::hash_combine(p.bit_field_, p.frequency_, p.feedback_); | 180     return base::hash_combine(p.bit_field_, p.frequency_, p.feedback_); | 
| 185   } | 181   } | 
| 186 | 182 | 
| 187   typedef BitField<size_t, 0, 29> ArityField; | 183   typedef BitField<size_t, 0, 29> ArityField; | 
| 188   typedef BitField<ConvertReceiverMode, 29, 2> ConvertReceiverModeField; | 184   typedef BitField<ConvertReceiverMode, 29, 2> ConvertReceiverModeField; | 
| 189   typedef BitField<TailCallMode, 31, 1> TailCallModeField; | 185   typedef BitField<TailCallMode, 31, 1> TailCallModeField; | 
| 190 | 186 | 
| 191   uint32_t const bit_field_; | 187   uint32_t const bit_field_; | 
| 192   float const frequency_; | 188   float const frequency_; | 
| 193   VectorSlotPair const feedback_; | 189   VectorSlotPair const feedback_; | 
| 194 }; | 190 }; | 
| 195 | 191 | 
| 196 size_t hash_value(CallFunctionParameters const&); | 192 size_t hash_value(CallParameters const&); | 
| 197 | 193 | 
| 198 std::ostream& operator<<(std::ostream&, CallFunctionParameters const&); | 194 std::ostream& operator<<(std::ostream&, CallParameters const&); | 
| 199 | 195 | 
| 200 const CallFunctionParameters& CallFunctionParametersOf(const Operator* op); | 196 const CallParameters& CallParametersOf(const Operator* op); | 
| 201 | 197 | 
| 202 // Defines the arity for a JavaScript constructor call with a spread as the last | 198 // Defines the arity for a JavaScript constructor call with a spread as the last | 
| 203 // parameters. This is used as a parameter by JSConstructWithSpread | 199 // parameters. This is used as a parameter by JSConstructWithSpread | 
| 204 // operators. | 200 // operators. | 
| 205 class CallFunctionWithSpreadParameters final { | 201 class CallWithSpreadParameters final { | 
| 206  public: | 202  public: | 
| 207   explicit CallFunctionWithSpreadParameters(uint32_t arity) : arity_(arity) {} | 203   explicit CallWithSpreadParameters(uint32_t arity) : arity_(arity) {} | 
| 208 | 204 | 
| 209   uint32_t arity() const { return arity_; } | 205   uint32_t arity() const { return arity_; } | 
| 210 | 206 | 
| 211  private: | 207  private: | 
| 212   uint32_t const arity_; | 208   uint32_t const arity_; | 
| 213 }; | 209 }; | 
| 214 | 210 | 
| 215 bool operator==(CallFunctionWithSpreadParameters const&, | 211 bool operator==(CallWithSpreadParameters const&, | 
| 216                 CallFunctionWithSpreadParameters const&); | 212                 CallWithSpreadParameters const&); | 
| 217 bool operator!=(CallFunctionWithSpreadParameters const&, | 213 bool operator!=(CallWithSpreadParameters const&, | 
| 218                 CallFunctionWithSpreadParameters const&); | 214                 CallWithSpreadParameters const&); | 
| 219 | 215 | 
| 220 size_t hash_value(CallFunctionWithSpreadParameters const&); | 216 size_t hash_value(CallWithSpreadParameters const&); | 
| 221 | 217 | 
| 222 std::ostream& operator<<(std::ostream&, | 218 std::ostream& operator<<(std::ostream&, CallWithSpreadParameters const&); | 
| 223                          CallFunctionWithSpreadParameters const&); |  | 
| 224 | 219 | 
| 225 CallFunctionWithSpreadParameters const& CallFunctionWithSpreadParametersOf( | 220 CallWithSpreadParameters const& CallWithSpreadParametersOf(Operator const*); | 
| 226     Operator const*); |  | 
| 227 | 221 | 
| 228 // Defines the arity and the ID for a runtime function call. This is used as a | 222 // Defines the arity and the ID for a runtime function call. This is used as a | 
| 229 // parameter by JSCallRuntime operators. | 223 // parameter by JSCallRuntime operators. | 
| 230 class CallRuntimeParameters final { | 224 class CallRuntimeParameters final { | 
| 231  public: | 225  public: | 
| 232   CallRuntimeParameters(Runtime::FunctionId id, size_t arity) | 226   CallRuntimeParameters(Runtime::FunctionId id, size_t arity) | 
| 233       : id_(id), arity_(arity) {} | 227       : id_(id), arity_(arity) {} | 
| 234 | 228 | 
| 235   Runtime::FunctionId id() const { return id_; } | 229   Runtime::FunctionId id() const { return id_; } | 
| 236   size_t arity() const { return arity_; } | 230   size_t arity() const { return arity_; } | 
| (...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 607                                      int literal_flags, int literal_index, | 601                                      int literal_flags, int literal_index, | 
| 608                                      int number_of_elements); | 602                                      int number_of_elements); | 
| 609   const Operator* CreateLiteralObject(Handle<BoilerplateDescription> constant, | 603   const Operator* CreateLiteralObject(Handle<BoilerplateDescription> constant, | 
| 610                                       int literal_flags, int literal_index, | 604                                       int literal_flags, int literal_index, | 
| 611                                       int number_of_properties); | 605                                       int number_of_properties); | 
| 612   const Operator* CreateLiteralRegExp(Handle<String> constant_pattern, | 606   const Operator* CreateLiteralRegExp(Handle<String> constant_pattern, | 
| 613                                       int literal_flags, int literal_index); | 607                                       int literal_flags, int literal_index); | 
| 614 | 608 | 
| 615   const Operator* CallForwardVarargs(uint32_t start_index, | 609   const Operator* CallForwardVarargs(uint32_t start_index, | 
| 616                                      TailCallMode tail_call_mode); | 610                                      TailCallMode tail_call_mode); | 
| 617   const Operator* CallFunction( | 611   const Operator* Call( | 
| 618       size_t arity, float frequency = 0.0f, | 612       size_t arity, float frequency = 0.0f, | 
| 619       VectorSlotPair const& feedback = VectorSlotPair(), | 613       VectorSlotPair const& feedback = VectorSlotPair(), | 
| 620       ConvertReceiverMode convert_mode = ConvertReceiverMode::kAny, | 614       ConvertReceiverMode convert_mode = ConvertReceiverMode::kAny, | 
| 621       TailCallMode tail_call_mode = TailCallMode::kDisallow); | 615       TailCallMode tail_call_mode = TailCallMode::kDisallow); | 
| 622   const Operator* CallFunctionWithSpread(uint32_t arity); | 616   const Operator* CallWithSpread(uint32_t arity); | 
| 623   const Operator* CallRuntime(Runtime::FunctionId id); | 617   const Operator* CallRuntime(Runtime::FunctionId id); | 
| 624   const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); | 618   const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); | 
| 625   const Operator* CallRuntime(const Runtime::Function* function, size_t arity); | 619   const Operator* CallRuntime(const Runtime::Function* function, size_t arity); | 
| 626   const Operator* Construct(uint32_t arity, float frequency, | 620   const Operator* Construct(uint32_t arity, float frequency, | 
| 627                             VectorSlotPair const& feedback); | 621                             VectorSlotPair const& feedback); | 
| 628   const Operator* ConstructWithSpread(uint32_t arity); | 622   const Operator* ConstructWithSpread(uint32_t arity); | 
| 629 | 623 | 
| 630   const Operator* ConvertReceiver(ConvertReceiverMode convert_mode); | 624   const Operator* ConvertReceiver(ConvertReceiverMode convert_mode); | 
| 631 | 625 | 
| 632   const Operator* LoadProperty(VectorSlotPair const& feedback); | 626   const Operator* LoadProperty(VectorSlotPair const& feedback); | 
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 694   Zone* const zone_; | 688   Zone* const zone_; | 
| 695 | 689 | 
| 696   DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); | 690   DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); | 
| 697 }; | 691 }; | 
| 698 | 692 | 
| 699 }  // namespace compiler | 693 }  // namespace compiler | 
| 700 }  // namespace internal | 694 }  // namespace internal | 
| 701 }  // namespace v8 | 695 }  // namespace v8 | 
| 702 | 696 | 
| 703 #endif  // V8_COMPILER_JS_OPERATOR_H_ | 697 #endif  // V8_COMPILER_JS_OPERATOR_H_ | 
| OLD | NEW | 
|---|