Reviewers: Jakob,

Description:
Version 4.1.0.10 (cherry-pick)

Merged eb68d6fe13f13b0697dd2b4ff00df1d7c997669e
Merged 466ed3a34d61dfe108a246e26df986e4986bd4a9

MIPS: remove immediate constraint within CompareAndSwap.

MIPS: Fix 'MIPS: Fix after 'Reland remaining parts of 'Use weak cells in map
checks in polymorphic ICs''.'

[email protected]
BUG=

Please review this at https://codereview.chromium.org/856353002/

Base URL: https://chromium.googlesource.com/v8/[email protected]

Affected files (+8, -6 lines):
  M src/base/atomicops_internals_mips64_gcc.h
  M src/base/atomicops_internals_mips_gcc.h
  M src/ic/mips/ic-compiler-mips.cc
  M src/ic/mips64/ic-compiler-mips64.cc
  M src/version.cc


Index: src/base/atomicops_internals_mips64_gcc.h
diff --git a/src/base/atomicops_internals_mips64_gcc.h b/src/base/atomicops_internals_mips64_gcc.h index 1f629b6ea17a0db31fb5874ceb4c575b47937cea..ccb973c0391ebc1436365df50c6d8defa2262376 100644
--- a/src/base/atomicops_internals_mips64_gcc.h
+++ b/src/base/atomicops_internals_mips64_gcc.h
@@ -59,7 +59,7 @@ inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr,
                        "2:\n"
                        ".set pop\n"
                        : "=&r" (prev), "=m" (*ptr), "=&r" (tmp)
-                       : "Ir" (old_value), "r" (new_value), "m" (*ptr)
+                       : "r" (old_value), "r" (new_value), "m" (*ptr)
                        : "memory");
   return prev;
 }
@@ -196,7 +196,7 @@ inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr,
                        "2:\n"
                        ".set pop\n"
                        : "=&r" (prev), "=m" (*ptr), "=&r" (tmp)
-                       : "Ir" (old_value), "r" (new_value), "m" (*ptr)
+                       : "r" (old_value), "r" (new_value), "m" (*ptr)
                        : "memory");
   return prev;
 }
Index: src/base/atomicops_internals_mips_gcc.h
diff --git a/src/base/atomicops_internals_mips_gcc.h b/src/base/atomicops_internals_mips_gcc.h index d33b66876b96cfeb574141a2a7ec755aa333bf98..442fdd0f96a1d30a3f824d06e0328fb6433897d3 100644
--- a/src/base/atomicops_internals_mips_gcc.h
+++ b/src/base/atomicops_internals_mips_gcc.h
@@ -36,7 +36,7 @@ inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr,
                        "2:\n"
                        ".set pop\n"
                        : "=&r" (prev), "=&r" (tmp)
-                       : "Ir" (old_value), "r" (new_value), "r" (ptr)
+                       : "r" (old_value), "r" (new_value), "r" (ptr)
                        : "memory");
   return prev;
 }
Index: src/ic/mips/ic-compiler-mips.cc
diff --git a/src/ic/mips/ic-compiler-mips.cc b/src/ic/mips/ic-compiler-mips.cc index 000e3266c4021787d455624dd7ea10dab248f5e0..6169404c61a059f1208feaef1e21ca876fe4db52 100644
--- a/src/ic/mips/ic-compiler-mips.cc
+++ b/src/ic/mips/ic-compiler-mips.cc
@@ -62,12 +62,13 @@ Handle<Code> PropertyICCompiler::CompilePolymorphic(TypeHandleList* types, // Separate compare from branch, to provide path for above JumpIfSmi().
       Handle<WeakCell> cell = Map::WeakCellForMap(map);
       __ GetWeakValue(match, cell);
+      __ Subu(match, match, Operand(map_reg));
       if (type->Is(HeapType::Number())) {
         DCHECK(!number_case.is_unused());
         __ bind(&number_case);
       }
       __ Jump(handlers->at(current), RelocInfo::CODE_TARGET, eq, match,
-              Operand(map_reg));
+              Operand(zero_reg));
     }
   }
   DCHECK(number_of_handled_maps != 0);
Index: src/ic/mips64/ic-compiler-mips64.cc
diff --git a/src/ic/mips64/ic-compiler-mips64.cc b/src/ic/mips64/ic-compiler-mips64.cc index 1e1880f88d5b584a5be5da653312f6f327c59f2e..7ed4492ee318fa75c7b6f361dae61ebbf85d6aa9 100644
--- a/src/ic/mips64/ic-compiler-mips64.cc
+++ b/src/ic/mips64/ic-compiler-mips64.cc
@@ -62,12 +62,13 @@ Handle<Code> PropertyICCompiler::CompilePolymorphic(TypeHandleList* types, // Separate compare from branch, to provide path for above JumpIfSmi().
       Handle<WeakCell> cell = Map::WeakCellForMap(map);
       __ GetWeakValue(match, cell);
+      __ Dsubu(match, match, Operand(map_reg));
       if (type->Is(HeapType::Number())) {
         DCHECK(!number_case.is_unused());
         __ bind(&number_case);
       }
       __ Jump(handlers->at(current), RelocInfo::CODE_TARGET, eq, match,
-              Operand(map_reg));
+              Operand(zero_reg));
     }
   }
   DCHECK(number_of_handled_maps != 0);
Index: src/version.cc
diff --git a/src/version.cc b/src/version.cc
index e8b621a5626e7ed3ff0e15c9594fd3825d7abda0..cd259f8306e0c134660dc686d3414403531c66d3 100644
--- a/src/version.cc
+++ b/src/version.cc
@@ -35,7 +35,7 @@
 #define MAJOR_VERSION     4
 #define MINOR_VERSION     1
 #define BUILD_NUMBER      0
-#define PATCH_LEVEL       9
+#define PATCH_LEVEL       10
 // Use 1 for candidates and 0 otherwise.
 // (Boolean macro values are not supported by all preprocessors.)
 #define IS_CANDIDATE_VERSION 0


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to