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 989 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1000 __ Push(lr, fp, cp, x1); | 1000 __ Push(lr, fp, cp, x1); |
1001 __ Add(fp, jssp, StandardFrameConstants::kFixedFrameSizeFromFp); | 1001 __ Add(fp, jssp, StandardFrameConstants::kFixedFrameSizeFromFp); |
1002 | 1002 |
1003 // Get the bytecode array from the function object (or from the DebugInfo if | 1003 // Get the bytecode array from the function object (or from the DebugInfo if |
1004 // it is present) and load it into kInterpreterBytecodeArrayRegister. | 1004 // it is present) and load it into kInterpreterBytecodeArrayRegister. |
1005 __ Ldr(x0, FieldMemOperand(x1, JSFunction::kSharedFunctionInfoOffset)); | 1005 __ Ldr(x0, FieldMemOperand(x1, JSFunction::kSharedFunctionInfoOffset)); |
1006 Register debug_info = kInterpreterBytecodeArrayRegister; | 1006 Register debug_info = kInterpreterBytecodeArrayRegister; |
1007 Label load_debug_bytecode_array, bytecode_array_loaded; | 1007 Label load_debug_bytecode_array, bytecode_array_loaded; |
1008 DCHECK(!debug_info.is(x0)); | 1008 DCHECK(!debug_info.is(x0)); |
1009 __ Ldr(debug_info, FieldMemOperand(x0, SharedFunctionInfo::kDebugInfoOffset)); | 1009 __ Ldr(debug_info, FieldMemOperand(x0, SharedFunctionInfo::kDebugInfoOffset)); |
1010 __ Cmp(debug_info, Operand(DebugInfo::uninitialized())); | 1010 __ JumpIfNotSmi(debug_info, &load_debug_bytecode_array); |
1011 __ B(ne, &load_debug_bytecode_array); | |
1012 __ Ldr(kInterpreterBytecodeArrayRegister, | 1011 __ Ldr(kInterpreterBytecodeArrayRegister, |
1013 FieldMemOperand(x0, SharedFunctionInfo::kFunctionDataOffset)); | 1012 FieldMemOperand(x0, SharedFunctionInfo::kFunctionDataOffset)); |
1014 __ Bind(&bytecode_array_loaded); | 1013 __ Bind(&bytecode_array_loaded); |
1015 | 1014 |
1016 // Check whether we should continue to use the interpreter. | 1015 // Check whether we should continue to use the interpreter. |
1017 Label switch_to_different_code_kind; | 1016 Label switch_to_different_code_kind; |
1018 __ Ldr(x0, FieldMemOperand(x0, SharedFunctionInfo::kCodeOffset)); | 1017 __ Ldr(x0, FieldMemOperand(x0, SharedFunctionInfo::kCodeOffset)); |
1019 __ Cmp(x0, Operand(masm->CodeObject())); // Self-reference to this code. | 1018 __ Cmp(x0, Operand(masm->CodeObject())); // Self-reference to this code. |
1020 __ B(ne, &switch_to_different_code_kind); | 1019 __ B(ne, &switch_to_different_code_kind); |
1021 | 1020 |
(...skipping 2115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3137 __ Unreachable(); | 3136 __ Unreachable(); |
3138 } | 3137 } |
3139 } | 3138 } |
3140 | 3139 |
3141 #undef __ | 3140 #undef __ |
3142 | 3141 |
3143 } // namespace internal | 3142 } // namespace internal |
3144 } // namespace v8 | 3143 } // namespace v8 |
3145 | 3144 |
3146 #endif // V8_TARGET_ARCH_ARM | 3145 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |