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

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

Issue 2191663004: [fullcode][mips][mips64][ppc][s390] Avoid trashing of a home object when doing a count operation wi… (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fixes Created 4 years, 4 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/full-codegen/ppc/full-codegen-ppc.cc ('k') | test/mjsunit/regress/regress-crbug-631917.js » ('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 #if V8_TARGET_ARCH_S390 5 #if V8_TARGET_ARCH_S390
6 6
7 #include "src/ast/scopes.h" 7 #include "src/ast/scopes.h"
8 #include "src/code-factory.h" 8 #include "src/code-factory.h"
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 3092 matching lines...) Expand 10 before | Expand all | Expand 10 after
3103 VisitForStackValue(prop->obj()); 3103 VisitForStackValue(prop->obj());
3104 __ LoadP(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0)); 3104 __ LoadP(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0));
3105 EmitNamedPropertyLoad(prop); 3105 EmitNamedPropertyLoad(prop);
3106 break; 3106 break;
3107 } 3107 }
3108 3108
3109 case NAMED_SUPER_PROPERTY: { 3109 case NAMED_SUPER_PROPERTY: {
3110 VisitForStackValue(prop->obj()->AsSuperPropertyReference()->this_var()); 3110 VisitForStackValue(prop->obj()->AsSuperPropertyReference()->this_var());
3111 VisitForAccumulatorValue( 3111 VisitForAccumulatorValue(
3112 prop->obj()->AsSuperPropertyReference()->home_object()); 3112 prop->obj()->AsSuperPropertyReference()->home_object());
3113 PushOperand(result_register());
3114 const Register scratch = r3; 3113 const Register scratch = r3;
3115 __ LoadP(scratch, MemOperand(sp, kPointerSize)); 3114 __ LoadP(scratch, MemOperand(sp, 0)); // this
3116 PushOperands(scratch, result_register()); 3115 PushOperands(result_register(), scratch, result_register());
3117 EmitNamedSuperPropertyLoad(prop); 3116 EmitNamedSuperPropertyLoad(prop);
3118 break; 3117 break;
3119 } 3118 }
3120 3119
3121 case KEYED_SUPER_PROPERTY: { 3120 case KEYED_SUPER_PROPERTY: {
3122 VisitForStackValue(prop->obj()->AsSuperPropertyReference()->this_var()); 3121 VisitForStackValue(prop->obj()->AsSuperPropertyReference()->this_var());
3123 VisitForAccumulatorValue( 3122 VisitForStackValue(
3124 prop->obj()->AsSuperPropertyReference()->home_object()); 3123 prop->obj()->AsSuperPropertyReference()->home_object());
3125 const Register scratch = r3;
3126 const Register scratch1 = r4;
3127 __ LoadRR(scratch, result_register());
3128 VisitForAccumulatorValue(prop->key()); 3124 VisitForAccumulatorValue(prop->key());
3129 PushOperands(scratch, result_register()); 3125 const Register scratch1 = r3;
3130 __ LoadP(scratch1, MemOperand(sp, 2 * kPointerSize)); 3126 const Register scratch2 = r4;
3131 PushOperands(scratch1, scratch, result_register()); 3127 __ LoadP(scratch1, MemOperand(sp, 1 * kPointerSize)); // this
3128 __ LoadP(scratch2, MemOperand(sp, 0 * kPointerSize)); // home object
3129 PushOperands(result_register(), scratch1, scratch2, result_register());
3132 EmitKeyedSuperPropertyLoad(prop); 3130 EmitKeyedSuperPropertyLoad(prop);
3133 break; 3131 break;
3134 } 3132 }
3135 3133
3136 case KEYED_PROPERTY: { 3134 case KEYED_PROPERTY: {
3137 VisitForStackValue(prop->obj()); 3135 VisitForStackValue(prop->obj());
3138 VisitForStackValue(prop->key()); 3136 VisitForStackValue(prop->key());
3139 __ LoadP(LoadDescriptor::ReceiverRegister(), 3137 __ LoadP(LoadDescriptor::ReceiverRegister(),
3140 MemOperand(sp, 1 * kPointerSize)); 3138 MemOperand(sp, 1 * kPointerSize));
3141 __ LoadP(LoadDescriptor::NameRegister(), MemOperand(sp, 0)); 3139 __ LoadP(LoadDescriptor::NameRegister(), MemOperand(sp, 0));
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after
3679 DCHECK(kOSRBranchInstruction == br_instr); 3677 DCHECK(kOSRBranchInstruction == br_instr);
3680 3678
3681 DCHECK(interrupt_address == 3679 DCHECK(interrupt_address ==
3682 isolate->builtins()->OnStackReplacement()->entry()); 3680 isolate->builtins()->OnStackReplacement()->entry());
3683 return ON_STACK_REPLACEMENT; 3681 return ON_STACK_REPLACEMENT;
3684 } 3682 }
3685 3683
3686 } // namespace internal 3684 } // namespace internal
3687 } // namespace v8 3685 } // namespace v8
3688 #endif // V8_TARGET_ARCH_S390 3686 #endif // V8_TARGET_ARCH_S390
OLDNEW
« no previous file with comments | « src/full-codegen/ppc/full-codegen-ppc.cc ('k') | test/mjsunit/regress/regress-crbug-631917.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698