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