OLD | NEW |
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 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_PPC | 7 #if V8_TARGET_ARCH_PPC |
8 | 8 |
9 #include "src/code-factory.h" | 9 #include "src/code-factory.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 2782 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2793 if (!expr->IsSuperAccess()) { | 2793 if (!expr->IsSuperAccess()) { |
2794 VisitForAccumulatorValue(expr->obj()); | 2794 VisitForAccumulatorValue(expr->obj()); |
2795 __ Move(LoadDescriptor::ReceiverRegister(), r3); | 2795 __ Move(LoadDescriptor::ReceiverRegister(), r3); |
2796 EmitNamedPropertyLoad(expr); | 2796 EmitNamedPropertyLoad(expr); |
2797 } else { | 2797 } else { |
2798 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); | 2798 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); |
2799 EmitLoadHomeObject(expr->obj()->AsSuperReference()); | 2799 EmitLoadHomeObject(expr->obj()->AsSuperReference()); |
2800 __ Push(result_register()); | 2800 __ Push(result_register()); |
2801 EmitNamedSuperPropertyLoad(expr); | 2801 EmitNamedSuperPropertyLoad(expr); |
2802 } | 2802 } |
2803 PrepareForBailoutForId(expr->LoadId(), TOS_REG); | |
2804 context()->Plug(r3); | |
2805 } else { | 2803 } else { |
2806 if (!expr->IsSuperAccess()) { | 2804 if (!expr->IsSuperAccess()) { |
2807 VisitForStackValue(expr->obj()); | 2805 VisitForStackValue(expr->obj()); |
2808 VisitForAccumulatorValue(expr->key()); | 2806 VisitForAccumulatorValue(expr->key()); |
2809 __ Move(LoadDescriptor::NameRegister(), r3); | 2807 __ Move(LoadDescriptor::NameRegister(), r3); |
2810 __ pop(LoadDescriptor::ReceiverRegister()); | 2808 __ pop(LoadDescriptor::ReceiverRegister()); |
2811 EmitKeyedPropertyLoad(expr); | 2809 EmitKeyedPropertyLoad(expr); |
2812 } else { | 2810 } else { |
2813 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); | 2811 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); |
2814 EmitLoadHomeObject(expr->obj()->AsSuperReference()); | 2812 EmitLoadHomeObject(expr->obj()->AsSuperReference()); |
2815 __ Push(result_register()); | 2813 __ Push(result_register()); |
2816 VisitForStackValue(expr->key()); | 2814 VisitForStackValue(expr->key()); |
2817 EmitKeyedSuperPropertyLoad(expr); | 2815 EmitKeyedSuperPropertyLoad(expr); |
2818 } | 2816 } |
2819 context()->Plug(r3); | |
2820 } | 2817 } |
| 2818 PrepareForBailoutForId(expr->LoadId(), TOS_REG); |
| 2819 context()->Plug(r3); |
2821 } | 2820 } |
2822 | 2821 |
2823 | 2822 |
2824 void FullCodeGenerator::CallIC(Handle<Code> code, TypeFeedbackId ast_id) { | 2823 void FullCodeGenerator::CallIC(Handle<Code> code, TypeFeedbackId ast_id) { |
2825 ic_total_count_++; | 2824 ic_total_count_++; |
2826 __ Call(code, RelocInfo::CODE_TARGET, ast_id); | 2825 __ Call(code, RelocInfo::CODE_TARGET, ast_id); |
2827 } | 2826 } |
2828 | 2827 |
2829 | 2828 |
2830 // Code common for calls using the IC. | 2829 // Code common for calls using the IC. |
(...skipping 2451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5282 return ON_STACK_REPLACEMENT; | 5281 return ON_STACK_REPLACEMENT; |
5283 } | 5282 } |
5284 | 5283 |
5285 DCHECK(interrupt_address == | 5284 DCHECK(interrupt_address == |
5286 isolate->builtins()->OsrAfterStackCheck()->entry()); | 5285 isolate->builtins()->OsrAfterStackCheck()->entry()); |
5287 return OSR_AFTER_STACK_CHECK; | 5286 return OSR_AFTER_STACK_CHECK; |
5288 } | 5287 } |
5289 } | 5288 } |
5290 } // namespace v8::internal | 5289 } // namespace v8::internal |
5291 #endif // V8_TARGET_ARCH_PPC | 5290 #endif // V8_TARGET_ARCH_PPC |
OLD | NEW |