OLD | NEW |
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 1599 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1610 VisitForAccumulatorValue( | 1610 VisitForAccumulatorValue( |
1611 property->obj()->AsSuperPropertyReference()->home_object()); | 1611 property->obj()->AsSuperPropertyReference()->home_object()); |
1612 PushOperand(result_register()); | 1612 PushOperand(result_register()); |
1613 if (expr->is_compound()) { | 1613 if (expr->is_compound()) { |
1614 const Register scratch = r3; | 1614 const Register scratch = r3; |
1615 __ LoadP(scratch, MemOperand(sp, kPointerSize)); | 1615 __ LoadP(scratch, MemOperand(sp, kPointerSize)); |
1616 PushOperands(scratch, result_register()); | 1616 PushOperands(scratch, result_register()); |
1617 } | 1617 } |
1618 break; | 1618 break; |
1619 case KEYED_SUPER_PROPERTY: { | 1619 case KEYED_SUPER_PROPERTY: { |
1620 const Register scratch = r3; | |
1621 VisitForStackValue( | 1620 VisitForStackValue( |
1622 property->obj()->AsSuperPropertyReference()->this_var()); | 1621 property->obj()->AsSuperPropertyReference()->this_var()); |
1623 VisitForAccumulatorValue( | 1622 VisitForStackValue( |
1624 property->obj()->AsSuperPropertyReference()->home_object()); | 1623 property->obj()->AsSuperPropertyReference()->home_object()); |
1625 __ LoadRR(scratch, result_register()); | |
1626 VisitForAccumulatorValue(property->key()); | 1624 VisitForAccumulatorValue(property->key()); |
1627 PushOperands(scratch, result_register()); | 1625 PushOperand(result_register()); |
1628 if (expr->is_compound()) { | 1626 if (expr->is_compound()) { |
1629 const Register scratch1 = r4; | 1627 const Register scratch1 = r4; |
| 1628 const Register scratch2 = r3; |
1630 __ LoadP(scratch1, MemOperand(sp, 2 * kPointerSize)); | 1629 __ LoadP(scratch1, MemOperand(sp, 2 * kPointerSize)); |
1631 PushOperands(scratch1, scratch, result_register()); | 1630 __ LoadP(scratch2, MemOperand(sp, 1 * kPointerSize)); |
| 1631 PushOperands(scratch1, scratch2, result_register()); |
1632 } | 1632 } |
1633 break; | 1633 break; |
1634 } | 1634 } |
1635 case KEYED_PROPERTY: | 1635 case KEYED_PROPERTY: |
1636 if (expr->is_compound()) { | 1636 if (expr->is_compound()) { |
1637 VisitForStackValue(property->obj()); | 1637 VisitForStackValue(property->obj()); |
1638 VisitForStackValue(property->key()); | 1638 VisitForStackValue(property->key()); |
1639 __ LoadP(LoadDescriptor::ReceiverRegister(), | 1639 __ LoadP(LoadDescriptor::ReceiverRegister(), |
1640 MemOperand(sp, 1 * kPointerSize)); | 1640 MemOperand(sp, 1 * kPointerSize)); |
1641 __ LoadP(LoadDescriptor::NameRegister(), MemOperand(sp, 0)); | 1641 __ LoadP(LoadDescriptor::NameRegister(), MemOperand(sp, 0)); |
(...skipping 2049 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3691 DCHECK(kOSRBranchInstruction == br_instr); | 3691 DCHECK(kOSRBranchInstruction == br_instr); |
3692 | 3692 |
3693 DCHECK(interrupt_address == | 3693 DCHECK(interrupt_address == |
3694 isolate->builtins()->OnStackReplacement()->entry()); | 3694 isolate->builtins()->OnStackReplacement()->entry()); |
3695 return ON_STACK_REPLACEMENT; | 3695 return ON_STACK_REPLACEMENT; |
3696 } | 3696 } |
3697 | 3697 |
3698 } // namespace internal | 3698 } // namespace internal |
3699 } // namespace v8 | 3699 } // namespace v8 |
3700 #endif // V8_TARGET_ARCH_S390 | 3700 #endif // V8_TARGET_ARCH_S390 |
OLD | NEW |