Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Side by Side Diff: src/compiler/bytecode-graph-builder.cc

Issue 1700993002: Remove strong mode support from property loads. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix comment. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/ast-graph-builder.cc ('k') | src/compiler/js-generic-lowering.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/bytecode-graph-builder.h" 5 #include "src/compiler/bytecode-graph-builder.h"
6 6
7 #include "src/compiler/bytecode-branch-analysis.h" 7 #include "src/compiler/bytecode-branch-analysis.h"
8 #include "src/compiler/linkage.h" 8 #include "src/compiler/linkage.h"
9 #include "src/compiler/operator-properties.h" 9 #include "src/compiler/operator-properties.h"
10 #include "src/interpreter/bytecodes.h" 10 #include "src/interpreter/bytecodes.h"
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 Handle<Name> name = 638 Handle<Name> name =
639 Handle<Name>::cast(bytecode_iterator().GetConstantForIndexOperand(0)); 639 Handle<Name>::cast(bytecode_iterator().GetConstantForIndexOperand(0));
640 VectorSlotPair feedback = 640 VectorSlotPair feedback =
641 CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(1)); 641 CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(1));
642 642
643 const Operator* op = javascript()->LoadGlobal(name, feedback, typeof_mode); 643 const Operator* op = javascript()->LoadGlobal(name, feedback, typeof_mode);
644 Node* node = NewNode(op, GetFunctionClosure()); 644 Node* node = NewNode(op, GetFunctionClosure());
645 environment()->BindAccumulator(node, &states); 645 environment()->BindAccumulator(node, &states);
646 } 646 }
647 647
648 void BytecodeGraphBuilder::VisitLdaGlobalSloppy() { 648 void BytecodeGraphBuilder::VisitLdaGlobal() {
649 BuildLoadGlobal(TypeofMode::NOT_INSIDE_TYPEOF); 649 BuildLoadGlobal(TypeofMode::NOT_INSIDE_TYPEOF);
650 } 650 }
651 651
652 void BytecodeGraphBuilder::VisitLdaGlobalStrict() { 652 void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeof() {
653 BuildLoadGlobal(TypeofMode::INSIDE_TYPEOF);
654 }
655
656 void BytecodeGraphBuilder::VisitLdaGlobalWide() {
653 BuildLoadGlobal(TypeofMode::NOT_INSIDE_TYPEOF); 657 BuildLoadGlobal(TypeofMode::NOT_INSIDE_TYPEOF);
654 } 658 }
655 659
656 void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeofSloppy() { 660 void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeofWide() {
657 BuildLoadGlobal(TypeofMode::INSIDE_TYPEOF); 661 BuildLoadGlobal(TypeofMode::INSIDE_TYPEOF);
658 } 662 }
659 663
660 void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeofStrict() {
661 BuildLoadGlobal(TypeofMode::INSIDE_TYPEOF);
662 }
663
664 void BytecodeGraphBuilder::VisitLdaGlobalSloppyWide() {
665 BuildLoadGlobal(TypeofMode::NOT_INSIDE_TYPEOF);
666 }
667
668 void BytecodeGraphBuilder::VisitLdaGlobalStrictWide() {
669 BuildLoadGlobal(TypeofMode::NOT_INSIDE_TYPEOF);
670 }
671
672 void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeofSloppyWide() {
673 BuildLoadGlobal(TypeofMode::INSIDE_TYPEOF);
674 }
675
676 void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeofStrictWide() {
677 BuildLoadGlobal(TypeofMode::INSIDE_TYPEOF);
678 }
679
680 void BytecodeGraphBuilder::BuildStoreGlobal(LanguageMode language_mode) { 664 void BytecodeGraphBuilder::BuildStoreGlobal(LanguageMode language_mode) {
681 FrameStateBeforeAndAfter states(this); 665 FrameStateBeforeAndAfter states(this);
682 Handle<Name> name = 666 Handle<Name> name =
683 Handle<Name>::cast(bytecode_iterator().GetConstantForIndexOperand(0)); 667 Handle<Name>::cast(bytecode_iterator().GetConstantForIndexOperand(0));
684 VectorSlotPair feedback = 668 VectorSlotPair feedback =
685 CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(1)); 669 CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(1));
686 Node* value = environment()->LookupAccumulator(); 670 Node* value = environment()->LookupAccumulator();
687 671
688 const Operator* op = javascript()->StoreGlobal(language_mode, name, feedback); 672 const Operator* op = javascript()->StoreGlobal(language_mode, name, feedback);
689 Node* node = NewNode(op, value, GetFunctionClosure()); 673 Node* node = NewNode(op, value, GetFunctionClosure());
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 777
794 void BytecodeGraphBuilder::BuildNamedLoad() { 778 void BytecodeGraphBuilder::BuildNamedLoad() {
795 FrameStateBeforeAndAfter states(this); 779 FrameStateBeforeAndAfter states(this);
796 Node* object = 780 Node* object =
797 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); 781 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
798 Handle<Name> name = 782 Handle<Name> name =
799 Handle<Name>::cast(bytecode_iterator().GetConstantForIndexOperand(1)); 783 Handle<Name>::cast(bytecode_iterator().GetConstantForIndexOperand(1));
800 VectorSlotPair feedback = 784 VectorSlotPair feedback =
801 CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(2)); 785 CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(2));
802 786
803 const Operator* op = javascript()->LoadNamed(language_mode(), name, feedback); 787 const Operator* op = javascript()->LoadNamed(name, feedback);
804 Node* node = NewNode(op, object, GetFunctionClosure()); 788 Node* node = NewNode(op, object, GetFunctionClosure());
805 environment()->BindAccumulator(node, &states); 789 environment()->BindAccumulator(node, &states);
806 } 790 }
807 791
808 void BytecodeGraphBuilder::VisitLoadICSloppy() { 792 void BytecodeGraphBuilder::VisitLoadIC() { BuildNamedLoad(); }
809 DCHECK(is_sloppy(language_mode()));
810 BuildNamedLoad();
811 }
812 793
813 void BytecodeGraphBuilder::VisitLoadICStrict() { 794 void BytecodeGraphBuilder::VisitLoadICWide() { BuildNamedLoad(); }
814 DCHECK(is_strict(language_mode()));
815 BuildNamedLoad();
816 }
817
818 void BytecodeGraphBuilder::VisitLoadICSloppyWide() {
819 DCHECK(is_sloppy(language_mode()));
820 BuildNamedLoad();
821 }
822
823 void BytecodeGraphBuilder::VisitLoadICStrictWide() {
824 DCHECK(is_strict(language_mode()));
825 BuildNamedLoad();
826 }
827 795
828 void BytecodeGraphBuilder::BuildKeyedLoad() { 796 void BytecodeGraphBuilder::BuildKeyedLoad() {
829 FrameStateBeforeAndAfter states(this); 797 FrameStateBeforeAndAfter states(this);
830 Node* key = environment()->LookupAccumulator(); 798 Node* key = environment()->LookupAccumulator();
831 Node* object = 799 Node* object =
832 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); 800 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
833 VectorSlotPair feedback = 801 VectorSlotPair feedback =
834 CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(1)); 802 CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(1));
835 803
836 const Operator* op = javascript()->LoadProperty(language_mode(), feedback); 804 const Operator* op = javascript()->LoadProperty(feedback);
837 Node* node = NewNode(op, object, key, GetFunctionClosure()); 805 Node* node = NewNode(op, object, key, GetFunctionClosure());
838 environment()->BindAccumulator(node, &states); 806 environment()->BindAccumulator(node, &states);
839 } 807 }
840 808
841 void BytecodeGraphBuilder::VisitKeyedLoadICSloppy() { 809 void BytecodeGraphBuilder::VisitKeyedLoadIC() { BuildKeyedLoad(); }
842 DCHECK(is_sloppy(language_mode()));
843 BuildKeyedLoad();
844 }
845 810
846 void BytecodeGraphBuilder::VisitKeyedLoadICStrict() { 811 void BytecodeGraphBuilder::VisitKeyedLoadICWide() { BuildKeyedLoad(); }
847 DCHECK(is_strict(language_mode()));
848 BuildKeyedLoad();
849 }
850
851 void BytecodeGraphBuilder::VisitKeyedLoadICSloppyWide() {
852 DCHECK(is_sloppy(language_mode()));
853 BuildKeyedLoad();
854 }
855
856 void BytecodeGraphBuilder::VisitKeyedLoadICStrictWide() {
857 DCHECK(is_strict(language_mode()));
858 BuildKeyedLoad();
859 }
860 812
861 void BytecodeGraphBuilder::BuildNamedStore(LanguageMode language_mode) { 813 void BytecodeGraphBuilder::BuildNamedStore(LanguageMode language_mode) {
862 FrameStateBeforeAndAfter states(this); 814 FrameStateBeforeAndAfter states(this);
863 Node* value = environment()->LookupAccumulator(); 815 Node* value = environment()->LookupAccumulator();
864 Node* object = 816 Node* object =
865 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); 817 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
866 Handle<Name> name = 818 Handle<Name> name =
867 Handle<Name>::cast(bytecode_iterator().GetConstantForIndexOperand(1)); 819 Handle<Name>::cast(bytecode_iterator().GetConstantForIndexOperand(1));
868 VectorSlotPair feedback = 820 VectorSlotPair feedback =
869 CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(2)); 821 CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(2));
(...skipping 924 matching lines...) Expand 10 before | Expand all | Expand 10 after
1794 // Phi does not exist yet, introduce one. 1746 // Phi does not exist yet, introduce one.
1795 value = NewPhi(inputs, value, control); 1747 value = NewPhi(inputs, value, control);
1796 value->ReplaceInput(inputs - 1, other); 1748 value->ReplaceInput(inputs - 1, other);
1797 } 1749 }
1798 return value; 1750 return value;
1799 } 1751 }
1800 1752
1801 } // namespace compiler 1753 } // namespace compiler
1802 } // namespace internal 1754 } // namespace internal
1803 } // namespace v8 1755 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/ast-graph-builder.cc ('k') | src/compiler/js-generic-lowering.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698