| 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 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 | 285 |
| 286 size_t hash_value(FeedbackParameter const& p) { | 286 size_t hash_value(FeedbackParameter const& p) { |
| 287 return base::hash_combine(p.feedback()); | 287 return base::hash_combine(p.feedback()); |
| 288 } | 288 } |
| 289 | 289 |
| 290 std::ostream& operator<<(std::ostream& os, FeedbackParameter const& p) { | 290 std::ostream& operator<<(std::ostream& os, FeedbackParameter const& p) { |
| 291 return os; | 291 return os; |
| 292 } | 292 } |
| 293 | 293 |
| 294 FeedbackParameter const& FeedbackParameterOf(const Operator* op) { | 294 FeedbackParameter const& FeedbackParameterOf(const Operator* op) { |
| 295 DCHECK(op->opcode() == IrOpcode::kJSStoreDataPropertyInLiteral); | 295 DCHECK(op->opcode() == IrOpcode::kJSStoreDataPropertyInLiteral || |
| 296 op->opcode() == IrOpcode::kJSCollectTypeProfile); |
| 296 return OpParameter<FeedbackParameter>(op); | 297 return OpParameter<FeedbackParameter>(op); |
| 297 } | 298 } |
| 298 | 299 |
| 299 bool operator==(NamedAccess const& lhs, NamedAccess const& rhs) { | 300 bool operator==(NamedAccess const& lhs, NamedAccess const& rhs) { |
| 300 return lhs.name().location() == rhs.name().location() && | 301 return lhs.name().location() == rhs.name().location() && |
| 301 lhs.language_mode() == rhs.language_mode() && | 302 lhs.language_mode() == rhs.language_mode() && |
| 302 lhs.feedback() == rhs.feedback(); | 303 lhs.feedback() == rhs.feedback(); |
| 303 } | 304 } |
| 304 | 305 |
| 305 | 306 |
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 696 const VectorSlotPair& feedback) { | 697 const VectorSlotPair& feedback) { |
| 697 FeedbackParameter parameters(feedback); | 698 FeedbackParameter parameters(feedback); |
| 698 return new (zone()) Operator1<FeedbackParameter>( // -- | 699 return new (zone()) Operator1<FeedbackParameter>( // -- |
| 699 IrOpcode::kJSStoreDataPropertyInLiteral, | 700 IrOpcode::kJSStoreDataPropertyInLiteral, |
| 700 Operator::kNoThrow, // opcode | 701 Operator::kNoThrow, // opcode |
| 701 "JSStoreDataPropertyInLiteral", // name | 702 "JSStoreDataPropertyInLiteral", // name |
| 702 4, 1, 1, 0, 1, 0, // counts | 703 4, 1, 1, 0, 1, 0, // counts |
| 703 parameters); // parameter | 704 parameters); // parameter |
| 704 } | 705 } |
| 705 | 706 |
| 707 const Operator* JSOperatorBuilder::CollectTypeProfile( |
| 708 const VectorSlotPair& feedback) { |
| 709 FeedbackParameter parameters(feedback); |
| 710 return new (zone()) Operator1<FeedbackParameter>( // -- |
| 711 IrOpcode::kJSCollectTypeProfile, |
| 712 Operator::kNoThrow, // opcode |
| 713 "JSCollectTypeProfile", // name |
| 714 2, 1, 1, 0, 1, 0, // counts |
| 715 parameters); // parameter |
| 716 } |
| 717 |
| 706 const Operator* JSOperatorBuilder::ToBoolean(ToBooleanHints hints) { | 718 const Operator* JSOperatorBuilder::ToBoolean(ToBooleanHints hints) { |
| 707 // TODO(turbofan): Cache most important versions of this operator. | 719 // TODO(turbofan): Cache most important versions of this operator. |
| 708 return new (zone()) Operator1<ToBooleanHints>( //-- | 720 return new (zone()) Operator1<ToBooleanHints>( //-- |
| 709 IrOpcode::kJSToBoolean, Operator::kPure, // opcode | 721 IrOpcode::kJSToBoolean, Operator::kPure, // opcode |
| 710 "JSToBoolean", // name | 722 "JSToBoolean", // name |
| 711 1, 0, 0, 1, 0, 0, // inputs/outputs | 723 1, 0, 0, 1, 0, 0, // inputs/outputs |
| 712 hints); // parameter | 724 hints); // parameter |
| 713 } | 725 } |
| 714 | 726 |
| 715 const Operator* JSOperatorBuilder::CallForwardVarargs( | 727 const Operator* JSOperatorBuilder::CallForwardVarargs( |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1048 return new (zone()) Operator1<Handle<ScopeInfo>>( // -- | 1060 return new (zone()) Operator1<Handle<ScopeInfo>>( // -- |
| 1049 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode | 1061 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode |
| 1050 "JSCreateScriptContext", // name | 1062 "JSCreateScriptContext", // name |
| 1051 1, 1, 1, 1, 1, 2, // counts | 1063 1, 1, 1, 1, 1, 2, // counts |
| 1052 scope_info); // parameter | 1064 scope_info); // parameter |
| 1053 } | 1065 } |
| 1054 | 1066 |
| 1055 } // namespace compiler | 1067 } // namespace compiler |
| 1056 } // namespace internal | 1068 } // namespace internal |
| 1057 } // namespace v8 | 1069 } // namespace v8 |
| OLD | NEW |