Revision: 6394
Author: [email protected]
Date: Wed Jan 19 03:50:17 2011
Log: Port r6388 to 2.5 branch.
Review URL: http://codereview.chromium.org/6311009
http://code.google.com/p/v8/source/detail?r=6394
Modified:
/branches/2.5/include/v8.h
/branches/2.5/src/api.cc
/branches/2.5/src/version.cc
/branches/2.5/test/cctest/test-api.cc
=======================================
--- /branches/2.5/include/v8.h Fri Jan 14 04:34:09 2011
+++ /branches/2.5/include/v8.h Wed Jan 19 03:50:17 2011
@@ -3314,7 +3314,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;
};
@@ -3334,8 +3334,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;
@@ -3344,7 +3344,7 @@
typedef SmiTagging<kApiPointerSize> 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;
@@ -3404,7 +3404,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.5/src/api.cc Fri Jan 14 04:34:09 2011
+++ /branches/2.5/src/api.cc Wed Jan 19 03:50:17 2011
@@ -3244,14 +3244,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.5/src/version.cc Mon Jan 17 23:30:58 2011
+++ /branches/2.5/src/version.cc Wed Jan 19 03:50:17 2011
@@ -35,7 +35,7 @@
#define MAJOR_VERSION 2
#define MINOR_VERSION 5
#define BUILD_NUMBER 9
-#define PATCH_LEVEL 10
+#define PATCH_LEVEL 11
#define CANDIDATE_VERSION false
// Define SONAME to have the SCons build the put a specific SONAME into the
=======================================
--- /branches/2.5/test/cctest/test-api.cc Fri Jan 14 04:34:09 2011
+++ /branches/2.5/test/cctest/test-api.cc Wed Jan 19 03:50:17 2011
@@ -874,6 +874,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