Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(395)

Side by Side Diff: runtime/vm/stub_code_arm64.cc

Issue 1559223003: Treat R19 is a C preserved register, fixing crashing on Linux ARM64. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/globals.h" 5 #include "vm/globals.h"
6 #if defined(TARGET_ARCH_ARM64) 6 #if defined(TARGET_ARCH_ARM64)
7 7
8 #include "vm/assembler.h" 8 #include "vm/assembler.h"
9 #include "vm/code_generator.h" 9 #include "vm/code_generator.h"
10 #include "vm/compiler.h" 10 #include "vm/compiler.h"
(...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after
822 __ StoreToOffset(R6, THR, Thread::vm_tag_offset()); 822 __ StoreToOffset(R6, THR, Thread::vm_tag_offset());
823 823
824 // Save top resource and top exit frame info. Use R6 as a temporary register. 824 // Save top resource and top exit frame info. Use R6 as a temporary register.
825 // StackFrameIterator reads the top exit frame info saved in this frame. 825 // StackFrameIterator reads the top exit frame info saved in this frame.
826 __ LoadFromOffset(R6, THR, Thread::top_resource_offset()); 826 __ LoadFromOffset(R6, THR, Thread::top_resource_offset());
827 __ StoreToOffset(ZR, THR, Thread::top_resource_offset()); 827 __ StoreToOffset(ZR, THR, Thread::top_resource_offset());
828 __ Push(R6); 828 __ Push(R6);
829 __ LoadFromOffset(R6, THR, Thread::top_exit_frame_info_offset()); 829 __ LoadFromOffset(R6, THR, Thread::top_exit_frame_info_offset());
830 __ StoreToOffset(ZR, THR, Thread::top_exit_frame_info_offset()); 830 __ StoreToOffset(ZR, THR, Thread::top_exit_frame_info_offset());
831 // kExitLinkSlotFromEntryFp must be kept in sync with the code below. 831 // kExitLinkSlotFromEntryFp must be kept in sync with the code below.
832 ASSERT(kExitLinkSlotFromEntryFp == -21); 832 ASSERT(kExitLinkSlotFromEntryFp == -22);
833 __ Push(R6); 833 __ Push(R6);
834 834
835 // Load arguments descriptor array into R4, which is passed to Dart code. 835 // Load arguments descriptor array into R4, which is passed to Dart code.
836 __ LoadFromOffset(R4, R1, VMHandles::kOffsetOfRawPtrInHandle); 836 __ LoadFromOffset(R4, R1, VMHandles::kOffsetOfRawPtrInHandle);
837 837
838 // Load number of arguments into S5. 838 // Load number of arguments into S5.
839 __ LoadFieldFromOffset(R5, R4, ArgumentsDescriptor::count_offset()); 839 __ LoadFieldFromOffset(R5, R4, ArgumentsDescriptor::count_offset());
840 __ SmiUntag(R5); 840 __ SmiUntag(R5);
841 841
842 // Compute address of 'arguments array' data area into R2. 842 // Compute address of 'arguments array' data area into R2.
(...skipping 1346 matching lines...) Expand 10 before | Expand all | Expand 10 after
2189 __ Bind(&miss); 2189 __ Bind(&miss);
2190 __ LoadIsolate(R2); 2190 __ LoadIsolate(R2);
2191 __ ldr(CODE_REG, Address(R2, Isolate::ic_miss_code_offset())); 2191 __ ldr(CODE_REG, Address(R2, Isolate::ic_miss_code_offset()));
2192 __ ldr(R1, FieldAddress(CODE_REG, Code::entry_point_offset())); 2192 __ ldr(R1, FieldAddress(CODE_REG, Code::entry_point_offset()));
2193 __ ret(); 2193 __ ret();
2194 } 2194 }
2195 2195
2196 } // namespace dart 2196 } // namespace dart
2197 2197
2198 #endif // defined TARGET_ARCH_ARM64 2198 #endif // defined TARGET_ARCH_ARM64
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698