OSDN Git Service

Fix x86 master build failure.
authorbuzbee <buzbee@google.com>
Thu, 27 Mar 2014 18:22:43 +0000 (11:22 -0700)
committerbuzbee <buzbee@google.com>
Thu, 27 Mar 2014 19:10:00 +0000 (12:10 -0700)
Replace bogus DCHECKs with logic matching pre-cleanup code.
Register pairs are considered temp, promoted, dirty or live if
either register of the pair meets criteria.

Change-Id: If2df891fdd1e3351d4cbe72aaf2a2ac5b34b2110

compiler/dex/quick/mir_to_lir.h
compiler/dex/quick/ralloc_util.cc

index 68c3d0f..946adc5 100644 (file)
@@ -482,11 +482,11 @@ class Mir2Lir : public Backend {
     void FreeTemp(int reg);
     void FreeTemp(RegStorage reg);
     RegisterInfo* IsLive(int reg);
-    RegisterInfo* IsLive(RegStorage reg);
+    bool IsLive(RegStorage reg);
     RegisterInfo* IsTemp(int reg);
-    RegisterInfo* IsTemp(RegStorage reg);
+    bool IsTemp(RegStorage reg);
     RegisterInfo* IsPromoted(int reg);
-    RegisterInfo* IsPromoted(RegStorage reg);
+    bool IsPromoted(RegStorage reg);
     bool IsDirty(int reg);
     bool IsDirty(RegStorage reg);
     void LockTemp(int reg);
index 3c49756..137d5eb 100644 (file)
@@ -431,10 +431,9 @@ Mir2Lir::RegisterInfo* Mir2Lir::IsLive(int reg) {
   return p->live ? p : NULL;
 }
 
-Mir2Lir::RegisterInfo* Mir2Lir::IsLive(RegStorage reg) {
+bool Mir2Lir::IsLive(RegStorage reg) {
   if (reg.IsPair()) {
-    DCHECK_EQ(IsLive(reg.GetLowReg()) == nullptr, IsLive(reg.GetHighReg()) == nullptr);
-    return IsLive(reg.GetLowReg());
+    return IsLive(reg.GetLowReg()) || IsLive(reg.GetHighReg());
   } else {
     return IsLive(reg.GetReg());
   }
@@ -445,10 +444,9 @@ Mir2Lir::RegisterInfo* Mir2Lir::IsTemp(int reg) {
   return (p->is_temp) ? p : NULL;
 }
 
-Mir2Lir::RegisterInfo* Mir2Lir::IsTemp(RegStorage reg) {
+bool Mir2Lir::IsTemp(RegStorage reg) {
   if (reg.IsPair()) {
-    DCHECK_EQ(IsTemp(reg.GetLowReg()) == nullptr, IsTemp(reg.GetHighReg()) == nullptr);
-    return IsTemp(reg.GetLowReg());
+    return IsTemp(reg.GetLowReg()) || IsTemp(reg.GetHighReg());
   } else {
     return IsTemp(reg.GetReg());
   }
@@ -459,10 +457,9 @@ Mir2Lir::RegisterInfo* Mir2Lir::IsPromoted(int reg) {
   return (p->is_temp) ? NULL : p;
 }
 
-Mir2Lir::RegisterInfo* Mir2Lir::IsPromoted(RegStorage reg) {
+bool Mir2Lir::IsPromoted(RegStorage reg) {
   if (reg.IsPair()) {
-    DCHECK_EQ(IsPromoted(reg.GetLowReg()) == nullptr, IsPromoted(reg.GetHighReg()) == nullptr);
-    return IsPromoted(reg.GetLowReg());
+    return IsPromoted(reg.GetLowReg()) || IsPromoted(reg.GetHighReg());
   } else {
     return IsPromoted(reg.GetReg());
   }
@@ -475,8 +472,7 @@ bool Mir2Lir::IsDirty(int reg) {
 
 bool Mir2Lir::IsDirty(RegStorage reg) {
   if (reg.IsPair()) {
-    DCHECK_EQ(IsDirty(reg.GetLowReg()), IsDirty(reg.GetHighReg()));
-    return IsDirty(reg.GetLowReg());
+    return IsDirty(reg.GetLowReg()) || IsDirty(reg.GetHighReg());
   } else {
     return IsDirty(reg.GetReg());
   }