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

Side by Side Diff: src/full-codegen/full-codegen.cc

Issue 1962663002: [fullcodegen] Factor out VisitProperty from architectures. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 7 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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/full-codegen/full-codegen.h" 5 #include "src/full-codegen/full-codegen.h"
6 6
7 #include "src/ast/ast-numbering.h" 7 #include "src/ast/ast-numbering.h"
8 #include "src/ast/ast.h" 8 #include "src/ast/ast.h"
9 #include "src/ast/prettyprinter.h" 9 #include "src/ast/prettyprinter.h"
10 #include "src/ast/scopeinfo.h" 10 #include "src/ast/scopeinfo.h"
(...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 VisitForAccumulatorValue(right); 813 VisitForAccumulatorValue(right);
814 814
815 SetExpressionPosition(expr); 815 SetExpressionPosition(expr);
816 if (ShouldInlineSmiCase(op)) { 816 if (ShouldInlineSmiCase(op)) {
817 EmitInlineSmiBinaryOp(expr, op, left, right); 817 EmitInlineSmiBinaryOp(expr, op, left, right);
818 } else { 818 } else {
819 EmitBinaryOp(expr, op); 819 EmitBinaryOp(expr, op);
820 } 820 }
821 } 821 }
822 822
823 void FullCodeGenerator::VisitProperty(Property* expr) {
titzer 2016/05/09 14:15:33 Why would do this? :)
824 Comment cmnt(masm_, "[ Property");
825 SetExpressionPosition(expr);
826
827 Expression* key = expr->key();
828
829 if (key->IsPropertyName()) {
830 if (!expr->IsSuperAccess()) {
831 VisitForAccumulatorValue(expr->obj());
832 __ Move(LoadDescriptor::ReceiverRegister(), result_register());
833 EmitNamedPropertyLoad(expr);
834 } else {
835 VisitForStackValue(expr->obj()->AsSuperPropertyReference()->this_var());
836 VisitForStackValue(
837 expr->obj()->AsSuperPropertyReference()->home_object());
838 EmitNamedSuperPropertyLoad(expr);
839 }
840 } else {
841 if (!expr->IsSuperAccess()) {
842 VisitForStackValue(expr->obj());
843 VisitForAccumulatorValue(expr->key());
844 __ Move(LoadDescriptor::NameRegister(), result_register());
845 PopOperand(LoadDescriptor::ReceiverRegister());
846 EmitKeyedPropertyLoad(expr);
847 } else {
848 VisitForStackValue(expr->obj()->AsSuperPropertyReference()->this_var());
849 VisitForStackValue(
850 expr->obj()->AsSuperPropertyReference()->home_object());
851 VisitForStackValue(expr->key());
852 EmitKeyedSuperPropertyLoad(expr);
853 }
854 }
855 PrepareForBailoutForId(expr->LoadId(), TOS_REG);
856 context()->Plug(result_register());
857 }
823 858
824 void FullCodeGenerator::VisitForTypeofValue(Expression* expr) { 859 void FullCodeGenerator::VisitForTypeofValue(Expression* expr) {
825 VariableProxy* proxy = expr->AsVariableProxy(); 860 VariableProxy* proxy = expr->AsVariableProxy();
826 DCHECK(!context()->IsEffect()); 861 DCHECK(!context()->IsEffect());
827 DCHECK(!context()->IsTest()); 862 DCHECK(!context()->IsTest());
828 863
829 if (proxy != NULL && (proxy->var()->IsUnallocatedOrGlobalSlot() || 864 if (proxy != NULL && (proxy->var()->IsUnallocatedOrGlobalSlot() ||
830 proxy->var()->IsLookupSlot())) { 865 proxy->var()->IsLookupSlot())) {
831 EmitVariableLoad(proxy, INSIDE_TYPEOF); 866 EmitVariableLoad(proxy, INSIDE_TYPEOF);
832 PrepareForBailout(proxy, TOS_REG); 867 PrepareForBailout(proxy, TOS_REG);
(...skipping 1106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1939 return var->scope()->is_nonlinear() || 1974 return var->scope()->is_nonlinear() ||
1940 var->initializer_position() >= proxy->position(); 1975 var->initializer_position() >= proxy->position();
1941 } 1976 }
1942 1977
1943 1978
1944 #undef __ 1979 #undef __
1945 1980
1946 1981
1947 } // namespace internal 1982 } // namespace internal
1948 } // namespace v8 1983 } // namespace v8
OLDNEW
« no previous file with comments | « src/full-codegen/arm64/full-codegen-arm64.cc ('k') | src/full-codegen/ia32/full-codegen-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698