Revision: 6392
Author: [email protected]
Date: Wed Jan 19 03:46:16 2011
Log: Port r6388 to 2.4 branch.
Review URL: http://codereview.chromium.org/6260011
http://code.google.com/p/v8/source/detail?r=6392

Modified:
 /branches/2.4/include/v8.h
 /branches/2.4/src/api.cc
 /branches/2.4/src/version.cc
 /branches/2.4/test/cctest/test-api.cc

=======================================
--- /branches/2.4/include/v8.h  Fri Jan 14 04:37:04 2011
+++ /branches/2.4/include/v8.h  Wed Jan 19 03:46:16 2011
@@ -3310,7 +3310,7 @@

   // For 32-bit systems any 2 bytes aligned pointer can be encoded as smi
   // with a plain reinterpret_cast.
-  static const intptr_t kEncodablePointerMask = 0x1;
+  static const uintptr_t kEncodablePointerMask = 0x1;
   static const int kPointerToSmiShift = 0;
 };

@@ -3330,8 +3330,8 @@
// It might be not enough to cover stack allocated objects on some platforms.
   static const int kPointerAlignment = 3;

-  static const intptr_t kEncodablePointerMask =
-      ~(intptr_t(0xffffffff) << kPointerAlignment);
+  static const uintptr_t kEncodablePointerMask =
+      ~(uintptr_t(0xffffffff) << kPointerAlignment);

   static const int kPointerToSmiShift =
       kSmiTagSize + kSmiShiftSize - kPointerAlignment;
@@ -3340,7 +3340,7 @@
 typedef SmiTagging<sizeof(void*)> PlatformSmiTagging;
 const int kSmiShiftSize = PlatformSmiTagging::kSmiShiftSize;
 const int kSmiValueSize = PlatformSmiTagging::kSmiValueSize;
-const intptr_t kEncodablePointerMask =
+const uintptr_t kEncodablePointerMask =
     PlatformSmiTagging::kEncodablePointerMask;
 const int kPointerToSmiShift = PlatformSmiTagging::kPointerToSmiShift;

@@ -3400,7 +3400,7 @@
   }

   static inline void* GetExternalPointerFromSmi(internal::Object* value) {
-    const intptr_t address = reinterpret_cast<intptr_t>(value);
+    const uintptr_t address = reinterpret_cast<uintptr_t>(value);
     return reinterpret_cast<void*>(address >> kPointerToSmiShift);
   }

=======================================
--- /branches/2.4/src/api.cc    Fri Jan 14 04:37:04 2011
+++ /branches/2.4/src/api.cc    Wed Jan 19 03:46:16 2011
@@ -3205,14 +3205,14 @@


 static bool CanBeEncodedAsSmi(void* ptr) {
-  const intptr_t address = reinterpret_cast<intptr_t>(ptr);
+  const uintptr_t address = reinterpret_cast<uintptr_t>(ptr);
   return ((address & i::kEncodablePointerMask) == 0);
 }


 static i::Smi* EncodeAsSmi(void* ptr) {
   ASSERT(CanBeEncodedAsSmi(ptr));
-  const intptr_t address = reinterpret_cast<intptr_t>(ptr);
+  const uintptr_t address = reinterpret_cast<uintptr_t>(ptr);
i::Smi* result = reinterpret_cast<i::Smi*>(address << i::kPointerToSmiShift);
   ASSERT(i::Internals::HasSmiTag(result));
   ASSERT_EQ(result, i::Smi::FromInt(result->value()));
=======================================
--- /branches/2.4/src/version.cc        Mon Jan 17 23:48:18 2011
+++ /branches/2.4/src/version.cc        Wed Jan 19 03:46:16 2011
@@ -35,7 +35,7 @@
 #define MAJOR_VERSION     2
 #define MINOR_VERSION     4
 #define BUILD_NUMBER      9
-#define PATCH_LEVEL       21
+#define PATCH_LEVEL       22
 #define CANDIDATE_VERSION false

 // Define SONAME to have the SCons build the put a specific SONAME into the
=======================================
--- /branches/2.4/test/cctest/test-api.cc       Fri Jan 14 04:37:04 2011
+++ /branches/2.4/test/cctest/test-api.cc       Wed Jan 19 03:46:16 2011
@@ -873,6 +873,10 @@
   TestExternalPointerWrapping();

 #if defined(V8_HOST_ARCH_X64)
+  // Check a value with a leading 1 bit in x64 Smi encoding.
+  expected_ptr = reinterpret_cast<void*>(0x400000000);
+  TestExternalPointerWrapping();
+
   expected_ptr = reinterpret_cast<void*>(0xdeadbeefdeadbeef);
   TestExternalPointerWrapping();

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

Reply via email to