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

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

Issue 1414413004: Distinguish Call::CallType::PROPERTY_CALL further. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@local_issue-4521
Patch Set: Ports. Created 5 years, 1 month 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/full-codegen/arm64/full-codegen-arm64.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 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 #if V8_TARGET_ARCH_ARM 5 #if V8_TARGET_ARCH_ARM
6 6
7 #include "src/code-factory.h" 7 #include "src/code-factory.h"
8 #include "src/code-stubs.h" 8 #include "src/code-stubs.h"
9 #include "src/codegen.h" 9 #include "src/codegen.h"
10 #include "src/debug/debug.h" 10 #include "src/debug/debug.h"
(...skipping 3073 matching lines...) Expand 10 before | Expand all | Expand 10 after
3084 // Restore context register. 3084 // Restore context register.
3085 __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); 3085 __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
3086 context()->DropAndPlug(1, r0); 3086 context()->DropAndPlug(1, r0);
3087 } else if (call_type == Call::GLOBAL_CALL) { 3087 } else if (call_type == Call::GLOBAL_CALL) {
3088 EmitCallWithLoadIC(expr); 3088 EmitCallWithLoadIC(expr);
3089 3089
3090 } else if (call_type == Call::LOOKUP_SLOT_CALL) { 3090 } else if (call_type == Call::LOOKUP_SLOT_CALL) {
3091 // Call to a lookup slot (dynamically introduced variable). 3091 // Call to a lookup slot (dynamically introduced variable).
3092 PushCalleeAndWithBaseObject(expr); 3092 PushCalleeAndWithBaseObject(expr);
3093 EmitCall(expr); 3093 EmitCall(expr);
3094 } else if (call_type == Call::PROPERTY_CALL) { 3094 } else if (call_type == Call::NAMED_PROPERTY_CALL) {
3095 Property* property = callee->AsProperty(); 3095 Property* property = callee->AsProperty();
3096 bool is_named_call = property->key()->IsPropertyName(); 3096 VisitForStackValue(property->obj());
3097 if (property->IsSuperAccess()) { 3097 EmitCallWithLoadIC(expr);
3098 if (is_named_call) { 3098 } else if (call_type == Call::KEYED_PROPERTY_CALL) {
3099 EmitSuperCallWithLoadIC(expr); 3099 Property* property = callee->AsProperty();
3100 } else { 3100 VisitForStackValue(property->obj());
3101 EmitKeyedSuperCallWithLoadIC(expr); 3101 EmitKeyedCallWithLoadIC(expr, property->key());
3102 } 3102 } else if (call_type == Call::NAMED_SUPER_PROPERTY_CALL) {
3103 } else { 3103 EmitSuperCallWithLoadIC(expr);
3104 VisitForStackValue(property->obj()); 3104 } else if (call_type == Call::KEYED_SUPER_PROPERTY_CALL) {
3105 if (is_named_call) { 3105 EmitKeyedSuperCallWithLoadIC(expr);
3106 EmitCallWithLoadIC(expr);
3107 } else {
3108 EmitKeyedCallWithLoadIC(expr, property->key());
3109 }
3110 }
3111 } else if (call_type == Call::SUPER_CALL) { 3106 } else if (call_type == Call::SUPER_CALL) {
3112 EmitSuperConstructorCall(expr); 3107 EmitSuperConstructorCall(expr);
3113 } else { 3108 } else {
3114 DCHECK(call_type == Call::OTHER_CALL); 3109 DCHECK(call_type == Call::OTHER_CALL);
3115 // Call to an arbitrary expression not handled specially above. 3110 // Call to an arbitrary expression not handled specially above.
3116 VisitForStackValue(callee); 3111 VisitForStackValue(callee);
3117 __ LoadRoot(r1, Heap::kUndefinedValueRootIndex); 3112 __ LoadRoot(r1, Heap::kUndefinedValueRootIndex);
3118 __ push(r1); 3113 __ push(r1);
3119 // Emit function call. 3114 // Emit function call.
3120 EmitCall(expr); 3115 EmitCall(expr);
(...skipping 2071 matching lines...) Expand 10 before | Expand all | Expand 10 after
5192 DCHECK(interrupt_address == 5187 DCHECK(interrupt_address ==
5193 isolate->builtins()->OsrAfterStackCheck()->entry()); 5188 isolate->builtins()->OsrAfterStackCheck()->entry());
5194 return OSR_AFTER_STACK_CHECK; 5189 return OSR_AFTER_STACK_CHECK;
5195 } 5190 }
5196 5191
5197 5192
5198 } // namespace internal 5193 } // namespace internal
5199 } // namespace v8 5194 } // namespace v8
5200 5195
5201 #endif // V8_TARGET_ARCH_ARM 5196 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « src/compiler/ast-graph-builder.cc ('k') | src/full-codegen/arm64/full-codegen-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698