| Index: src/compiler/js-operator.h
|
| diff --git a/src/compiler/js-operator.h b/src/compiler/js-operator.h
|
| index b1a61eaf8a8ad61035b6e7aeec6eecea0480e577..9451a81cf9a5621905b57deddc77b5baf0bed924 100644
|
| --- a/src/compiler/js-operator.h
|
| +++ b/src/compiler/js-operator.h
|
| @@ -55,14 +55,17 @@ ToBooleanHints ToBooleanHintsOf(Operator const* op);
|
| // used as a parameter by JSCallConstruct operators.
|
| class CallConstructParameters final {
|
| public:
|
| - CallConstructParameters(size_t arity, VectorSlotPair const& feedback)
|
| - : arity_(arity), feedback_(feedback) {}
|
| + CallConstructParameters(uint32_t arity, float frequency,
|
| + VectorSlotPair const& feedback)
|
| + : arity_(arity), frequency_(frequency), feedback_(feedback) {}
|
|
|
| - size_t arity() const { return arity_; }
|
| + uint32_t arity() const { return arity_; }
|
| + float frequency() const { return frequency_; }
|
| VectorSlotPair const& feedback() const { return feedback_; }
|
|
|
| private:
|
| - size_t const arity_;
|
| + uint32_t const arity_;
|
| + float const frequency_;
|
| VectorSlotPair const feedback_;
|
| };
|
|
|
| @@ -80,15 +83,18 @@ CallConstructParameters const& CallConstructParametersOf(Operator const*);
|
| // used as a parameter by JSCallFunction operators.
|
| class CallFunctionParameters final {
|
| public:
|
| - CallFunctionParameters(size_t arity, VectorSlotPair const& feedback,
|
| + CallFunctionParameters(size_t arity, float frequency,
|
| + VectorSlotPair const& feedback,
|
| TailCallMode tail_call_mode,
|
| ConvertReceiverMode convert_mode)
|
| : bit_field_(ArityField::encode(arity) |
|
| ConvertReceiverModeField::encode(convert_mode) |
|
| TailCallModeField::encode(tail_call_mode)),
|
| + frequency_(frequency),
|
| feedback_(feedback) {}
|
|
|
| size_t arity() const { return ArityField::decode(bit_field_); }
|
| + float frequency() const { return frequency_; }
|
| ConvertReceiverMode convert_mode() const {
|
| return ConvertReceiverModeField::decode(bit_field_);
|
| }
|
| @@ -99,6 +105,7 @@ class CallFunctionParameters final {
|
|
|
| bool operator==(CallFunctionParameters const& that) const {
|
| return this->bit_field_ == that.bit_field_ &&
|
| + this->frequency_ == that.frequency_ &&
|
| this->feedback_ == that.feedback_;
|
| }
|
| bool operator!=(CallFunctionParameters const& that) const {
|
| @@ -107,15 +114,16 @@ class CallFunctionParameters final {
|
|
|
| private:
|
| friend size_t hash_value(CallFunctionParameters const& p) {
|
| - return base::hash_combine(p.bit_field_, p.feedback_);
|
| + return base::hash_combine(p.bit_field_, p.frequency_, p.feedback_);
|
| }
|
|
|
| typedef BitField<size_t, 0, 29> ArityField;
|
| typedef BitField<ConvertReceiverMode, 29, 2> ConvertReceiverModeField;
|
| typedef BitField<TailCallMode, 31, 1> TailCallModeField;
|
|
|
| - const uint32_t bit_field_;
|
| - const VectorSlotPair feedback_;
|
| + uint32_t const bit_field_;
|
| + float const frequency_;
|
| + VectorSlotPair const feedback_;
|
| };
|
|
|
| size_t hash_value(CallFunctionParameters const&);
|
| @@ -457,13 +465,15 @@ class JSOperatorBuilder final : public ZoneObject {
|
| int literal_flags, int literal_index);
|
|
|
| const Operator* CallFunction(
|
| - size_t arity, VectorSlotPair const& feedback = VectorSlotPair(),
|
| + size_t arity, float frequency = 0.0f,
|
| + VectorSlotPair const& feedback = VectorSlotPair(),
|
| ConvertReceiverMode convert_mode = ConvertReceiverMode::kAny,
|
| TailCallMode tail_call_mode = TailCallMode::kDisallow);
|
| const Operator* CallRuntime(Runtime::FunctionId id);
|
| const Operator* CallRuntime(Runtime::FunctionId id, size_t arity);
|
| const Operator* CallRuntime(const Runtime::Function* function, size_t arity);
|
| - const Operator* CallConstruct(size_t arity, VectorSlotPair const& feedback);
|
| + const Operator* CallConstruct(uint32_t arity, float frequency,
|
| + VectorSlotPair const& feedback);
|
|
|
| const Operator* ConvertReceiver(ConvertReceiverMode convert_mode);
|
|
|
|
|