| 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/handles.h" | 10 #include "src/handles.h" |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 typedef BitField<TailCallMode, 30, 1> TailCallModeField; | 211 typedef BitField<TailCallMode, 30, 1> TailCallModeField; |
| 212 | 212 |
| 213 uint32_t const bit_field_; | 213 uint32_t const bit_field_; |
| 214 }; | 214 }; |
| 215 | 215 |
| 216 std::ostream& operator<<(std::ostream&, CallForwardVarargsParameters const&); | 216 std::ostream& operator<<(std::ostream&, CallForwardVarargsParameters const&); |
| 217 | 217 |
| 218 CallForwardVarargsParameters const& CallForwardVarargsParametersOf( | 218 CallForwardVarargsParameters const& CallForwardVarargsParametersOf( |
| 219 Operator const*) WARN_UNUSED_RESULT; | 219 Operator const*) WARN_UNUSED_RESULT; |
| 220 | 220 |
| 221 // Defines the flags for a JavaScript call forwarding parameters. This |
| 222 // is used as parameter by JSCallVarargs operators. |
| 223 class CallVarargsParameters final { |
| 224 public: |
| 225 explicit CallVarargsParameters(size_t arity) : arity_(arity) {} |
| 226 |
| 227 size_t arity() const { return arity_; } |
| 228 |
| 229 bool operator==(CallVarargsParameters const& that) const { |
| 230 return this->arity_ == that.arity_; |
| 231 } |
| 232 bool operator!=(CallVarargsParameters const& that) const { |
| 233 return !(*this == that); |
| 234 } |
| 235 |
| 236 private: |
| 237 friend size_t hash_value(CallVarargsParameters const& p) { |
| 238 return p.arity_; |
| 239 } |
| 240 |
| 241 const size_t arity_; |
| 242 }; |
| 243 |
| 244 std::ostream& operator<<(std::ostream&, CallVarargsParameters const&); |
| 245 |
| 246 CallVarargsParameters const& CallVarargsParametersOf(Operator const*) |
| 247 WARN_UNUSED_RESULT; |
| 248 |
| 221 // Defines the arity and the call flags for a JavaScript function call. This is | 249 // Defines the arity and the call flags for a JavaScript function call. This is |
| 222 // used as a parameter by JSCall operators. | 250 // used as a parameter by JSCall operators. |
| 223 class CallParameters final { | 251 class CallParameters final { |
| 224 public: | 252 public: |
| 225 CallParameters(size_t arity, CallFrequency frequency, | 253 CallParameters(size_t arity, CallFrequency frequency, |
| 226 VectorSlotPair const& feedback, TailCallMode tail_call_mode, | 254 VectorSlotPair const& feedback, TailCallMode tail_call_mode, |
| 227 ConvertReceiverMode convert_mode) | 255 ConvertReceiverMode convert_mode) |
| 228 : bit_field_(ArityField::encode(arity) | | 256 : bit_field_(ArityField::encode(arity) | |
| 229 ConvertReceiverModeField::encode(convert_mode) | | 257 ConvertReceiverModeField::encode(convert_mode) | |
| 230 TailCallModeField::encode(tail_call_mode)), | 258 TailCallModeField::encode(tail_call_mode)), |
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 719 const Operator* CreateKeyValueArray(); | 747 const Operator* CreateKeyValueArray(); |
| 720 const Operator* CreateLiteralArray(Handle<ConstantElementsPair> constant, | 748 const Operator* CreateLiteralArray(Handle<ConstantElementsPair> constant, |
| 721 int literal_flags, int literal_index, | 749 int literal_flags, int literal_index, |
| 722 int number_of_elements); | 750 int number_of_elements); |
| 723 const Operator* CreateLiteralObject(Handle<BoilerplateDescription> constant, | 751 const Operator* CreateLiteralObject(Handle<BoilerplateDescription> constant, |
| 724 int literal_flags, int literal_index, | 752 int literal_flags, int literal_index, |
| 725 int number_of_properties); | 753 int number_of_properties); |
| 726 const Operator* CreateLiteralRegExp(Handle<String> constant_pattern, | 754 const Operator* CreateLiteralRegExp(Handle<String> constant_pattern, |
| 727 int literal_flags, int literal_index); | 755 int literal_flags, int literal_index); |
| 728 | 756 |
| 729 const Operator* CallForwardVarargs(size_t arity, uint32_t start_index, | |
| 730 TailCallMode tail_call_mode); | |
| 731 const Operator* Call( | 757 const Operator* Call( |
| 732 size_t arity, CallFrequency frequency = CallFrequency(), | 758 size_t arity, CallFrequency frequency = CallFrequency(), |
| 733 VectorSlotPair const& feedback = VectorSlotPair(), | 759 VectorSlotPair const& feedback = VectorSlotPair(), |
| 734 ConvertReceiverMode convert_mode = ConvertReceiverMode::kAny, | 760 ConvertReceiverMode convert_mode = ConvertReceiverMode::kAny, |
| 735 TailCallMode tail_call_mode = TailCallMode::kDisallow); | 761 TailCallMode tail_call_mode = TailCallMode::kDisallow); |
| 762 const Operator* CallForwardVarargs(size_t arity, uint32_t start_index, |
| 763 TailCallMode tail_call_mode); |
| 764 const Operator* CallVarargs(size_t arity); |
| 736 const Operator* CallWithArrayLike(CallFrequency frequency); | 765 const Operator* CallWithArrayLike(CallFrequency frequency); |
| 737 const Operator* CallWithSpread(uint32_t arity); | 766 const Operator* CallWithSpread(uint32_t arity); |
| 738 const Operator* CallRuntime(Runtime::FunctionId id); | 767 const Operator* CallRuntime(Runtime::FunctionId id); |
| 739 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); | 768 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); |
| 740 const Operator* CallRuntime(const Runtime::Function* function, size_t arity); | 769 const Operator* CallRuntime(const Runtime::Function* function, size_t arity); |
| 741 | 770 |
| 742 const Operator* ConstructForwardVarargs(size_t arity, uint32_t start_index); | 771 const Operator* ConstructForwardVarargs(size_t arity, uint32_t start_index); |
| 743 const Operator* Construct(uint32_t arity, | 772 const Operator* Construct(uint32_t arity, |
| 744 CallFrequency frequency = CallFrequency(), | 773 CallFrequency frequency = CallFrequency(), |
| 745 VectorSlotPair const& feedback = VectorSlotPair()); | 774 VectorSlotPair const& feedback = VectorSlotPair()); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 822 Zone* const zone_; | 851 Zone* const zone_; |
| 823 | 852 |
| 824 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); | 853 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); |
| 825 }; | 854 }; |
| 826 | 855 |
| 827 } // namespace compiler | 856 } // namespace compiler |
| 828 } // namespace internal | 857 } // namespace internal |
| 829 } // namespace v8 | 858 } // namespace v8 |
| 830 | 859 |
| 831 #endif // V8_COMPILER_JS_OPERATOR_H_ | 860 #endif // V8_COMPILER_JS_OPERATOR_H_ |
| OLD | NEW |