| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 #include "src/compiler/js-operator.h" | 5 #include "src/compiler/js-operator.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "src/base/lazy-instance.h" | 9 #include "src/base/lazy-instance.h" |
| 10 #include "src/compiler/opcodes.h" | 10 #include "src/compiler/opcodes.h" |
| (...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 } | 392 } |
| 393 | 393 |
| 394 const CompareOperationHints& CompareOperationHintsOf(const Operator* op) { | 394 const CompareOperationHints& CompareOperationHintsOf(const Operator* op) { |
| 395 DCHECK(op->opcode() == IrOpcode::kJSEqual || | 395 DCHECK(op->opcode() == IrOpcode::kJSEqual || |
| 396 op->opcode() == IrOpcode::kJSNotEqual || | 396 op->opcode() == IrOpcode::kJSNotEqual || |
| 397 op->opcode() == IrOpcode::kJSStrictEqual || | 397 op->opcode() == IrOpcode::kJSStrictEqual || |
| 398 op->opcode() == IrOpcode::kJSStrictNotEqual || | 398 op->opcode() == IrOpcode::kJSStrictNotEqual || |
| 399 op->opcode() == IrOpcode::kJSLessThan || | 399 op->opcode() == IrOpcode::kJSLessThan || |
| 400 op->opcode() == IrOpcode::kJSGreaterThan || | 400 op->opcode() == IrOpcode::kJSGreaterThan || |
| 401 op->opcode() == IrOpcode::kJSLessThanOrEqual || | 401 op->opcode() == IrOpcode::kJSLessThanOrEqual || |
| 402 op->opcode() == IrOpcode::kJSGreaterThanOrEqual); | 402 op->opcode() == IrOpcode::kJSGreaterThanOrEqual || |
| 403 op->opcode() == IrOpcode::kJSSameValueZero); |
| 403 return OpParameter<CompareOperationHints>(op); | 404 return OpParameter<CompareOperationHints>(op); |
| 404 } | 405 } |
| 405 | 406 |
| 406 #define CACHED_OP_LIST(V) \ | 407 #define CACHED_OP_LIST(V) \ |
| 407 V(ToInteger, Operator::kNoProperties, 1, 1) \ | 408 V(ToInteger, Operator::kNoProperties, 1, 1) \ |
| 408 V(ToLength, Operator::kNoProperties, 1, 1) \ | 409 V(ToLength, Operator::kNoProperties, 1, 1) \ |
| 409 V(ToName, Operator::kNoProperties, 1, 1) \ | 410 V(ToName, Operator::kNoProperties, 1, 1) \ |
| 410 V(ToNumber, Operator::kNoProperties, 1, 1) \ | 411 V(ToNumber, Operator::kNoProperties, 1, 1) \ |
| 411 V(ToObject, Operator::kFoldable, 1, 1) \ | 412 V(ToObject, Operator::kFoldable, 1, 1) \ |
| 412 V(ToString, Operator::kNoProperties, 1, 1) \ | 413 V(ToString, Operator::kNoProperties, 1, 1) \ |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 585 | 586 |
| 586 const Operator* JSOperatorBuilder::StrictNotEqual(CompareOperationHints hints) { | 587 const Operator* JSOperatorBuilder::StrictNotEqual(CompareOperationHints hints) { |
| 587 // TODO(turbofan): Cache most important versions of this operator. | 588 // TODO(turbofan): Cache most important versions of this operator. |
| 588 return new (zone()) Operator1<CompareOperationHints>( //-- | 589 return new (zone()) Operator1<CompareOperationHints>( //-- |
| 589 IrOpcode::kJSStrictNotEqual, Operator::kPure, // opcode | 590 IrOpcode::kJSStrictNotEqual, Operator::kPure, // opcode |
| 590 "JSStrictNotEqual", // name | 591 "JSStrictNotEqual", // name |
| 591 2, 0, 0, 1, 0, 0, // inputs/outputs | 592 2, 0, 0, 1, 0, 0, // inputs/outputs |
| 592 hints); // parameter | 593 hints); // parameter |
| 593 } | 594 } |
| 594 | 595 |
| 596 const Operator* JSOperatorBuilder::SameValueZero(CompareOperationHints hints) { |
| 597 return new (zone()) Operator1<CompareOperationHints>( //-- |
| 598 IrOpcode::kJSSameValueZero, Operator::kPure, // opcode |
| 599 "JSSameValueZero", // name |
| 600 2, 0, 0, 1, 0, 0, // inputs/outputs |
| 601 hints); // parameter |
| 602 } |
| 603 |
| 595 const Operator* JSOperatorBuilder::LessThan(CompareOperationHints hints) { | 604 const Operator* JSOperatorBuilder::LessThan(CompareOperationHints hints) { |
| 596 // TODO(turbofan): Cache most important versions of this operator. | 605 // TODO(turbofan): Cache most important versions of this operator. |
| 597 return new (zone()) Operator1<CompareOperationHints>( //-- | 606 return new (zone()) Operator1<CompareOperationHints>( //-- |
| 598 IrOpcode::kJSLessThan, Operator::kNoProperties, // opcode | 607 IrOpcode::kJSLessThan, Operator::kNoProperties, // opcode |
| 599 "JSLessThan", // name | 608 "JSLessThan", // name |
| 600 2, 1, 1, 1, 1, 2, // inputs/outputs | 609 2, 1, 1, 1, 1, 2, // inputs/outputs |
| 601 hints); // parameter | 610 hints); // parameter |
| 602 } | 611 } |
| 603 | 612 |
| 604 const Operator* JSOperatorBuilder::GreaterThan(CompareOperationHints hints) { | 613 const Operator* JSOperatorBuilder::GreaterThan(CompareOperationHints hints) { |
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 915 return new (zone()) Operator1<Handle<ScopeInfo>>( // -- | 924 return new (zone()) Operator1<Handle<ScopeInfo>>( // -- |
| 916 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode | 925 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode |
| 917 "JSCreateScriptContext", // name | 926 "JSCreateScriptContext", // name |
| 918 1, 1, 1, 1, 1, 2, // counts | 927 1, 1, 1, 1, 1, 2, // counts |
| 919 scpope_info); // parameter | 928 scpope_info); // parameter |
| 920 } | 929 } |
| 921 | 930 |
| 922 } // namespace compiler | 931 } // namespace compiler |
| 923 } // namespace internal | 932 } // namespace internal |
| 924 } // namespace v8 | 933 } // namespace v8 |
| OLD | NEW |