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

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

Issue 1693833002: Remove strong mode support from binary operations. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comments. Created 4 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
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/compiler/type-hints.h" 8 #include "src/compiler/type-hints.h"
9 #include "src/runtime/runtime.h" 9 #include "src/runtime/runtime.h"
10 10
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 45
46 // The ConvertReceiverMode is used as parameter by JSConvertReceiver operators. 46 // The ConvertReceiverMode is used as parameter by JSConvertReceiver operators.
47 ConvertReceiverMode ConvertReceiverModeOf(Operator const* op); 47 ConvertReceiverMode ConvertReceiverModeOf(Operator const* op);
48 48
49 49
50 // The ToBooleanHints are used as parameter by JSToBoolean operators. 50 // The ToBooleanHints are used as parameter by JSToBoolean operators.
51 ToBooleanHints ToBooleanHintsOf(Operator const* op); 51 ToBooleanHints ToBooleanHintsOf(Operator const* op);
52 52
53 53
54 // Defines the language mode and hints for a JavaScript binary operations.
55 // This is used as parameter by JSAdd, JSSubtract, etc. operators.
56 class BinaryOperationParameters final {
57 public:
58 BinaryOperationParameters(LanguageMode language_mode,
59 BinaryOperationHints hints)
60 : language_mode_(language_mode), hints_(hints) {}
61
62 LanguageMode language_mode() const { return language_mode_; }
63 BinaryOperationHints hints() const { return hints_; }
64
65 private:
66 LanguageMode const language_mode_;
67 BinaryOperationHints const hints_;
68 };
69
70 bool operator==(BinaryOperationParameters const&,
71 BinaryOperationParameters const&);
72 bool operator!=(BinaryOperationParameters const&,
73 BinaryOperationParameters const&);
74
75 size_t hash_value(BinaryOperationParameters const&);
76
77 std::ostream& operator<<(std::ostream&, BinaryOperationParameters const&);
78
79 BinaryOperationParameters const& BinaryOperationParametersOf(Operator const*);
80
81
82 // Defines the arity and the feedback for a JavaScript constructor call. This is 54 // Defines the arity and the feedback for a JavaScript constructor call. This is
83 // used as a parameter by JSCallConstruct operators. 55 // used as a parameter by JSCallConstruct operators.
84 class CallConstructParameters final { 56 class CallConstructParameters final {
85 public: 57 public:
86 CallConstructParameters(size_t arity, VectorSlotPair const& feedback) 58 CallConstructParameters(size_t arity, VectorSlotPair const& feedback)
87 : arity_(arity), feedback_(feedback) {} 59 : arity_(arity), feedback_(feedback) {}
88 60
89 size_t arity() const { return arity_; } 61 size_t arity() const { return arity_; }
90 VectorSlotPair const& feedback() const { return feedback_; } 62 VectorSlotPair const& feedback() const { return feedback_; }
91 63
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 // AST. Most operators have no parameters, thus can be globally shared for all 383 // AST. Most operators have no parameters, thus can be globally shared for all
412 // graphs. 384 // graphs.
413 class JSOperatorBuilder final : public ZoneObject { 385 class JSOperatorBuilder final : public ZoneObject {
414 public: 386 public:
415 explicit JSOperatorBuilder(Zone* zone); 387 explicit JSOperatorBuilder(Zone* zone);
416 388
417 const Operator* Equal(); 389 const Operator* Equal();
418 const Operator* NotEqual(); 390 const Operator* NotEqual();
419 const Operator* StrictEqual(); 391 const Operator* StrictEqual();
420 const Operator* StrictNotEqual(); 392 const Operator* StrictNotEqual();
421 const Operator* LessThan(LanguageMode language_mode); 393 const Operator* LessThan();
422 const Operator* GreaterThan(LanguageMode language_mode); 394 const Operator* GreaterThan();
423 const Operator* LessThanOrEqual(LanguageMode language_mode); 395 const Operator* LessThanOrEqual();
424 const Operator* GreaterThanOrEqual(LanguageMode language_mode); 396 const Operator* GreaterThanOrEqual();
425 const Operator* BitwiseOr(LanguageMode language_mode, 397 const Operator* BitwiseOr(BinaryOperationHints hints);
426 BinaryOperationHints hints); 398 const Operator* BitwiseXor(BinaryOperationHints hints);
427 const Operator* BitwiseXor(LanguageMode language_mode, 399 const Operator* BitwiseAnd(BinaryOperationHints hints);
428 BinaryOperationHints hints); 400 const Operator* ShiftLeft(BinaryOperationHints hints);
429 const Operator* BitwiseAnd(LanguageMode language_mode, 401 const Operator* ShiftRight(BinaryOperationHints hints);
430 BinaryOperationHints hints); 402 const Operator* ShiftRightLogical(BinaryOperationHints hints);
431 const Operator* ShiftLeft(LanguageMode language_mode, 403 const Operator* Add(BinaryOperationHints hints);
432 BinaryOperationHints hints); 404 const Operator* Subtract(BinaryOperationHints hints);
433 const Operator* ShiftRight(LanguageMode language_mode, 405 const Operator* Multiply(BinaryOperationHints hints);
434 BinaryOperationHints hints); 406 const Operator* Divide(BinaryOperationHints hints);
435 const Operator* ShiftRightLogical(LanguageMode language_mode, 407 const Operator* Modulus(BinaryOperationHints hints);
436 BinaryOperationHints hints);
437 const Operator* Add(LanguageMode language_mode, BinaryOperationHints hints);
438 const Operator* Subtract(LanguageMode language_mode,
439 BinaryOperationHints hints);
440 const Operator* Multiply(LanguageMode language_mode,
441 BinaryOperationHints hints);
442 const Operator* Divide(LanguageMode language_mode,
443 BinaryOperationHints hints);
444 const Operator* Modulus(LanguageMode language_mode,
445 BinaryOperationHints hints);
446 408
447 const Operator* ToBoolean(ToBooleanHints hints); 409 const Operator* ToBoolean(ToBooleanHints hints);
448 const Operator* ToNumber(); 410 const Operator* ToNumber();
449 const Operator* ToString(); 411 const Operator* ToString();
450 const Operator* ToName(); 412 const Operator* ToName();
451 const Operator* ToObject(); 413 const Operator* ToObject();
452 const Operator* Yield(); 414 const Operator* Yield();
453 415
454 const Operator* Create(); 416 const Operator* Create();
455 const Operator* CreateArguments(CreateArgumentsType type); 417 const Operator* CreateArguments(CreateArgumentsType type);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 Zone* const zone_; 489 Zone* const zone_;
528 490
529 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); 491 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder);
530 }; 492 };
531 493
532 } // namespace compiler 494 } // namespace compiler
533 } // namespace internal 495 } // namespace internal
534 } // namespace v8 496 } // namespace v8
535 497
536 #endif // V8_COMPILER_JS_OPERATOR_H_ 498 #endif // V8_COMPILER_JS_OPERATOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698