OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 #include "src/arm64/lithium-codegen-arm64.h" | 7 #include "src/arm64/lithium-codegen-arm64.h" |
8 #include "src/arm64/lithium-gap-resolver-arm64.h" | 8 #include "src/arm64/lithium-gap-resolver-arm64.h" |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" |
(...skipping 751 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
762 // Generate the OSR entry prologue at the first unknown OSR value, or if there | 762 // Generate the OSR entry prologue at the first unknown OSR value, or if there |
763 // are none, at the OSR entrypoint instruction. | 763 // are none, at the OSR entrypoint instruction. |
764 if (osr_pc_offset_ >= 0) return; | 764 if (osr_pc_offset_ >= 0) return; |
765 | 765 |
766 osr_pc_offset_ = masm()->pc_offset(); | 766 osr_pc_offset_ = masm()->pc_offset(); |
767 | 767 |
768 // Adjust the frame size, subsuming the unoptimized frame into the | 768 // Adjust the frame size, subsuming the unoptimized frame into the |
769 // optimized frame. | 769 // optimized frame. |
770 int slots = GetStackSlotCount() - graph()->osr()->UnoptimizedFrameSlots(); | 770 int slots = GetStackSlotCount() - graph()->osr()->UnoptimizedFrameSlots(); |
771 DCHECK(slots >= 0); | 771 DCHECK(slots >= 0); |
| 772 __ AdaptUnoptimizedFrameForOsrEntry(graph()->osr()->UnoptimizedFrameSlots(), |
| 773 x2, x0); |
772 __ Claim(slots); | 774 __ Claim(slots); |
773 } | 775 } |
774 | 776 |
775 | 777 |
776 void LCodeGen::GenerateBodyInstructionPre(LInstruction* instr) { | 778 void LCodeGen::GenerateBodyInstructionPre(LInstruction* instr) { |
777 if (instr->IsCall()) { | 779 if (instr->IsCall()) { |
778 EnsureSpaceForLazyDeopt(Deoptimizer::patch_size()); | 780 EnsureSpaceForLazyDeopt(Deoptimizer::patch_size()); |
779 } | 781 } |
780 if (!instr->IsLazyBailout() && !instr->IsGap()) { | 782 if (!instr->IsLazyBailout() && !instr->IsGap()) { |
781 safepoints_.BumpLastLazySafepointIndex(); | 783 safepoints_.BumpLastLazySafepointIndex(); |
(...skipping 5248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6030 Handle<ScopeInfo> scope_info = instr->scope_info(); | 6032 Handle<ScopeInfo> scope_info = instr->scope_info(); |
6031 __ Push(scope_info); | 6033 __ Push(scope_info); |
6032 __ Push(ToRegister(instr->function())); | 6034 __ Push(ToRegister(instr->function())); |
6033 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 6035 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
6034 RecordSafepoint(Safepoint::kNoLazyDeopt); | 6036 RecordSafepoint(Safepoint::kNoLazyDeopt); |
6035 } | 6037 } |
6036 | 6038 |
6037 | 6039 |
6038 | 6040 |
6039 } } // namespace v8::internal | 6041 } } // namespace v8::internal |
OLD | NEW |