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

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

Issue 2120963002: [fullcode][mips][mips64][ppc][s390] Avoid trashing of a home object when doing a keyed store to a... (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 5 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 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 #if V8_TARGET_ARCH_PPC 5 #if V8_TARGET_ARCH_PPC
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 1639 matching lines...) Expand 10 before | Expand all | Expand 10 after
1650 VisitForAccumulatorValue( 1650 VisitForAccumulatorValue(
1651 property->obj()->AsSuperPropertyReference()->home_object()); 1651 property->obj()->AsSuperPropertyReference()->home_object());
1652 PushOperand(result_register()); 1652 PushOperand(result_register());
1653 if (expr->is_compound()) { 1653 if (expr->is_compound()) {
1654 const Register scratch = r4; 1654 const Register scratch = r4;
1655 __ LoadP(scratch, MemOperand(sp, kPointerSize)); 1655 __ LoadP(scratch, MemOperand(sp, kPointerSize));
1656 PushOperands(scratch, result_register()); 1656 PushOperands(scratch, result_register());
1657 } 1657 }
1658 break; 1658 break;
1659 case KEYED_SUPER_PROPERTY: { 1659 case KEYED_SUPER_PROPERTY: {
1660 const Register scratch = r4;
1661 VisitForStackValue( 1660 VisitForStackValue(
1662 property->obj()->AsSuperPropertyReference()->this_var()); 1661 property->obj()->AsSuperPropertyReference()->this_var());
1663 VisitForAccumulatorValue( 1662 VisitForStackValue(
1664 property->obj()->AsSuperPropertyReference()->home_object()); 1663 property->obj()->AsSuperPropertyReference()->home_object());
1665 __ mr(scratch, result_register());
1666 VisitForAccumulatorValue(property->key()); 1664 VisitForAccumulatorValue(property->key());
1667 PushOperands(scratch, result_register()); 1665 PushOperand(result_register());
1668 if (expr->is_compound()) { 1666 if (expr->is_compound()) {
1669 const Register scratch1 = r5; 1667 const Register scratch1 = r5;
1668 const Register scratch = r4;
1670 __ LoadP(scratch1, MemOperand(sp, 2 * kPointerSize)); 1669 __ LoadP(scratch1, MemOperand(sp, 2 * kPointerSize));
1671 PushOperands(scratch1, scratch, result_register()); 1670 __ LoadP(scratch2, MemOperand(sp, 1 * kPointerSize));
1671 PushOperands(scratch1, scratch2, result_register());
1672 } 1672 }
1673 break; 1673 break;
1674 } 1674 }
1675 case KEYED_PROPERTY: 1675 case KEYED_PROPERTY:
1676 if (expr->is_compound()) { 1676 if (expr->is_compound()) {
1677 VisitForStackValue(property->obj()); 1677 VisitForStackValue(property->obj());
1678 VisitForStackValue(property->key()); 1678 VisitForStackValue(property->key());
1679 __ LoadP(LoadDescriptor::ReceiverRegister(), 1679 __ LoadP(LoadDescriptor::ReceiverRegister(),
1680 MemOperand(sp, 1 * kPointerSize)); 1680 MemOperand(sp, 1 * kPointerSize));
1681 __ LoadP(LoadDescriptor::NameRegister(), MemOperand(sp, 0)); 1681 __ LoadP(LoadDescriptor::NameRegister(), MemOperand(sp, 0));
(...skipping 2096 matching lines...) Expand 10 before | Expand all | Expand 10 after
3778 3778
3779 DCHECK(Assembler::IsCrSet(Assembler::instr_at(cmp_address))); 3779 DCHECK(Assembler::IsCrSet(Assembler::instr_at(cmp_address)));
3780 3780
3781 DCHECK(interrupt_address == 3781 DCHECK(interrupt_address ==
3782 isolate->builtins()->OnStackReplacement()->entry()); 3782 isolate->builtins()->OnStackReplacement()->entry());
3783 return ON_STACK_REPLACEMENT; 3783 return ON_STACK_REPLACEMENT;
3784 } 3784 }
3785 } // namespace internal 3785 } // namespace internal
3786 } // namespace v8 3786 } // namespace v8
3787 #endif // V8_TARGET_ARCH_PPC 3787 #endif // V8_TARGET_ARCH_PPC
OLDNEW
« no previous file with comments | « src/full-codegen/mips64/full-codegen-mips64.cc ('k') | src/full-codegen/s390/full-codegen-s390.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698