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 3092 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 |
OLD | NEW |