| Index: src/compiler/js-operator.h
|
| diff --git a/src/compiler/js-operator.h b/src/compiler/js-operator.h
|
| index ba7c744cf3b01827e885225c3519332f34d81ea9..7e698ce65396fc156b2755678804e724621e25f8 100644
|
| --- a/src/compiler/js-operator.h
|
| +++ b/src/compiler/js-operator.h
|
| @@ -5,6 +5,7 @@
|
| #ifndef V8_COMPILER_JS_OPERATOR_H_
|
| #define V8_COMPILER_JS_OPERATOR_H_
|
|
|
| +#include "src/compiler/type-hints.h"
|
| #include "src/runtime/runtime.h"
|
|
|
| namespace v8 {
|
| @@ -54,6 +55,34 @@ size_t hash_value(TailCallMode);
|
| std::ostream& operator<<(std::ostream&, TailCallMode);
|
|
|
|
|
| +// Defines the language mode and hints for a JavaScript binary operations.
|
| +// This is used as parameter by JSAdd, JSSubtract, etc. operators.
|
| +class BinaryOperationParameters final {
|
| + public:
|
| + BinaryOperationParameters(LanguageMode language_mode,
|
| + BinaryOperationHints hints)
|
| + : language_mode_(language_mode), hints_(hints) {}
|
| +
|
| + LanguageMode language_mode() const { return language_mode_; }
|
| + BinaryOperationHints hints() const { return hints_; }
|
| +
|
| + private:
|
| + LanguageMode const language_mode_;
|
| + BinaryOperationHints const hints_;
|
| +};
|
| +
|
| +bool operator==(BinaryOperationParameters const&,
|
| + BinaryOperationParameters const&);
|
| +bool operator!=(BinaryOperationParameters const&,
|
| + BinaryOperationParameters const&);
|
| +
|
| +size_t hash_value(BinaryOperationParameters const&);
|
| +
|
| +std::ostream& operator<<(std::ostream&, BinaryOperationParameters const&);
|
| +
|
| +BinaryOperationParameters const& BinaryOperationParametersOf(Operator const*);
|
| +
|
| +
|
| // Defines the arity and the feedback for a JavaScript constructor call. This is
|
| // used as a parameter by JSCallConstruct operators.
|
| class CallConstructParameters final {
|
| @@ -446,17 +475,27 @@ class JSOperatorBuilder final : public ZoneObject {
|
| const Operator* GreaterThan(LanguageMode language_mode);
|
| const Operator* LessThanOrEqual(LanguageMode language_mode);
|
| const Operator* GreaterThanOrEqual(LanguageMode language_mode);
|
| - const Operator* BitwiseOr(LanguageMode language_mode);
|
| - const Operator* BitwiseXor(LanguageMode language_mode);
|
| - const Operator* BitwiseAnd(LanguageMode language_mode);
|
| - const Operator* ShiftLeft(LanguageMode language_mode);
|
| - const Operator* ShiftRight(LanguageMode language_mode);
|
| - const Operator* ShiftRightLogical(LanguageMode language_mode);
|
| - const Operator* Add(LanguageMode language_mode);
|
| - const Operator* Subtract(LanguageMode language_mode);
|
| - const Operator* Multiply(LanguageMode language_mode);
|
| - const Operator* Divide(LanguageMode language_mode);
|
| - const Operator* Modulus(LanguageMode language_mode);
|
| + const Operator* BitwiseOr(LanguageMode language_mode,
|
| + BinaryOperationHints hints);
|
| + const Operator* BitwiseXor(LanguageMode language_mode,
|
| + BinaryOperationHints hints);
|
| + const Operator* BitwiseAnd(LanguageMode language_mode,
|
| + BinaryOperationHints hints);
|
| + const Operator* ShiftLeft(LanguageMode language_mode,
|
| + BinaryOperationHints hints);
|
| + const Operator* ShiftRight(LanguageMode language_mode,
|
| + BinaryOperationHints hints);
|
| + const Operator* ShiftRightLogical(LanguageMode language_mode,
|
| + BinaryOperationHints hints);
|
| + const Operator* Add(LanguageMode language_mode, BinaryOperationHints hints);
|
| + const Operator* Subtract(LanguageMode language_mode,
|
| + BinaryOperationHints hints);
|
| + const Operator* Multiply(LanguageMode language_mode,
|
| + BinaryOperationHints hints);
|
| + const Operator* Divide(LanguageMode language_mode,
|
| + BinaryOperationHints hints);
|
| + const Operator* Modulus(LanguageMode language_mode,
|
| + BinaryOperationHints hints);
|
|
|
| const Operator* UnaryNot();
|
| const Operator* ToBoolean();
|
|
|