| 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 |