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 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
656 1, 1, 1, 1, 1, 0, // counts | 656 1, 1, 1, 1, 1, 0, // counts |
657 convert_mode); // parameter | 657 convert_mode); // parameter |
658 } | 658 } |
659 | 659 |
660 const Operator* JSOperatorBuilder::LoadNamed(Handle<Name> name, | 660 const Operator* JSOperatorBuilder::LoadNamed(Handle<Name> name, |
661 const VectorSlotPair& feedback) { | 661 const VectorSlotPair& feedback) { |
662 NamedAccess access(SLOPPY, name, feedback); | 662 NamedAccess access(SLOPPY, name, feedback); |
663 return new (zone()) Operator1<NamedAccess>( // -- | 663 return new (zone()) Operator1<NamedAccess>( // -- |
664 IrOpcode::kJSLoadNamed, Operator::kNoProperties, // opcode | 664 IrOpcode::kJSLoadNamed, Operator::kNoProperties, // opcode |
665 "JSLoadNamed", // name | 665 "JSLoadNamed", // name |
666 2, 1, 1, 1, 1, 2, // counts | 666 1, 1, 1, 1, 1, 2, // counts |
667 access); // parameter | 667 access); // parameter |
668 } | 668 } |
669 | 669 |
670 const Operator* JSOperatorBuilder::LoadProperty( | 670 const Operator* JSOperatorBuilder::LoadProperty( |
671 VectorSlotPair const& feedback) { | 671 VectorSlotPair const& feedback) { |
672 PropertyAccess access(SLOPPY, feedback); | 672 PropertyAccess access(SLOPPY, feedback); |
673 return new (zone()) Operator1<PropertyAccess>( // -- | 673 return new (zone()) Operator1<PropertyAccess>( // -- |
674 IrOpcode::kJSLoadProperty, Operator::kNoProperties, // opcode | 674 IrOpcode::kJSLoadProperty, Operator::kNoProperties, // opcode |
675 "JSLoadProperty", // name | 675 "JSLoadProperty", // name |
676 3, 1, 1, 1, 1, 2, // counts | 676 2, 1, 1, 1, 1, 2, // counts |
677 access); // parameter | 677 access); // parameter |
678 } | 678 } |
679 | 679 |
680 const Operator* JSOperatorBuilder::GeneratorStore(int register_count) { | 680 const Operator* JSOperatorBuilder::GeneratorStore(int register_count) { |
681 return new (zone()) Operator1<int>( // -- | 681 return new (zone()) Operator1<int>( // -- |
682 IrOpcode::kJSGeneratorStore, Operator::kNoThrow, // opcode | 682 IrOpcode::kJSGeneratorStore, Operator::kNoThrow, // opcode |
683 "JSGeneratorStore", // name | 683 "JSGeneratorStore", // name |
684 3 + register_count, 1, 1, 0, 1, 0, // counts | 684 3 + register_count, 1, 1, 0, 1, 0, // counts |
685 register_count); // parameter | 685 register_count); // parameter |
686 } | 686 } |
687 | 687 |
688 const Operator* JSOperatorBuilder::GeneratorRestoreRegister(int index) { | 688 const Operator* JSOperatorBuilder::GeneratorRestoreRegister(int index) { |
689 return new (zone()) Operator1<int>( // -- | 689 return new (zone()) Operator1<int>( // -- |
690 IrOpcode::kJSGeneratorRestoreRegister, Operator::kNoThrow, // opcode | 690 IrOpcode::kJSGeneratorRestoreRegister, Operator::kNoThrow, // opcode |
691 "JSGeneratorRestoreRegister", // name | 691 "JSGeneratorRestoreRegister", // name |
692 1, 1, 1, 1, 1, 0, // counts | 692 1, 1, 1, 1, 1, 0, // counts |
693 index); // parameter | 693 index); // parameter |
694 } | 694 } |
695 | 695 |
696 const Operator* JSOperatorBuilder::StoreNamed(LanguageMode language_mode, | 696 const Operator* JSOperatorBuilder::StoreNamed(LanguageMode language_mode, |
697 Handle<Name> name, | 697 Handle<Name> name, |
698 VectorSlotPair const& feedback) { | 698 VectorSlotPair const& feedback) { |
699 NamedAccess access(language_mode, name, feedback); | 699 NamedAccess access(language_mode, name, feedback); |
700 return new (zone()) Operator1<NamedAccess>( // -- | 700 return new (zone()) Operator1<NamedAccess>( // -- |
701 IrOpcode::kJSStoreNamed, Operator::kNoProperties, // opcode | 701 IrOpcode::kJSStoreNamed, Operator::kNoProperties, // opcode |
702 "JSStoreNamed", // name | 702 "JSStoreNamed", // name |
703 3, 1, 1, 0, 1, 2, // counts | 703 2, 1, 1, 0, 1, 2, // counts |
704 access); // parameter | 704 access); // parameter |
705 } | 705 } |
706 | 706 |
707 | 707 |
708 const Operator* JSOperatorBuilder::StoreProperty( | 708 const Operator* JSOperatorBuilder::StoreProperty( |
709 LanguageMode language_mode, VectorSlotPair const& feedback) { | 709 LanguageMode language_mode, VectorSlotPair const& feedback) { |
710 PropertyAccess access(language_mode, feedback); | 710 PropertyAccess access(language_mode, feedback); |
711 return new (zone()) Operator1<PropertyAccess>( // -- | 711 return new (zone()) Operator1<PropertyAccess>( // -- |
712 IrOpcode::kJSStoreProperty, Operator::kNoProperties, // opcode | 712 IrOpcode::kJSStoreProperty, Operator::kNoProperties, // opcode |
713 "JSStoreProperty", // name | 713 "JSStoreProperty", // name |
714 4, 1, 1, 0, 1, 2, // counts | 714 3, 1, 1, 0, 1, 2, // counts |
715 access); // parameter | 715 access); // parameter |
716 } | 716 } |
717 | 717 |
718 | 718 |
719 const Operator* JSOperatorBuilder::DeleteProperty(LanguageMode language_mode) { | 719 const Operator* JSOperatorBuilder::DeleteProperty(LanguageMode language_mode) { |
720 return new (zone()) Operator1<LanguageMode>( // -- | 720 return new (zone()) Operator1<LanguageMode>( // -- |
721 IrOpcode::kJSDeleteProperty, Operator::kNoProperties, // opcode | 721 IrOpcode::kJSDeleteProperty, Operator::kNoProperties, // opcode |
722 "JSDeleteProperty", // name | 722 "JSDeleteProperty", // name |
723 2, 1, 1, 1, 1, 2, // counts | 723 2, 1, 1, 1, 1, 2, // counts |
724 language_mode); // parameter | 724 language_mode); // parameter |
725 } | 725 } |
726 | 726 |
727 | 727 |
728 const Operator* JSOperatorBuilder::LoadGlobal(const Handle<Name>& name, | 728 const Operator* JSOperatorBuilder::LoadGlobal(const Handle<Name>& name, |
729 const VectorSlotPair& feedback, | 729 const VectorSlotPair& feedback, |
730 TypeofMode typeof_mode) { | 730 TypeofMode typeof_mode) { |
731 LoadGlobalParameters parameters(name, feedback, typeof_mode); | 731 LoadGlobalParameters parameters(name, feedback, typeof_mode); |
732 return new (zone()) Operator1<LoadGlobalParameters>( // -- | 732 return new (zone()) Operator1<LoadGlobalParameters>( // -- |
733 IrOpcode::kJSLoadGlobal, Operator::kNoProperties, // opcode | 733 IrOpcode::kJSLoadGlobal, Operator::kNoProperties, // opcode |
734 "JSLoadGlobal", // name | 734 "JSLoadGlobal", // name |
735 1, 1, 1, 1, 1, 2, // counts | 735 0, 1, 1, 1, 1, 2, // counts |
736 parameters); // parameter | 736 parameters); // parameter |
737 } | 737 } |
738 | 738 |
739 | 739 |
740 const Operator* JSOperatorBuilder::StoreGlobal(LanguageMode language_mode, | 740 const Operator* JSOperatorBuilder::StoreGlobal(LanguageMode language_mode, |
741 const Handle<Name>& name, | 741 const Handle<Name>& name, |
742 const VectorSlotPair& feedback) { | 742 const VectorSlotPair& feedback) { |
743 StoreGlobalParameters parameters(language_mode, feedback, name); | 743 StoreGlobalParameters parameters(language_mode, feedback, name); |
744 return new (zone()) Operator1<StoreGlobalParameters>( // -- | 744 return new (zone()) Operator1<StoreGlobalParameters>( // -- |
745 IrOpcode::kJSStoreGlobal, Operator::kNoProperties, // opcode | 745 IrOpcode::kJSStoreGlobal, Operator::kNoProperties, // opcode |
746 "JSStoreGlobal", // name | 746 "JSStoreGlobal", // name |
747 2, 1, 1, 0, 1, 2, // counts | 747 1, 1, 1, 0, 1, 2, // counts |
748 parameters); // parameter | 748 parameters); // parameter |
749 } | 749 } |
750 | 750 |
751 | 751 |
752 const Operator* JSOperatorBuilder::LoadContext(size_t depth, size_t index, | 752 const Operator* JSOperatorBuilder::LoadContext(size_t depth, size_t index, |
753 bool immutable) { | 753 bool immutable) { |
754 ContextAccess access(depth, index, immutable); | 754 ContextAccess access(depth, index, immutable); |
755 return new (zone()) Operator1<ContextAccess>( // -- | 755 return new (zone()) Operator1<ContextAccess>( // -- |
756 IrOpcode::kJSLoadContext, // opcode | 756 IrOpcode::kJSLoadContext, // opcode |
757 Operator::kNoWrite | Operator::kNoThrow, // flags | 757 Operator::kNoWrite | Operator::kNoThrow, // flags |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
900 return new (zone()) Operator1<Handle<ScopeInfo>>( // -- | 900 return new (zone()) Operator1<Handle<ScopeInfo>>( // -- |
901 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode | 901 IrOpcode::kJSCreateScriptContext, Operator::kNoProperties, // opcode |
902 "JSCreateScriptContext", // name | 902 "JSCreateScriptContext", // name |
903 1, 1, 1, 1, 1, 2, // counts | 903 1, 1, 1, 1, 1, 2, // counts |
904 scpope_info); // parameter | 904 scpope_info); // parameter |
905 } | 905 } |
906 | 906 |
907 } // namespace compiler | 907 } // namespace compiler |
908 } // namespace internal | 908 } // namespace internal |
909 } // namespace v8 | 909 } // namespace v8 |
OLD | NEW |