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

Unified Diff: runtime/vm/constants_mips.h

Issue 1417433002: Don't touch x18 on ARM64 - it is globally reserved on iOS. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/constants_ia32.h ('k') | runtime/vm/constants_x64.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/constants_mips.h
diff --git a/runtime/vm/constants_mips.h b/runtime/vm/constants_mips.h
index fed178f1ce07b59b678579fc7f4079a3268a2ff3..c4656d54b6423a13f8610c30a0a1ade0e6d71726 100644
--- a/runtime/vm/constants_mips.h
+++ b/runtime/vm/constants_mips.h
@@ -11,8 +11,7 @@ namespace dart {
enum Register {
R0 = 0,
- R1 = 1,
- kFirstFreeCpuRegister = 2,
+ R1 = 1, // AT aka TMP
R2 = 2,
R3 = 3,
R4 = 4,
@@ -30,23 +29,23 @@ enum Register {
R16 = 16,
R17 = 17,
R18 = 18,
- R19 = 19,
+ R19 = 19, // THR
R20 = 20,
R21 = 21,
- kLastFreeCpuRegister = 21,
- R22 = 22,
- R23 = 23,
+ R22 = 22, // CTX
+ R23 = 23, // PP
R24 = 24,
R25 = 25,
R26 = 26,
R27 = 27,
R28 = 28,
- R29 = 29,
- R30 = 30,
- R31 = 31,
+ R29 = 29, // SP
+ R30 = 30, // FP
+ R31 = 31, // RA
kNumberOfCpuRegisters = 32,
IMM = 32, // Positive value is easier to encode than kNoRegister in bitfield.
- kNoRegister = -1,
+ kNoRegister = -1, // Signals an illegal register.
+
// Register aliases.
ZR = R0,
@@ -188,6 +187,7 @@ const Register ICREG = S5; // IC data register.
const Register ARGS_DESC_REG = S4;
const Register THR = S3; // Caches current thread in generated code.
+
// The code that generates a comparison can be far away from the code that
// generates the branch that uses the result of that comparison. In this case,
// CMPRES1 and CMPRES2 are used for the results of the comparison. We need two
@@ -207,7 +207,6 @@ const Register kStackTraceObjectReg = V1;
typedef uint32_t RegList;
const RegList kAllCpuRegistersList = 0xFFFFFFFF;
-
const RegList kAbiArgumentCpuRegs =
(1 << A0) | (1 << A1) | (1 << A2) | (1 << A3);
const RegList kAbiPreservedCpuRegs =
@@ -221,13 +220,24 @@ const FRegister kAbiLastPreservedFpuReg =
static_cast<FRegister>(kNumberOfFRegisters - 1);
const int kAbiPreservedFpuRegCount = 12;
+const RegList kReservedCpuRegisters =
+ (1 << SPREG) |
+ (1 << FPREG) |
+ (1 << TMP) |
+ (1 << PP) |
+ (1 << THR) |
+ (1 << CTX) |
+ (1 << ZR) |
+ (1 << CMPRES1) |
+ (1 << CMPRES2) |
+ (1 << K0) |
+ (1 << K1) |
+ (1 << GP) |
+ (1 << RA);
// CPU registers available to Dart allocator.
const RegList kDartAvailableCpuRegs =
- (1 << R2) | (1 << R3) | (1 << R4) | (1 << R5) |
- (1 << R6) | (1 << R7) | (1 << R8) | (1 << R9) |
- (1 << R10) | (1 << R11) | (1 << R12) | (1 << R13) |
- (1 << R14) | (1 << R15) | (1 << R16) | (1 << R17) |
- (1 << R18) | (1 << R19) | (1 << R20) | (1 << R21);
+ kAllCpuRegistersList & ~kReservedCpuRegisters;
+// Registers available to Dart that are not preserved by runtime calls.
const RegList kDartVolatileCpuRegs =
kDartAvailableCpuRegs & ~kAbiPreservedCpuRegs;
const int kDartVolatileCpuRegCount = 14;
« no previous file with comments | « runtime/vm/constants_ia32.h ('k') | runtime/vm/constants_x64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698