Index: runtime/vm/constants_x64.h |
diff --git a/runtime/vm/constants_x64.h b/runtime/vm/constants_x64.h |
index c2b48c56cab5b89b08ad3ae8eef6c0ef4765ffbd..9c92faa5d030af33954b91ee4b929e957dfb0385 100644 |
--- a/runtime/vm/constants_x64.h |
+++ b/runtime/vm/constants_x64.h |
@@ -8,7 +8,6 @@ |
namespace dart { |
enum Register { |
- kFirstFreeCpuRegister = 0, |
RAX = 0, |
RCX = 1, |
RDX = 2, |
@@ -25,9 +24,8 @@ enum Register { |
R13 = 13, |
R14 = 14, |
R15 = 15, |
- kLastFreeCpuRegister = 15, |
kNumberOfCpuRegisters = 16, |
- kNoRegister = -1 // Signals an illegal register. |
+ kNoRegister = -1, // Signals an illegal register. |
}; |
@@ -96,6 +94,7 @@ const Register ARGS_DESC_REG = R10; // Arguments descriptor register. |
const Register CODE_REG = R12; |
const Register THR = R14; // Caches current thread in generated code. |
+ |
// Exception object is passed in this register to the catch handlers when an |
// exception is thrown. |
const Register kExceptionObjectReg = RAX; |
@@ -105,6 +104,20 @@ const Register kExceptionObjectReg = RAX; |
const Register kStackTraceObjectReg = RDX; |
+typedef uint32_t RegList; |
+const RegList kAllCpuRegistersList = 0xFFFF; |
+ |
+const RegList kReservedCpuRegisters = |
+ (1 << SPREG) | |
+ (1 << FPREG) | |
+ (1 << TMP) | |
+ (1 << PP) | |
+ (1 << THR); |
+// CPU registers available to Dart allocator. |
+const RegList kDartAvailableCpuRegs = |
+ kAllCpuRegistersList & ~kReservedCpuRegisters; |
+ |
+ |
enum ScaleFactor { |
TIMES_1 = 0, |
TIMES_2 = 1, |