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 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 return os << p.language_mode() << ", " << Brief(*p.name()); | 343 return os << p.language_mode() << ", " << Brief(*p.name()); |
344 } | 344 } |
345 | 345 |
346 | 346 |
347 const StoreGlobalParameters& StoreGlobalParametersOf(const Operator* op) { | 347 const StoreGlobalParameters& StoreGlobalParametersOf(const Operator* op) { |
348 DCHECK_EQ(IrOpcode::kJSStoreGlobal, op->opcode()); | 348 DCHECK_EQ(IrOpcode::kJSStoreGlobal, op->opcode()); |
349 return OpParameter<StoreGlobalParameters>(op); | 349 return OpParameter<StoreGlobalParameters>(op); |
350 } | 350 } |
351 | 351 |
352 | 352 |
353 bool operator==(CreateArgumentsParameters const& lhs, | 353 CreateArgumentsType const& CreateArgumentsTypeOf(const Operator* op) { |
354 CreateArgumentsParameters const& rhs) { | 354 DCHECK_EQ(IrOpcode::kJSCreateArguments, op->opcode()); |
355 return lhs.type() == rhs.type() && lhs.start_index() == rhs.start_index(); | 355 return OpParameter<CreateArgumentsType>(op); |
356 } | 356 } |
357 | 357 |
358 | 358 |
359 bool operator!=(CreateArgumentsParameters const& lhs, | |
360 CreateArgumentsParameters const& rhs) { | |
361 return !(lhs == rhs); | |
362 } | |
363 | |
364 | |
365 size_t hash_value(CreateArgumentsParameters const& p) { | |
366 return base::hash_combine(p.type(), p.start_index()); | |
367 } | |
368 | |
369 | |
370 std::ostream& operator<<(std::ostream& os, CreateArgumentsParameters const& p) { | |
371 return os << p.type() << ", " << p.start_index(); | |
372 } | |
373 | |
374 | |
375 const CreateArgumentsParameters& CreateArgumentsParametersOf( | |
376 const Operator* op) { | |
377 DCHECK_EQ(IrOpcode::kJSCreateArguments, op->opcode()); | |
378 return OpParameter<CreateArgumentsParameters>(op); | |
379 } | |
380 | |
381 | |
382 bool operator==(CreateArrayParameters const& lhs, | 359 bool operator==(CreateArrayParameters const& lhs, |
383 CreateArrayParameters const& rhs) { | 360 CreateArrayParameters const& rhs) { |
384 return lhs.arity() == rhs.arity() && | 361 return lhs.arity() == rhs.arity() && |
385 lhs.site().location() == rhs.site().location(); | 362 lhs.site().location() == rhs.site().location(); |
386 } | 363 } |
387 | 364 |
388 | 365 |
389 bool operator!=(CreateArrayParameters const& lhs, | 366 bool operator!=(CreateArrayParameters const& lhs, |
390 CreateArrayParameters const& rhs) { | 367 CreateArrayParameters const& rhs) { |
391 return !(lhs == rhs); | 368 return !(lhs == rhs); |
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
881 TypeofMode typeof_mode) { | 858 TypeofMode typeof_mode) { |
882 DynamicAccess access(name, typeof_mode); | 859 DynamicAccess access(name, typeof_mode); |
883 return new (zone()) Operator1<DynamicAccess>( // -- | 860 return new (zone()) Operator1<DynamicAccess>( // -- |
884 IrOpcode::kJSLoadDynamic, Operator::kNoProperties, // opcode | 861 IrOpcode::kJSLoadDynamic, Operator::kNoProperties, // opcode |
885 "JSLoadDynamic", // name | 862 "JSLoadDynamic", // name |
886 2, 1, 1, 1, 1, 2, // counts | 863 2, 1, 1, 1, 1, 2, // counts |
887 access); // parameter | 864 access); // parameter |
888 } | 865 } |
889 | 866 |
890 | 867 |
891 const Operator* JSOperatorBuilder::CreateArguments( | 868 const Operator* JSOperatorBuilder::CreateArguments(CreateArgumentsType type) { |
892 CreateArgumentsParameters::Type type, int start_index) { | 869 return new (zone()) Operator1<CreateArgumentsType>( // -- |
893 DCHECK_IMPLIES(start_index, type == CreateArgumentsParameters::kRestArray); | 870 IrOpcode::kJSCreateArguments, Operator::kNoThrow, // opcode |
894 CreateArgumentsParameters parameters(type, start_index); | 871 "JSCreateArguments", // name |
895 return new (zone()) Operator1<CreateArgumentsParameters>( // -- | 872 1, 1, 1, 1, 1, 0, // counts |
896 IrOpcode::kJSCreateArguments, Operator::kNoThrow, // opcode | 873 type); // parameter |
897 "JSCreateArguments", // name | |
898 1, 1, 1, 1, 1, 0, // counts | |
899 parameters); // parameter | |
900 } | 874 } |
901 | 875 |
902 | 876 |
903 const Operator* JSOperatorBuilder::CreateArray(size_t arity, | 877 const Operator* JSOperatorBuilder::CreateArray(size_t arity, |
904 Handle<AllocationSite> site) { | 878 Handle<AllocationSite> site) { |
905 // constructor, new_target, arg1, ..., argN | 879 // constructor, new_target, arg1, ..., argN |
906 int const value_input_count = static_cast<int>(arity) + 2; | 880 int const value_input_count = static_cast<int>(arity) + 2; |
907 CreateArrayParameters parameters(arity, site); | 881 CreateArrayParameters parameters(arity, site); |
908 return new (zone()) Operator1<CreateArrayParameters>( // -- | 882 return new (zone()) Operator1<CreateArrayParameters>( // -- |
909 IrOpcode::kJSCreateArray, Operator::kNoProperties, // opcode | 883 IrOpcode::kJSCreateArray, Operator::kNoProperties, // opcode |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
996 return new (zone()) Operator1<Handle<ScopeInfo>>( // -- | 970 return new (zone()) Operator1<Handle<ScopeInfo>>( // -- |
997 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode | 971 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode |
998 "JSCreateScriptContext", // name | 972 "JSCreateScriptContext", // name |
999 1, 1, 1, 1, 1, 2, // counts | 973 1, 1, 1, 1, 1, 2, // counts |
1000 scpope_info); // parameter | 974 scpope_info); // parameter |
1001 } | 975 } |
1002 | 976 |
1003 } // namespace compiler | 977 } // namespace compiler |
1004 } // namespace internal | 978 } // namespace internal |
1005 } // namespace v8 | 979 } // namespace v8 |
OLD | NEW |