OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_ARM | 7 #if V8_TARGET_ARCH_ARM |
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 2809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2820 if (!expr->IsSuperAccess()) { | 2820 if (!expr->IsSuperAccess()) { |
2821 VisitForAccumulatorValue(expr->obj()); | 2821 VisitForAccumulatorValue(expr->obj()); |
2822 __ Move(LoadDescriptor::ReceiverRegister(), r0); | 2822 __ Move(LoadDescriptor::ReceiverRegister(), r0); |
2823 EmitNamedPropertyLoad(expr); | 2823 EmitNamedPropertyLoad(expr); |
2824 } else { | 2824 } else { |
2825 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); | 2825 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); |
2826 EmitLoadHomeObject(expr->obj()->AsSuperReference()); | 2826 EmitLoadHomeObject(expr->obj()->AsSuperReference()); |
2827 __ Push(result_register()); | 2827 __ Push(result_register()); |
2828 EmitNamedSuperPropertyLoad(expr); | 2828 EmitNamedSuperPropertyLoad(expr); |
2829 } | 2829 } |
2830 PrepareForBailoutForId(expr->LoadId(), TOS_REG); | |
2831 context()->Plug(r0); | |
2832 } else { | 2830 } else { |
2833 if (!expr->IsSuperAccess()) { | 2831 if (!expr->IsSuperAccess()) { |
2834 VisitForStackValue(expr->obj()); | 2832 VisitForStackValue(expr->obj()); |
2835 VisitForAccumulatorValue(expr->key()); | 2833 VisitForAccumulatorValue(expr->key()); |
2836 __ Move(LoadDescriptor::NameRegister(), r0); | 2834 __ Move(LoadDescriptor::NameRegister(), r0); |
2837 __ pop(LoadDescriptor::ReceiverRegister()); | 2835 __ pop(LoadDescriptor::ReceiverRegister()); |
2838 EmitKeyedPropertyLoad(expr); | 2836 EmitKeyedPropertyLoad(expr); |
2839 } else { | 2837 } else { |
2840 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); | 2838 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); |
2841 EmitLoadHomeObject(expr->obj()->AsSuperReference()); | 2839 EmitLoadHomeObject(expr->obj()->AsSuperReference()); |
2842 __ Push(result_register()); | 2840 __ Push(result_register()); |
2843 VisitForStackValue(expr->key()); | 2841 VisitForStackValue(expr->key()); |
2844 EmitKeyedSuperPropertyLoad(expr); | 2842 EmitKeyedSuperPropertyLoad(expr); |
2845 } | 2843 } |
2846 context()->Plug(r0); | |
2847 } | 2844 } |
| 2845 PrepareForBailoutForId(expr->LoadId(), TOS_REG); |
| 2846 context()->Plug(r0); |
2848 } | 2847 } |
2849 | 2848 |
2850 | 2849 |
2851 void FullCodeGenerator::CallIC(Handle<Code> code, | 2850 void FullCodeGenerator::CallIC(Handle<Code> code, |
2852 TypeFeedbackId ast_id) { | 2851 TypeFeedbackId ast_id) { |
2853 ic_total_count_++; | 2852 ic_total_count_++; |
2854 // All calls must have a predictable size in full-codegen code to ensure that | 2853 // All calls must have a predictable size in full-codegen code to ensure that |
2855 // the debugger can patch them correctly. | 2854 // the debugger can patch them correctly. |
2856 __ Call(code, RelocInfo::CODE_TARGET, ast_id, al, | 2855 __ Call(code, RelocInfo::CODE_TARGET, ast_id, al, |
2857 NEVER_INLINE_TARGET_ADDRESS); | 2856 NEVER_INLINE_TARGET_ADDRESS); |
(...skipping 2548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5406 | 5405 |
5407 DCHECK(interrupt_address == | 5406 DCHECK(interrupt_address == |
5408 isolate->builtins()->OsrAfterStackCheck()->entry()); | 5407 isolate->builtins()->OsrAfterStackCheck()->entry()); |
5409 return OSR_AFTER_STACK_CHECK; | 5408 return OSR_AFTER_STACK_CHECK; |
5410 } | 5409 } |
5411 | 5410 |
5412 | 5411 |
5413 } } // namespace v8::internal | 5412 } } // namespace v8::internal |
5414 | 5413 |
5415 #endif // V8_TARGET_ARCH_ARM | 5414 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |