| 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 #if V8_TARGET_ARCH_ARM64 | 5 #if V8_TARGET_ARCH_ARM64 |
| 6 | 6 |
| 7 #include "src/arm64/frames-arm64.h" | 7 #include "src/arm64/frames-arm64.h" |
| 8 #include "src/codegen.h" | 8 #include "src/codegen.h" |
| 9 #include "src/debug/debug.h" | 9 #include "src/debug/debug.h" |
| 10 #include "src/deoptimizer.h" | 10 #include "src/deoptimizer.h" |
| (...skipping 909 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 920 | 920 |
| 921 // Pass the deoptimization type to the runtime system. | 921 // Pass the deoptimization type to the runtime system. |
| 922 __ Mov(x1, Operand(Smi::FromInt(static_cast<int>(type)))); | 922 __ Mov(x1, Operand(Smi::FromInt(static_cast<int>(type)))); |
| 923 __ Push(x1); | 923 __ Push(x1); |
| 924 __ CallRuntime(Runtime::kNotifyDeoptimized); | 924 __ CallRuntime(Runtime::kNotifyDeoptimized); |
| 925 | 925 |
| 926 __ Pop(kInterpreterAccumulatorRegister); // Restore accumulator register. | 926 __ Pop(kInterpreterAccumulatorRegister); // Restore accumulator register. |
| 927 // Tear down internal frame. | 927 // Tear down internal frame. |
| 928 } | 928 } |
| 929 | 929 |
| 930 // Drop state (we don't use these for interpreter deopts) and push PC at top | 930 // Drop state (we don't use this for interpreter deopts). |
| 931 // of stack (to simulate initial call to bytecode handler in interpreter entry | |
| 932 // trampoline). | |
| 933 __ Pop(x1); | |
| 934 __ Drop(1); | 931 __ Drop(1); |
| 935 __ Push(x1); | |
| 936 | 932 |
| 937 // Initialize register file register and dispatch table register. | 933 // Initialize register file register and dispatch table register. |
| 938 __ Add(kInterpreterRegisterFileRegister, fp, | 934 __ Add(kInterpreterRegisterFileRegister, fp, |
| 939 Operand(InterpreterFrameConstants::kRegisterFilePointerFromFp)); | 935 Operand(InterpreterFrameConstants::kRegisterFilePointerFromFp)); |
| 940 __ LoadRoot(kInterpreterDispatchTableRegister, | 936 __ LoadRoot(kInterpreterDispatchTableRegister, |
| 941 Heap::kInterpreterTableRootIndex); | 937 Heap::kInterpreterTableRootIndex); |
| 942 __ Add(kInterpreterDispatchTableRegister, kInterpreterDispatchTableRegister, | 938 __ Add(kInterpreterDispatchTableRegister, kInterpreterDispatchTableRegister, |
| 943 Operand(FixedArray::kHeaderSize - kHeapObjectTag)); | 939 Operand(FixedArray::kHeaderSize - kHeapObjectTag)); |
| 944 | 940 |
| 945 | |
| 946 // Get the context from the frame. | 941 // Get the context from the frame. |
| 947 // TODO(rmcilroy): Update interpreter frame to expect current context at the | 942 // TODO(rmcilroy): Update interpreter frame to expect current context at the |
| 948 // context slot instead of the function context. | 943 // context slot instead of the function context. |
| 949 __ Ldr(kContextRegister, | 944 __ Ldr(kContextRegister, |
| 950 MemOperand(kInterpreterRegisterFileRegister, | 945 MemOperand(kInterpreterRegisterFileRegister, |
| 951 InterpreterFrameConstants::kContextFromRegisterPointer)); | 946 InterpreterFrameConstants::kContextFromRegisterPointer)); |
| 952 | 947 |
| 953 // Get the bytecode array pointer from the frame. | 948 // Get the bytecode array pointer from the frame. |
| 954 __ Ldr(x1, | 949 __ Ldr(x1, |
| 955 MemOperand(kInterpreterRegisterFileRegister, | 950 MemOperand(kInterpreterRegisterFileRegister, |
| (...skipping 1449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2405 } | 2400 } |
| 2406 } | 2401 } |
| 2407 | 2402 |
| 2408 | 2403 |
| 2409 #undef __ | 2404 #undef __ |
| 2410 | 2405 |
| 2411 } // namespace internal | 2406 } // namespace internal |
| 2412 } // namespace v8 | 2407 } // namespace v8 |
| 2413 | 2408 |
| 2414 #endif // V8_TARGET_ARCH_ARM | 2409 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |