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

Side by Side Diff: src/compiler/js-operator.h

Issue 2655233002: [turbofan] Introduce JSCallForwardVarargs operator. (Closed)
Patch Set: Fix formatting. Created 3 years, 10 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
« no previous file with comments | « src/compiler/js-generic-lowering.cc ('k') | src/compiler/js-operator.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 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 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 CallConstructWithSpreadParameters const&); 99 CallConstructWithSpreadParameters const&);
100 100
101 size_t hash_value(CallConstructWithSpreadParameters const&); 101 size_t hash_value(CallConstructWithSpreadParameters const&);
102 102
103 std::ostream& operator<<(std::ostream&, 103 std::ostream& operator<<(std::ostream&,
104 CallConstructWithSpreadParameters const&); 104 CallConstructWithSpreadParameters const&);
105 105
106 CallConstructWithSpreadParameters const& CallConstructWithSpreadParametersOf( 106 CallConstructWithSpreadParameters const& CallConstructWithSpreadParametersOf(
107 Operator const*); 107 Operator const*);
108 108
109 // Defines the flags for a JavaScript call forwarding parameters. This
110 // is used as parameter by JSCallForwardVarargs operators.
111 class CallForwardVarargsParameters final {
112 public:
113 CallForwardVarargsParameters(uint32_t start_index,
114 TailCallMode tail_call_mode)
115 : bit_field_(StartIndexField::encode(start_index) |
116 TailCallModeField::encode(tail_call_mode)) {}
117
118 uint32_t start_index() const { return StartIndexField::decode(bit_field_); }
119 TailCallMode tail_call_mode() const {
120 return TailCallModeField::decode(bit_field_);
121 }
122
123 bool operator==(CallForwardVarargsParameters const& that) const {
124 return this->bit_field_ == that.bit_field_;
125 }
126 bool operator!=(CallForwardVarargsParameters const& that) const {
127 return !(*this == that);
128 }
129
130 private:
131 friend size_t hash_value(CallForwardVarargsParameters const& p) {
132 return p.bit_field_;
133 }
134
135 typedef BitField<uint32_t, 0, 30> StartIndexField;
136 typedef BitField<TailCallMode, 31, 1> TailCallModeField;
137
138 uint32_t const bit_field_;
139 };
140
141 std::ostream& operator<<(std::ostream&, CallForwardVarargsParameters const&);
142
143 CallForwardVarargsParameters const& CallForwardVarargsParametersOf(
144 Operator const*) WARN_UNUSED_RESULT;
145
109 // Defines the arity and the call flags for a JavaScript function call. This is 146 // Defines the arity and the call flags for a JavaScript function call. This is
110 // used as a parameter by JSCallFunction operators. 147 // used as a parameter by JSCallFunction operators.
111 class CallFunctionParameters final { 148 class CallFunctionParameters final {
112 public: 149 public:
113 CallFunctionParameters(size_t arity, float frequency, 150 CallFunctionParameters(size_t arity, float frequency,
114 VectorSlotPair const& feedback, 151 VectorSlotPair const& feedback,
115 TailCallMode tail_call_mode, 152 TailCallMode tail_call_mode,
116 ConvertReceiverMode convert_mode) 153 ConvertReceiverMode convert_mode)
117 : bit_field_(ArityField::encode(arity) | 154 : bit_field_(ArityField::encode(arity) |
118 ConvertReceiverModeField::encode(convert_mode) | 155 ConvertReceiverModeField::encode(convert_mode) |
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 const Operator* CreateKeyValueArray(); 602 const Operator* CreateKeyValueArray();
566 const Operator* CreateLiteralArray(Handle<ConstantElementsPair> constant, 603 const Operator* CreateLiteralArray(Handle<ConstantElementsPair> constant,
567 int literal_flags, int literal_index, 604 int literal_flags, int literal_index,
568 int number_of_elements); 605 int number_of_elements);
569 const Operator* CreateLiteralObject(Handle<FixedArray> constant_properties, 606 const Operator* CreateLiteralObject(Handle<FixedArray> constant_properties,
570 int literal_flags, int literal_index, 607 int literal_flags, int literal_index,
571 int number_of_properties); 608 int number_of_properties);
572 const Operator* CreateLiteralRegExp(Handle<String> constant_pattern, 609 const Operator* CreateLiteralRegExp(Handle<String> constant_pattern,
573 int literal_flags, int literal_index); 610 int literal_flags, int literal_index);
574 611
612 const Operator* CallForwardVarargs(uint32_t start_index,
613 TailCallMode tail_call_mode);
575 const Operator* CallFunction( 614 const Operator* CallFunction(
576 size_t arity, float frequency = 0.0f, 615 size_t arity, float frequency = 0.0f,
577 VectorSlotPair const& feedback = VectorSlotPair(), 616 VectorSlotPair const& feedback = VectorSlotPair(),
578 ConvertReceiverMode convert_mode = ConvertReceiverMode::kAny, 617 ConvertReceiverMode convert_mode = ConvertReceiverMode::kAny,
579 TailCallMode tail_call_mode = TailCallMode::kDisallow); 618 TailCallMode tail_call_mode = TailCallMode::kDisallow);
580 const Operator* CallFunctionWithSpread(uint32_t arity); 619 const Operator* CallFunctionWithSpread(uint32_t arity);
581 const Operator* CallRuntime(Runtime::FunctionId id); 620 const Operator* CallRuntime(Runtime::FunctionId id);
582 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); 621 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity);
583 const Operator* CallRuntime(const Runtime::Function* function, size_t arity); 622 const Operator* CallRuntime(const Runtime::Function* function, size_t arity);
584 const Operator* CallConstruct(uint32_t arity, float frequency, 623 const Operator* CallConstruct(uint32_t arity, float frequency,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 Zone* const zone_; 690 Zone* const zone_;
652 691
653 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); 692 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder);
654 }; 693 };
655 694
656 } // namespace compiler 695 } // namespace compiler
657 } // namespace internal 696 } // namespace internal
658 } // namespace v8 697 } // namespace v8
659 698
660 #endif // V8_COMPILER_JS_OPERATOR_H_ 699 #endif // V8_COMPILER_JS_OPERATOR_H_
OLDNEW
« no previous file with comments | « src/compiler/js-generic-lowering.cc ('k') | src/compiler/js-operator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698