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

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

Issue 233373002: ARM64: Preserve x8 and x9 when necessary. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 8 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 | « src/arm64/code-stubs-arm64.cc ('k') | src/arm64/macro-assembler-arm64.cc » ('j') | no next file with comments »
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 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 1909 matching lines...) Expand 10 before | Expand all | Expand 10 after
1920 1920
1921 // Load the initial map from the global function. The registers function and 1921 // Load the initial map from the global function. The registers function and
1922 // map can be the same, function is then overwritten. 1922 // map can be the same, function is then overwritten.
1923 void LoadGlobalFunctionInitialMap(Register function, 1923 void LoadGlobalFunctionInitialMap(Register function,
1924 Register map, 1924 Register map,
1925 Register scratch); 1925 Register scratch);
1926 1926
1927 CPURegList* TmpList() { return &tmp_list_; } 1927 CPURegList* TmpList() { return &tmp_list_; }
1928 CPURegList* FPTmpList() { return &fptmp_list_; } 1928 CPURegList* FPTmpList() { return &fptmp_list_; }
1929 1929
1930 static CPURegList DefaultTmpList();
1931 static CPURegList DefaultFPTmpList();
1932
1930 // Like printf, but print at run-time from generated code. 1933 // Like printf, but print at run-time from generated code.
1931 // 1934 //
1932 // The caller must ensure that arguments for floating-point placeholders 1935 // The caller must ensure that arguments for floating-point placeholders
1933 // (such as %e, %f or %g) are FPRegisters, and that arguments for integer 1936 // (such as %e, %f or %g) are FPRegisters, and that arguments for integer
1934 // placeholders are Registers. 1937 // placeholders are Registers.
1935 // 1938 //
1936 // A maximum of four arguments may be given to any single Printf call. The 1939 // A maximum of four arguments may be given to any single Printf call. The
1937 // arguments must be of the same type, but they do not need to have the same 1940 // arguments must be of the same type, but they do not need to have the same
1938 // size. 1941 // size.
1939 // 1942 //
1940 // The following registers cannot be printed: 1943 // The following registers cannot be printed:
1941 // StackPointer(), csp. 1944 // StackPointer(), csp.
1942 // 1945 //
1943 // This function automatically preserves caller-saved registers so that 1946 // This function automatically preserves caller-saved registers so that
1944 // calling code can use Printf at any point without having to worry about 1947 // calling code can use Printf at any point without having to worry about
1945 // corruption. The preservation mechanism generates a lot of code. If this is 1948 // corruption. The preservation mechanism generates a lot of code. If this is
1946 // a problem, preserve the important registers manually and then call 1949 // a problem, preserve the important registers manually and then call
1947 // PrintfNoPreserve. Callee-saved registers are not used by Printf, and are 1950 // PrintfNoPreserve. Callee-saved registers are not used by Printf, and are
1948 // implicitly preserved. 1951 // implicitly preserved.
1949 // 1952 //
1950 // Unlike many MacroAssembler functions, x8 and x9 are guaranteed to be
1951 // preserved, and can be printed. This allows Printf to be used during debug
1952 // code.
1953 //
1954 // This function assumes (and asserts) that the current stack pointer is 1953 // This function assumes (and asserts) that the current stack pointer is
1955 // callee-saved, not caller-saved. This is most likely the case anyway, as a 1954 // callee-saved, not caller-saved. This is most likely the case anyway, as a
1956 // caller-saved stack pointer doesn't make a lot of sense. 1955 // caller-saved stack pointer doesn't make a lot of sense.
1957 void Printf(const char * format, 1956 void Printf(const char * format,
1958 const CPURegister& arg0 = NoCPUReg, 1957 const CPURegister& arg0 = NoCPUReg,
1959 const CPURegister& arg1 = NoCPUReg, 1958 const CPURegister& arg1 = NoCPUReg,
1960 const CPURegister& arg2 = NoCPUReg, 1959 const CPURegister& arg2 = NoCPUReg,
1961 const CPURegister& arg3 = NoCPUReg); 1960 const CPURegister& arg3 = NoCPUReg);
1962 1961
1963 // Like Printf, but don't preserve any caller-saved registers, not even 'lr'. 1962 // Like Printf, but don't preserve any caller-saved registers, not even 'lr'.
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
2309 #error "Unsupported option" 2308 #error "Unsupported option"
2310 #define CODE_COVERAGE_STRINGIFY(x) #x 2309 #define CODE_COVERAGE_STRINGIFY(x) #x
2311 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 2310 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
2312 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 2311 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
2313 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 2312 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
2314 #else 2313 #else
2315 #define ACCESS_MASM(masm) masm-> 2314 #define ACCESS_MASM(masm) masm->
2316 #endif 2315 #endif
2317 2316
2318 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ 2317 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_
OLDNEW
« no previous file with comments | « src/arm64/code-stubs-arm64.cc ('k') | src/arm64/macro-assembler-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698