| 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 753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 764 // Generate the OSR entry prologue at the first unknown OSR value, or if there | 764 // Generate the OSR entry prologue at the first unknown OSR value, or if there |
| 765 // are none, at the OSR entrypoint instruction. | 765 // are none, at the OSR entrypoint instruction. |
| 766 if (osr_pc_offset_ >= 0) return; | 766 if (osr_pc_offset_ >= 0) return; |
| 767 | 767 |
| 768 osr_pc_offset_ = masm()->pc_offset(); | 768 osr_pc_offset_ = masm()->pc_offset(); |
| 769 | 769 |
| 770 // Adjust the frame size, subsuming the unoptimized frame into the | 770 // Adjust the frame size, subsuming the unoptimized frame into the |
| 771 // optimized frame. | 771 // optimized frame. |
| 772 int slots = GetStackSlotCount() - graph()->osr()->UnoptimizedFrameSlots(); | 772 int slots = GetStackSlotCount() - graph()->osr()->UnoptimizedFrameSlots(); |
| 773 DCHECK(slots >= 0); | 773 DCHECK(slots >= 0); |
| 774 __ OSRDropVectorFromStack(graph()->osr()->UnoptimizedFrameSlots(), x2, x0); |
| 774 __ Claim(slots); | 775 __ Claim(slots); |
| 775 } | 776 } |
| 776 | 777 |
| 777 | 778 |
| 778 void LCodeGen::GenerateBodyInstructionPre(LInstruction* instr) { | 779 void LCodeGen::GenerateBodyInstructionPre(LInstruction* instr) { |
| 779 if (instr->IsCall()) { | 780 if (instr->IsCall()) { |
| 780 EnsureSpaceForLazyDeopt(Deoptimizer::patch_size()); | 781 EnsureSpaceForLazyDeopt(Deoptimizer::patch_size()); |
| 781 } | 782 } |
| 782 if (!instr->IsLazyBailout() && !instr->IsGap()) { | 783 if (!instr->IsLazyBailout() && !instr->IsGap()) { |
| 783 safepoints_.BumpLastLazySafepointIndex(); | 784 safepoints_.BumpLastLazySafepointIndex(); |
| (...skipping 5313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6097 Handle<ScopeInfo> scope_info = instr->scope_info(); | 6098 Handle<ScopeInfo> scope_info = instr->scope_info(); |
| 6098 __ Push(scope_info); | 6099 __ Push(scope_info); |
| 6099 __ Push(ToRegister(instr->function())); | 6100 __ Push(ToRegister(instr->function())); |
| 6100 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 6101 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
| 6101 RecordSafepoint(Safepoint::kNoLazyDeopt); | 6102 RecordSafepoint(Safepoint::kNoLazyDeopt); |
| 6102 } | 6103 } |
| 6103 | 6104 |
| 6104 | 6105 |
| 6105 | 6106 |
| 6106 } } // namespace v8::internal | 6107 } } // namespace v8::internal |
| OLD | NEW |