Reviewers: Lasse Reichstein,

Description:
Implement more of x64 register allocator.

Please review this at http://codereview.chromium.org/126043

SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/

Affected files:
   M     src/x64/register-allocator-x64-inl.h


Index: src/x64/register-allocator-x64-inl.h
===================================================================
--- src/x64/register-allocator-x64-inl.h        (revision 2148)
+++ src/x64/register-allocator-x64-inl.h        (working copy)
@@ -37,31 +37,50 @@
  // RegisterAllocator implementation.

  bool RegisterAllocator::IsReserved(Register reg) {
-  return reg.is(rsp) || reg.is(rbp) || reg.is(rsi) || reg.is(r10);
+  return reg.is(rsp) || reg.is(rbp) || reg.is(rsi) ||
+      reg.is(kScratchRegister) || reg.is(r12);
  }


  // The register allocator uses small integers to represent the
  // non-reserved assembler registers.
-
  int RegisterAllocator::ToNumber(Register reg) {
    ASSERT(reg.is_valid() && !IsReserved(reg));
-  return reg.code();
+  static int numbers[] = {
+    0,   // rax
+    2,   // rcx
+    3,   // rdx
+    1,   // rbx
+    -1,  // rsp
+    -1,  // rbp
+    -1,  // rsi
+    4,   // rdi
+    5,   // r8
+    6,   // r9
+    -1,  // r10
+    7,   // r11
+    -1,  // r12
+    8,   // r13
+    9,   // r14
+    10   // r15
+  };
+  return numbers[reg.code()];
  }


  Register RegisterAllocator::ToRegister(int num) {
    ASSERT(num >= 0 && num < kNumRegisters);
-  Register result = {num};
-  return result;
+  static Register registers[] =
+      { rax, rbx, rcx, rdx, rdi, r8, r9, r11, r13, r14, r15 };
+  return registers[num];
  }


  void RegisterAllocator::Initialize() {
-  // TODO(X64): Implement.
+  Reset();
+  // The non-reserved rdi register is live on JS function entry.
+  Use(rdi);  // JS function.
  }
-
-
  } }  // namespace v8::internal

  #endif  // V8_X64_REGISTER_ALLOCATOR_X64_INL_H_



--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to