Revision: 20212
Author:   alexandre.ra...@arm.com
Date:     Mon Mar 24 17:41:37 2014 UTC
Log:      ARM64: Fix Register and FPRegister copy constructors.

This issue was introduced in r19156.

R=u...@chromium.org

Review URL: https://codereview.chromium.org/207743003
http://code.google.com/p/v8/source/detail?r=20212

Modified:
 /branches/bleeding_edge/src/arm64/assembler-arm64.h
 /branches/bleeding_edge/src/arm64/macro-assembler-arm64.h
 /branches/bleeding_edge/src/arm64/stub-cache-arm64.cc

=======================================
--- /branches/bleeding_edge/src/arm64/assembler-arm64.h Mon Mar 24 16:11:28 2014 UTC +++ /branches/bleeding_edge/src/arm64/assembler-arm64.h Mon Mar 24 17:41:37 2014 UTC
@@ -115,7 +115,7 @@

 struct Register : public CPURegister {
   static Register Create(unsigned code, unsigned size) {
-    return CPURegister::Create(code, size, CPURegister::kRegister);
+ return Register(CPURegister::Create(code, size, CPURegister::kRegister));
   }

   Register() {
@@ -124,12 +124,19 @@
     reg_type = CPURegister::kNoRegister;
   }

-  Register(const CPURegister& r) {  // NOLINT(runtime/explicit)
+  explicit Register(const CPURegister& r) {
     reg_code = r.reg_code;
     reg_size = r.reg_size;
     reg_type = r.reg_type;
     ASSERT(IsValidOrNone());
   }
+
+  Register(const Register& r) {  // NOLINT(runtime/explicit)
+    reg_code = r.reg_code;
+    reg_size = r.reg_size;
+    reg_type = r.reg_type;
+    ASSERT(IsValidOrNone());
+  }

   bool IsValid() const {
     ASSERT(IsRegister() || IsNone());
@@ -236,7 +243,8 @@

 struct FPRegister : public CPURegister {
   static FPRegister Create(unsigned code, unsigned size) {
-    return CPURegister::Create(code, size, CPURegister::kFPRegister);
+    return FPRegister(
+        CPURegister::Create(code, size, CPURegister::kFPRegister));
   }

   FPRegister() {
@@ -245,7 +253,14 @@
     reg_type = CPURegister::kNoRegister;
   }

-  FPRegister(const CPURegister& r) {  // NOLINT(runtime/explicit)
+  explicit FPRegister(const CPURegister& r) {
+    reg_code = r.reg_code;
+    reg_size = r.reg_size;
+    reg_type = r.reg_type;
+    ASSERT(IsValidOrNone());
+  }
+
+  FPRegister(const FPRegister& r) {  // NOLINT(runtime/explicit)
     reg_code = r.reg_code;
     reg_size = r.reg_size;
     reg_type = r.reg_type;
=======================================
--- /branches/bleeding_edge/src/arm64/macro-assembler-arm64.h Mon Mar 24 16:41:37 2014 UTC +++ /branches/bleeding_edge/src/arm64/macro-assembler-arm64.h Mon Mar 24 17:41:37 2014 UTC
@@ -2216,7 +2216,7 @@
   FPRegister AcquireD() { return AcquireNextAvailable(availablefp_).D(); }

   Register UnsafeAcquire(const Register& reg) {
-    return UnsafeAcquire(available_, reg);
+    return Register(UnsafeAcquire(available_, reg));
   }

   Register AcquireSameSizeAs(const Register& reg);
=======================================
--- /branches/bleeding_edge/src/arm64/stub-cache-arm64.cc Fri Mar 21 13:11:50 2014 UTC +++ /branches/bleeding_edge/src/arm64/stub-cache-arm64.cc Mon Mar 24 17:41:37 2014 UTC
@@ -395,7 +395,7 @@
     __ JumpIfSmi(value_reg, miss_label);
   } else if (representation.IsDouble()) {
     UseScratchRegisterScope temps(masm);
-    Register temp_double = temps.AcquireD();
+    DoubleRegister temp_double = temps.AcquireD();
     __ SmiUntagToDouble(temp_double, value_reg, kSpeculativeUntag);

     Label do_store, heap_number;
@@ -546,7 +546,7 @@
     __ JumpIfSmi(value_reg, miss_label);
   } else if (representation.IsDouble()) {
     UseScratchRegisterScope temps(masm);
-    Register temp_double = temps.AcquireD();
+    DoubleRegister temp_double = temps.AcquireD();

     __ SmiUntagToDouble(temp_double, value_reg, kSpeculativeUntag);

--
--
v8-dev mailing list
v8-dev@googlegroups.com
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 v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to