| 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/arm64/frames-arm64.h" | 5 #include "src/arm64/frames-arm64.h" |
| 6 #include "src/codegen.h" | 6 #include "src/codegen.h" |
| 7 #include "src/deoptimizer.h" | 7 #include "src/deoptimizer.h" |
| 8 #include "src/full-codegen/full-codegen.h" | 8 #include "src/full-codegen/full-codegen.h" |
| 9 #include "src/register-configuration.h" | 9 #include "src/register-configuration.h" |
| 10 #include "src/safepoint-table.h" | 10 #include "src/safepoint-table.h" |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 Register fp_to_sp = x4; | 124 Register fp_to_sp = x4; |
| 125 // Get the address of the location in the code object. This is the return | 125 // Get the address of the location in the code object. This is the return |
| 126 // address for lazy deoptimization. | 126 // address for lazy deoptimization. |
| 127 __ Mov(code_object, lr); | 127 __ Mov(code_object, lr); |
| 128 // Compute the fp-to-sp delta, and correct one word for bailout id. | 128 // Compute the fp-to-sp delta, and correct one word for bailout id. |
| 129 __ Add(fp_to_sp, masm()->StackPointer(), | 129 __ Add(fp_to_sp, masm()->StackPointer(), |
| 130 kSavedRegistersAreaSize + (1 * kPointerSize)); | 130 kSavedRegistersAreaSize + (1 * kPointerSize)); |
| 131 __ Sub(fp_to_sp, fp, fp_to_sp); | 131 __ Sub(fp_to_sp, fp, fp_to_sp); |
| 132 | 132 |
| 133 // Allocate a new deoptimizer object. | 133 // Allocate a new deoptimizer object. |
| 134 __ Mov(x0, 0); |
| 135 Label context_check; |
| 136 __ Ldr(x1, MemOperand(fp, CommonFrameConstants::kContextOrFrameTypeOffset)); |
| 137 __ JumpIfSmi(x1, &context_check); |
| 134 __ Ldr(x0, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset)); | 138 __ Ldr(x0, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset)); |
| 139 __ bind(&context_check); |
| 135 __ Mov(x1, type()); | 140 __ Mov(x1, type()); |
| 136 // Following arguments are already loaded: | 141 // Following arguments are already loaded: |
| 137 // - x2: bailout id | 142 // - x2: bailout id |
| 138 // - x3: code object address | 143 // - x3: code object address |
| 139 // - x4: fp-to-sp delta | 144 // - x4: fp-to-sp delta |
| 140 __ Mov(x5, ExternalReference::isolate_address(isolate())); | 145 __ Mov(x5, ExternalReference::isolate_address(isolate())); |
| 141 | 146 |
| 142 { | 147 { |
| 143 // Call Deoptimizer::New(). | 148 // Call Deoptimizer::New(). |
| 144 AllowExternalCallThatCantCauseGC scope(masm()); | 149 AllowExternalCallThatCantCauseGC scope(masm()); |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) { | 335 void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) { |
| 331 // No embedded constant pool support. | 336 // No embedded constant pool support. |
| 332 UNREACHABLE(); | 337 UNREACHABLE(); |
| 333 } | 338 } |
| 334 | 339 |
| 335 | 340 |
| 336 #undef __ | 341 #undef __ |
| 337 | 342 |
| 338 } // namespace internal | 343 } // namespace internal |
| 339 } // namespace v8 | 344 } // namespace v8 |
| OLD | NEW |