Index: runtime/vm/flow_graph_allocator.cc |
diff --git a/runtime/vm/flow_graph_allocator.cc b/runtime/vm/flow_graph_allocator.cc |
index 208a4afbd8e8de0a726326ce18bb6fd2f55696eb..e605eac918d64e7a96eead68d581a18f57b594e8 100644 |
--- a/runtime/vm/flow_graph_allocator.cc |
+++ b/runtime/vm/flow_graph_allocator.cc |
@@ -101,24 +101,11 @@ FlowGraphAllocator::FlowGraphAllocator(const FlowGraph& flow_graph, |
// All registers are marked as "not blocked" (array initialized to false). |
// Mark the unavailable ones as "blocked" (true). |
- for (intptr_t i = 0; i < kFirstFreeCpuRegister; i++) { |
- blocked_cpu_registers_[i] = true; |
- } |
- for (intptr_t i = kLastFreeCpuRegister + 1; i < kNumberOfCpuRegisters; i++) { |
- blocked_cpu_registers_[i] = true; |
- } |
- if (TMP != kNoRegister) { |
- blocked_cpu_registers_[TMP] = true; |
- } |
- if (TMP2 != kNoRegister) { |
- blocked_cpu_registers_[TMP2] = true; |
- } |
- if (PP != kNoRegister) { |
- blocked_cpu_registers_[PP] = true; |
+ for (intptr_t i = 0; i < kNumberOfCpuRegisters; i++) { |
+ if ((kDartAvailableCpuRegs & (1 << i)) == 0) { |
+ blocked_cpu_registers_[i] = true; |
+ } |
} |
- blocked_cpu_registers_[SPREG] = true; |
- blocked_cpu_registers_[FPREG] = true; |
- blocked_cpu_registers_[THR] = true; |
// FpuTMP is used as scratch by optimized code and parallel move resolver. |
blocked_fpu_registers_[FpuTMP] = true; |