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

Side by Side Diff: src/arm64/macro-assembler-arm64.h

Issue 264773004: Arm64: Ensure that csp is always aligned to 16 byte values even if jssp is not. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/arm64/macro-assembler-arm64.cc » ('j') | src/arm64/macro-assembler-arm64.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ 5 #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_H_
6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ 6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "v8globals.h" 10 #include "v8globals.h"
(...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 Bic(csp, StackPointer(), sp_alignment - 1); 771 Bic(csp, StackPointer(), sp_alignment - 1);
772 SetStackPointer(csp); 772 SetStackPointer(csp);
773 } 773 }
774 774
775 // Push the system stack pointer (csp) down to allow the same to be done to 775 // Push the system stack pointer (csp) down to allow the same to be done to
776 // the current stack pointer (according to StackPointer()). This must be 776 // the current stack pointer (according to StackPointer()). This must be
777 // called _before_ accessing the memory. 777 // called _before_ accessing the memory.
778 // 778 //
779 // This is necessary when pushing or otherwise adding things to the stack, to 779 // This is necessary when pushing or otherwise adding things to the stack, to
780 // satisfy the AAPCS64 constraint that the memory below the system stack 780 // satisfy the AAPCS64 constraint that the memory below the system stack
781 // pointer is not accessed. 781 // pointer is not accessed. The amount pushed will be increased as necessary
782 // to ensure csp remains aligned to 16 bytes.
782 // 783 //
783 // This method asserts that StackPointer() is not csp, since the call does 784 // This method asserts that StackPointer() is not csp, since the call does
784 // not make sense in that context. 785 // not make sense in that context.
785 inline void BumpSystemStackPointer(const Operand& space); 786 inline void BumpSystemStackPointer(const Operand& space);
786 787
788 // Re-synchronizes the system stack pointer (csp) with the current stack
789 // pointer (according to StackPointer()). This function will ensure the
790 // new value of the system stack pointer is remains aligned to 16 bytes, and
791 // is lower than or equal to the value of the current stack pointer.
792 //
793 // This method asserts that StackPointer() is not csp, since the call does
794 // not make sense in that context.
795 inline void SyncSystemStackPointer();
796
787 // Helpers ------------------------------------------------------------------ 797 // Helpers ------------------------------------------------------------------
788 // Root register. 798 // Root register.
789 inline void InitializeRootRegister(); 799 inline void InitializeRootRegister();
790 800
791 // Load an object from the root table. 801 // Load an object from the root table.
792 void LoadRoot(CPURegister destination, 802 void LoadRoot(CPURegister destination,
793 Heap::RootListIndex index); 803 Heap::RootListIndex index);
794 // Store an object to the root table. 804 // Store an object to the root table.
795 void StoreRoot(Register source, 805 void StoreRoot(Register source,
796 Heap::RootListIndex index); 806 Heap::RootListIndex index);
(...skipping 1487 matching lines...) Expand 10 before | Expand all | Expand 10 after
2284 #error "Unsupported option" 2294 #error "Unsupported option"
2285 #define CODE_COVERAGE_STRINGIFY(x) #x 2295 #define CODE_COVERAGE_STRINGIFY(x) #x
2286 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 2296 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
2287 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 2297 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
2288 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 2298 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
2289 #else 2299 #else
2290 #define ACCESS_MASM(masm) masm-> 2300 #define ACCESS_MASM(masm) masm->
2291 #endif 2301 #endif
2292 2302
2293 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ 2303 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm64/macro-assembler-arm64.cc » ('j') | src/arm64/macro-assembler-arm64.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698